@page "/tra" @rendermode InteractiveServer @using System.Collections.Concurrent @using System.Collections.Specialized @using System.Collections @using Web.Tra.Services @inject CPXV2LogService CPXV2LogService @inject PopupService PopupService @foreach (var tab in Tabs.OrderBy(x=>x.Key.Id)) { @if (tab.Key.EnumTab == EnumTabs.OverviewC1) { } @if (tab.Key.EnumTab == EnumTabs.OverviewC1Detail) { } @if (tab.Key.EnumTab == EnumTabs.TestHistoryC1) { } } @code { private RequestSearch RequestSearch = new RequestSearch(); //selection private string SelectionStationName = string.Empty; private string SelectionProductNO = string.Empty; private string SelectionParentInfo = string.Empty; private string SelectionSearchBegin = string.Empty; private string SelectionSearchEnd = string.Empty; private string SelectionStepVersion = string.Empty; //options private bool IsMergePartNumberOption = false; private int PageSize = 30; private List OverviewDisableColums = new List(); private List HistoryDisableColums = new List { "testdate", "modelname", "firsttesttime", "finaltesttime", "testlistcntid" }; //tab RadzenTabs tabs; int SelectedTabIndex = 0; ConcurrentDictionary> Tabs = new ConcurrentDictionary>(); //search data List SearchDataOverviews = new List(); private async Task OnSearch() { //날짜 오류 if(RequestSearch.SearchStart > RequestSearch.SearchEnd) { LogXnet.WriteLine("DateTime Set Error", LogXLabel.Error); return; } PopupService.OpenIndicator("Search Data"); SearchDataOverviews = await CPXV2LogService.GetSearchDataOverview(RequestSearch); await GetOverviews(); PopupService.CloseIndicator(); } private async Task GetOverviews() { List overviews = new(); OverviewDisableColums.Clear(); OverviewDisableColums.Add("rn"); OverviewDisableColums.Add("stepversion"); if (IsMergePartNumberOption == false) { overviews = await CPXV2LogService.GetOverviews(SearchDataOverviews); } else { OverviewDisableColums.Add("stationname"); OverviewDisableColums.Add("host"); OverviewDisableColums.Add("section"); OverviewDisableColums.Add("testlistcntid"); overviews = await CPXV2LogService.GetOverviewMerged(SearchDataOverviews); } int tabId = 0; if(Tabs.Count > 0) { tabId = Tabs.Max(x=>x.Key.Id) + 1; } Tabs.AddOrUpdate( new OrderdTab {Id = tabId, TabName = $"{EnumTabs.OverviewC1} ({tabId})" , EnumTab = EnumTabs.OverviewC1 }, key => overviews.Cast().ToList(), (key, oldValue) => overviews.Cast().ToList()); SelectedTabIndex = Tabs.Count - 1; } private void OnSelectRowOverview(IDataModel overview) { SelectionStationName = $"{overview.StationName} ({overview.Host},{overview.Section})"; SelectionProductNO = $"{overview.ProductNo} ({overview.TestCode})"; SelectionParentInfo = $"{overview.ParentNo} ({overview.FileVersion},{overview.FileCode})"; SelectionSearchBegin = $"{overview.TestDate?.ToString("yyyy-MM-dd")} {overview.FirstTestTime}"; SelectionSearchEnd = $"{overview.TestDate?.ToString("yyyy-MM-dd")} {overview.FinalTestTime}"; SelectionStepVersion = $"{overview.StepVersion}"; } private async Task OnDoubleClickRowOverview(IDataModel row) { List detailOverviews = new(); if (IsMergePartNumberOption == false) { detailOverviews = await CPXV2LogService.GetDetailOverview(SearchDataOverviews, row); } else { detailOverviews = await CPXV2LogService.GetDetailOverviewMerged(SearchDataOverviews, row); } int tabId = Tabs.Max(x => x.Key.Id) + 1; Tabs.AddOrUpdate( new OrderdTab { Id = tabId, TabName = $"{EnumTabs.OverviewC1Detail} ({tabId})", EnumTab = EnumTabs.OverviewC1Detail }, key => detailOverviews.Cast().ToList(), (key, oldValue) => detailOverviews.Cast().ToList()); tabs.Reload(); SelectedTabIndex = Tabs.Count - 1; } private async Task OnDoubleClickRowDetailOverview(IDataModel row) { List histories = new(); if (IsMergePartNumberOption == false) { histories = await CPXV2LogService.GetTestHistory(SearchDataOverviews, row); } else { histories = await CPXV2LogService.GetTestHistoryMerged(SearchDataOverviews, row); } int tabId = Tabs.Max(x => x.Key.Id) + 1; Tabs.AddOrUpdate( new OrderdTab { Id = tabId, TabName = $"{EnumTabs.TestHistoryC1}({tabId})", EnumTab = EnumTabs.TestHistoryC1 }, key => histories.Cast().ToList(), (key, oldValue) => histories.Cast().ToList()); tabs.Reload(); SelectedTabIndex = Tabs.Count - 1; } private void OnClickDetailOverviewContextMenu() { // DetailOverviews = OverviewService.SearchDetailOverview(SelectedDataService.SelectedOverview); // if (ListTabs.ContainsKey(EnumTabs.OverviewC1Detail.ToString()) == false) // ListTabs.Add($"{EnumTabs.OverviewC1Detail.ToString()}", EnumTabs.OverviewC1Detail); // tabs.Reload(); // SelectedTabIndex = ListTabs.Keys.ToList().IndexOf(EnumTabs.OverviewC1Detail.ToString()); } private void OnClickHistoryContextMenu() { // TestHistories = OverviewService.SearchTestHistory(SelectedDataService.SelectedOverview); // int index = ListTabs.Count(x => x.Key.Contains(EnumTabs.TestHistoryC1.ToString())) + 1; // ListTabs.Add($"{EnumTabs.TestHistoryC1}({index})", EnumTabs.TestHistoryC1); // tabs.Reload(); // SelectedTabIndex = ListTabs.Keys.ToList().IndexOf($"{EnumTabs.TestHistoryC1}({index})"); } void OnClickClose(int tabId) { CloseTab(tabId); } void CloseTab(int tabId) { var removeTab = Tabs.Where(x => x.Key.Id == tabId)?.First().Key; //remove if (removeTab is not null) { Tabs.TryRemove(removeTab, out var value); } //select tab var currentTab = tabs.SelectedTab; if (Tabs.Where(x => x.Key.TabName == currentTab.Text)?.Count() > 0) { SelectedTabIndex = currentTab.Index; } else { SelectedTabIndex = Tabs.Count - 1; } tabs.Reload(); } async Task OnChangeMergePartNumberOption() { PopupService.OpenIndicator(""); // foreach(var tab in Tabs) // { // if (tab.Value == EnumTabs.OverviewC1) // continue; // CloseTab(tab.Key.ToString()); // } await GetOverviews(); await Task.Delay(300); PopupService.CloseIndicator(); } }