[성현모] Summary 추가, GridFilter 컨피그 분리

This commit is contained in:
SHM
2025-09-19 14:40:06 +09:00
parent ab9bfdfc18
commit 0ff010019d
17 changed files with 428 additions and 115 deletions

View File

@ -65,6 +65,22 @@
</RadzenStack>
</RadzenStack>
<!--Function Block-->
<RadzenStack Style="height:10rem; width:fit-content;" class="rz-border-right rz-pr-5" Orientation="Orientation.Horizontal" AlignItems="AlignItems.Start" JustifyContent="JustifyContent.Start">
<RadzenStack Style="font-size:1.5rem;" Orientation="Orientation.Vertical" AlignItems="AlignItems.Start" JustifyContent="JustifyContent.Center">
<RadzenStack Style="cursor: pointer;" class="" Orientation="Orientation.Vertical" AlignItems="AlignItems.Center" JustifyContent="JustifyContent.Start" @onclick="@OnSummary">
<RadzenIcon Style="font-size: 3.5rem; font-weight:400; color:var(--rz-info)" Icon="ssid_chart"></RadzenIcon>
<RadzenLabel Style="font-size: 1.5rem; cursor:pointer; color:var(--rz-info)" Text="Summary"></RadzenLabel>
</RadzenStack>
</RadzenStack>
<RadzenStack Style="font-size:1.5rem;" Orientation="Orientation.Vertical" AlignItems="AlignItems.Start" JustifyContent="JustifyContent.Center">
<RadzenStack Style="cursor: pointer;" class="" Orientation="Orientation.Vertical" AlignItems="AlignItems.Center" JustifyContent="JustifyContent.Start" @onclick="@OnExportExcel">
<RadzenIcon Style="font-size: 3.5rem; font-weight:400; color:var(--rz-success)" Icon="file_export"></RadzenIcon>
<RadzenLabel Style="font-size: 1.5rem; cursor:pointer; color:var(--rz-success)" Text="Export Excel"></RadzenLabel>
</RadzenStack>
</RadzenStack>
</RadzenStack>
<!--Option Block-->
<RadzenStack Style="height:10rem; width:fit-content;" class="rz-border-right rz-pr-5" Orientation="Orientation.Horizontal" AlignItems="AlignItems.Start" JustifyContent="JustifyContent.Start">
<RadzenStack Style="font-size:1.5rem;" Orientation="Orientation.Vertical" AlignItems="AlignItems.Start" JustifyContent="JustifyContent.Center">
@ -98,23 +114,23 @@
</RadzenStack>
<RadzenStack Style="height:calc(100vh - 29rem);">
@if (tab.Key.EnumTab == EnumTabs.OverviewC1)
@if (tab.Key.EnumTab == EnumTabs.OverviewC1 || tab.Key.EnumTab == EnumTabs.OverviewC1Merged)
{
<TraGrid TDataModel="Overview" DataList="@(tab.Value.Cast<Overview>())"
<TraGrid TDataModel="Overview" DataList="@(tab.Value.Cast<Overview>())" EnumTab="@tab.Key.EnumTab"
OnSelectRow="@OnSelectRowOverview" OnDoubleClickRow="@OnDoubleClickRowOverview" HostColumnMerge>
</TraGrid>
}
@if (tab.Key.EnumTab == EnumTabs.OverviewC1Detail)
@if (tab.Key.EnumTab == EnumTabs.OverviewC1Detail || tab.Key.EnumTab == EnumTabs.OverviewC1DetailMerged)
{
<TraGrid TDataModel="Overview" DataList="@(tab.Value.Cast<Overview>())"
<TraGrid TDataModel="Overview" DataList="@(tab.Value.Cast<Overview>())" EnumTab="@tab.Key.EnumTab"
OnSelectRow="@OnSelectRowOverview" OnDoubleClickRow="@OnDoubleClickRowDetailOverview" HostColumnMerge>
</TraGrid>
}
@if (tab.Key.EnumTab == EnumTabs.TestHistoryC1)
{
<TraGrid TDataModel="TestHistory" DataList="@(tab.Value.Cast<TestHistory>())"
<TraGrid TDataModel="TestHistory" DataList="@(tab.Value.Cast<TestHistory>())" EnumTab="@tab.Key.EnumTab"
OnSelectRow="@OnSelectRowOverview" OnDoubleClickRow="@OnDoubleClickRowHistory" VisibleRowNo HostColumnMerge="false">
</TraGrid>
}
@ -157,12 +173,45 @@
@if(tab.Value?.Count > 0)
{
<TraGrid TDataModel="ParseTestResult" DataList="@(tab.Value.Cast<ParseTestResult>())"
HostColumnMerge="false">
HostColumnMerge="false" EnumTab="@tab.Key.EnumTab">
</TraGrid>
}
</RadzenStack>
</RadzenStack>
}
@if (tab.Key.EnumTab == EnumTabs.TestSummaryC1)
{
<RadzenStack Style="height:inherit;" Orientation="Orientation.Horizontal">
<!--Test Info-->
<RadzenStack Style="width:35rem; font-size: 1.5rem; height: inherit;">
@{
var history = tab.Key.Parent as TestSummaryInformation;
<TitleCard HeaderText="Test Information" ContentsHeight="calc(100% - 5rem);" CardStyle="overflow:auto;">
<RadzenStack Style="padding:1rem; color: var(--rz-grid-hover-color); overflow-y:auto; align-items:flex-start;">
@foreach (var prop in history.GetType().GetProperties())
{
<RadzenStack Style="width:100%; background-color:transparent;" class="rz-border-bottom rz-p-1 rz-pb-2" Orientation="Orientation.Horizontal">
<span style="width:12rem; min-width:12rem; font-size: 1.3rem;">@prop.Name</span>
<BlockLabel Text="@prop.GetValue(history).ToString()" MaxWidth="20rem"></BlockLabel>
</RadzenStack>
}
</RadzenStack>
</TitleCard>
}
</RadzenStack>
<!--TestResult-->
<RadzenStack Style="height:inherit;">
@if (tab.Value?.Count > 0)
{
<TraGrid TDataModel="ParseTestSummary" DataList="@(tab.Value.Cast<ParseTestSummary>())"
HostColumnMerge="false" EnumTab="@tab.Key.EnumTab">
</TraGrid>
}
</RadzenStack>
</RadzenStack>
}
</RadzenStack>
</RadzenStack>
</ChildContent>
@ -215,25 +264,27 @@
{
List<Overview> overviews = new();
int tabId = 0;
if (Tabs.Count > 0)
{
tabId = Tabs.Max(x => x.Key.Id) + 1;
}
if (IsMergePartNumberOption == false)
{
overviews = await CPXV2LogService.GetOverviews(SearchDataOverviews);
Tabs.AddOrUpdate(
new OrderdTab { Id = tabId, TabName = $"{EnumTabs.OverviewC1} ({tabId})", EnumTab = EnumTabs.OverviewC1, Parent = null },
key => overviews.Cast<IDataModel>().ToList(), (key, oldValue) => overviews.Cast<IDataModel>().ToList());
}
else
{
overviews = await CPXV2LogService.GetOverviewMerged(SearchDataOverviews);
Tabs.AddOrUpdate(
new OrderdTab { Id = tabId, TabName = $"{EnumTabs.OverviewC1} ({tabId})", EnumTab = EnumTabs.OverviewC1Merged, Parent = null },
key => overviews.Cast<IDataModel>().ToList(), (key, oldValue) => overviews.Cast<IDataModel>().ToList());
}
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, Parent = null },
key => overviews.Cast<IDataModel>().ToList(), (key, oldValue) => overviews.Cast<IDataModel>().ToList());
SelectedTabIndex = Tabs.Count - 1;
}
@ -262,23 +313,28 @@
if (IsMergePartNumberOption == false)
{
detailOverviews = await CPXV2LogService.GetDetailOverview(SearchDataOverviews, selectRow);
int tabId = Tabs.Max(x => x.Key.Id) + 1;
Tabs.AddOrUpdate(
new OrderdTab { Id = tabId, TabName = $"{EnumTabs.OverviewC1Detail} ({tabId})", EnumTab = EnumTabs.OverviewC1Detail, Parent = row },
key => detailOverviews.Cast<IDataModel>().ToList(), (key, oldValue) => detailOverviews.Cast<IDataModel>().ToList());
}
else
{
detailOverviews = await CPXV2LogService.GetDetailOverviewMerged(SearchDataOverviews, selectRow);
int tabId = Tabs.Max(x => x.Key.Id) + 1;
Tabs.AddOrUpdate(
new OrderdTab { Id = tabId, TabName = $"{EnumTabs.OverviewC1Detail} ({tabId})", EnumTab = EnumTabs.OverviewC1DetailMerged, Parent = row },
key => detailOverviews.Cast<IDataModel>().ToList(), (key, oldValue) => detailOverviews.Cast<IDataModel>().ToList());
}
int tabId = Tabs.Max(x => x.Key.Id) + 1;
Tabs.AddOrUpdate(
new OrderdTab { Id = tabId, TabName = $"{EnumTabs.OverviewC1Detail} ({tabId})", EnumTab = EnumTabs.OverviewC1Detail, Parent = row },
key => detailOverviews.Cast<IDataModel>().ToList(), (key, oldValue) => detailOverviews.Cast<IDataModel>().ToList());
tabs.Reload();
SelectedTabIndex = Tabs.Count - 1;
}
}
private async Task OnDoubleClickRowDetailOverview(IOverviewModel row)
private async Task OnDoubleClickRowDetailOverview(IDataModel row)
{
List<TestHistory> histories = new();
if (IsMergePartNumberOption == false)
@ -319,12 +375,12 @@
SelectedTabIndex = Tabs.Count - 1;
}
void OnClickClose(int tabId)
private void OnClickClose(int tabId)
{
CloseTab(tabId);
}
void CloseTab(int tabId)
private void CloseTab(int tabId)
{
var removeTab = Tabs.Where(x => x.Key.Id == tabId)?.First().Key;
@ -347,7 +403,7 @@
tabs.Reload();
}
async Task OnChangeMergePartNumberOption()
private async Task OnChangeMergePartNumberOption()
{
PopupService.OpenIndicator("");
await GetOverviews();
@ -356,8 +412,52 @@
PopupService.CloseIndicator();
}
async Task OnClickDisplayTestList(TestHistory history)
private async Task OnClickDisplayTestList(TestHistory history)
{
await JS.InvokeVoidAsync("open", $"/testlist/{history.ProductNo}/{history.TestCode}/{SelectionStepVersion}", "_blank");
}
private async Task OnSummary()
{
var selectedTab = Tabs.Select(x => x.Key)?.FirstOrDefault(x=>x.Id == SelectedTabIndex);
if(selectedTab is not null)
{
//history에서만 summary 사용
if(selectedTab.EnumTab == EnumTabs.TestHistoryC1)
{
if(Tabs.TryGetValue(selectedTab, out var data) == true)
{
if(Int32.TryParse(SelectionStepVersion, out int stepVersion) == true)
{
var testHistories = data.Cast<TestHistory>().ToList();
var summary = await CPXV2LogService.GetTestSummary(testHistories, stepVersion);
var summaryInformation = testHistories.GetTestSummaryInformation();
if(summary is not null && summaryInformation is not null)
{
summaryInformation.SearchRangeStart = (DateTime)new DateTime(RequestSearch.SearchStart, TimeOnly.MinValue);
summaryInformation.SearchRangeEnd = (DateTime)new DateTime(RequestSearch.SearchEnd, TimeOnly.MaxValue);
int tabId = Tabs.Max(x => x.Key.Id) + 1;
Tabs.AddOrUpdate(
new OrderdTab { Id = tabId, TabName = $"{EnumTabs.TestSummaryC1}({tabId})", EnumTab = EnumTabs.TestSummaryC1, Parent = summaryInformation },
key => summary?.ParseTestSummary?.Cast<IDataModel>()?.ToList(), (key, oldValue) => summary?.ParseTestSummary?.Cast<IDataModel>()?.ToList());
tabs.Reload();
SelectedTabIndex = Tabs.Count - 1;
}
}
}
}
else
{
LogXnet.WriteLine("Not history",LogXLabel.Warning);
}
}
}
private async Task OnExportExcel()
{
}
}