diff --git a/DBPatch/sqlScripts/dacpac/SystemX.DB.AccountDB.dacpac b/DBPatch/sqlScripts/dacpac/SystemX.DB.AccountDB.dacpac
index da184b7..891c031 100644
Binary files a/DBPatch/sqlScripts/dacpac/SystemX.DB.AccountDB.dacpac and b/DBPatch/sqlScripts/dacpac/SystemX.DB.AccountDB.dacpac differ
diff --git a/DBPatch/sqlScripts/dacpac/SystemX.DB.CPXV2.dacpac b/DBPatch/sqlScripts/dacpac/SystemX.DB.CPXV2.dacpac
index 3d50610..8388292 100644
Binary files a/DBPatch/sqlScripts/dacpac/SystemX.DB.CPXV2.dacpac and b/DBPatch/sqlScripts/dacpac/SystemX.DB.CPXV2.dacpac differ
diff --git a/DBPatch/sqlScripts/dacpac/SystemX.DB.CPXV2Log.dacpac b/DBPatch/sqlScripts/dacpac/SystemX.DB.CPXV2Log.dacpac
index 43c8247..0cd8447 100644
Binary files a/DBPatch/sqlScripts/dacpac/SystemX.DB.CPXV2Log.dacpac and b/DBPatch/sqlScripts/dacpac/SystemX.DB.CPXV2Log.dacpac differ
diff --git a/DBPatch/sqlScripts/dacpac/SystemX.DB.UniqueKeyDB.dacpac b/DBPatch/sqlScripts/dacpac/SystemX.DB.UniqueKeyDB.dacpac
index 5688695..bf6c284 100644
Binary files a/DBPatch/sqlScripts/dacpac/SystemX.DB.UniqueKeyDB.dacpac and b/DBPatch/sqlScripts/dacpac/SystemX.DB.UniqueKeyDB.dacpac differ
diff --git a/DBPatch/sqlScripts/dacpac/SystemX.DB.VPKI_DataDB.dacpac b/DBPatch/sqlScripts/dacpac/SystemX.DB.VPKI_DataDB.dacpac
index 606e544..93e1afa 100644
Binary files a/DBPatch/sqlScripts/dacpac/SystemX.DB.VPKI_DataDB.dacpac and b/DBPatch/sqlScripts/dacpac/SystemX.DB.VPKI_DataDB.dacpac differ
diff --git a/Projects/DLL/SystemX.Core.dll b/Projects/DLL/SystemX.Core.dll
index 582c331..f2cf488 100644
Binary files a/Projects/DLL/SystemX.Core.dll and b/Projects/DLL/SystemX.Core.dll differ
diff --git a/Projects/SystemX.Core/SystemX.Core/Utils/Gzip.cs b/Projects/SystemX.Core/SystemX.Core/Utils/Gzip.cs
new file mode 100644
index 0000000..712c220
--- /dev/null
+++ b/Projects/SystemX.Core/SystemX.Core/Utils/Gzip.cs
@@ -0,0 +1,53 @@
+using System;
+using System.Collections.Generic;
+using System.IO.Compression;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SystemX.Core.Utils
+{
+ public static class Gzip
+ {
+ public static string Compress(string stringData)
+ {
+ byte[] bytes = Encoding.UTF8.GetBytes(stringData);
+ byte[] inArray = null;
+ using (MemoryStream memoryStream = new MemoryStream())
+ {
+ using (GZipStream gZipStream = new GZipStream(memoryStream, CompressionMode.Compress))
+ {
+ gZipStream.Write(bytes, 0, bytes.Length);
+ }
+
+ inArray = memoryStream.ToArray();
+ }
+
+ return Convert.ToBase64String(inArray);
+ }
+
+ public static string Decompression(string compressedDataStr)
+ {
+ string result = null;
+ byte[] buffer = Convert.FromBase64String(compressedDataStr);
+ using (MemoryStream stream = new MemoryStream(buffer))
+ {
+ using GZipStream stream2 = new GZipStream(stream, CompressionMode.Decompress);
+ using StreamReader streamReader = new StreamReader(stream2);
+ result = streamReader.ReadToEnd();
+ }
+
+ return result;
+ }
+
+ public static string GzipCompress(this string stringData)
+ {
+ return Compress(stringData);
+ }
+
+ public static string GzipDecompress(this string compressedDataStr)
+ {
+ return Decompression(compressedDataStr);
+ }
+ }
+}
diff --git a/Projects/WebClient/Web.Tra/Components/Module/TraGrid.razor b/Projects/WebClient/Web.Tra/Components/Module/TraGrid.razor
index 3449f0d..47a5e61 100644
--- a/Projects/WebClient/Web.Tra/Components/Module/TraGrid.razor
+++ b/Projects/WebClient/Web.Tra/Components/Module/TraGrid.razor
@@ -2,18 +2,7 @@
@inject ContextMenuService ContextMenuService
-
-
-
-
-
-
-
-
-
-
-
-
@@ -117,6 +106,9 @@
[Parameter]
public bool HostColumnMerge { get; set; }
+ [Parameter]
+ public bool AllowPaging { get; set; } = true;
+
[Parameter]
public int PageSize { get; set; } = 30;
@@ -127,26 +119,7 @@
private string SummaryTestResult = string.Empty;
private string SummaryTestTime = string.Empty;
-
- protected override async Task OnParametersSetAsync()
- {
- if(typeof(TDataModel) == typeof(TestHistory))
- {
- var dataList = DataList.Cast();
-
- int ok = dataList.Count(x => x.TestResult.ToLower().Contains("ok"));
- int ng = dataList.Count(x => !x.TestResult.ToLower().Contains("ok"));
- double ratio = (double)(ok) / (double)(ok + ng) * 100.0;
-
- double testTimeAvg = dataList.Average(x => Convert.ToInt32(x.Duration)) / 1000.0;
- double testTimeMin = dataList.Min(x => Convert.ToInt32(x.Duration)) / 1000.0;
- double testTimeMax = dataList.Max(x => Convert.ToInt32(x.Duration)) / 1000.0;
-
- SummaryTestResult = $"Test Result: {ok + ng} (OK:{ok}/NG:{ng}) - Ratio:{ratio.ToString("F2")}%";
- SummaryTestTime = $"Test Time: Average={testTimeAvg.ToString("F2")}sec Min={testTimeMin.ToString("F2")}sec Max={testTimeMax.ToString("F2")}sec";
- }
- }
-
+
private void CellRender(DataGridCellRenderEventArgs args)
{
if (args.Column.Property == null)
@@ -204,30 +177,7 @@
args.Attributes.Add("rowspan", rowCount);
}
}
-
- // private async Task OnCellContextMenu(DataGridCellMouseEventArgs args)
- // {
- // SelectedRow = new List() { args.Data };
-
- // ContextMenuService.Open(args,
- // new List {
- // new ContextMenuItem(){ Text = "Overview", Value = 1, Icon = "home" },
- // new ContextMenuItem(){ Text = "Detail Overview", Value =2 , Icon = "assessment" },
- // new ContextMenuItem(){ Text = "Test History", Value = 3, Icon = "description" },
- // new ContextMenuItem(){ Text = "Test Summary", Value = 4, Icon = "assignment_turned_in" },
- // new ContextMenuItem(){ Text = "Detail Data", Value = 5, Icon = "list" },
- // new ContextMenuItem(){ Text = "Test-Error/Extended Search", Value = 6, Icon = "search" },
- // },
- // (e) =>
- // {
- // ContextMenuService.Close();
- // OnClickContextMenu.InvokeAsync();
- // }
- // );
-
- // await OnSelectRow.InvokeAsync(args.Data);
- // }
-
+
private async Task SelectRow(TDataModel data)
{
await OnSelectRow.InvokeAsync(data);
diff --git a/Projects/WebClient/Web.Tra/Components/Pages/TRA.razor b/Projects/WebClient/Web.Tra/Components/Pages/TRA.razor
index 8b5f8cf..e898eca 100644
--- a/Projects/WebClient/Web.Tra/Components/Pages/TRA.razor
+++ b/Projects/WebClient/Web.Tra/Components/Pages/TRA.razor
@@ -79,7 +79,7 @@
-
+
@foreach (var tab in Tabs.OrderBy(x=>x.Key.Id))
{
@@ -88,30 +88,95 @@
@context.Text
+
- @if (tab.Key.EnumTab == EnumTabs.OverviewC1)
- {
-
-
- }
+
+
+
+
+
+
+
+
+
+
+
+
+
- @if (tab.Key.EnumTab == EnumTabs.OverviewC1Detail)
- {
-
-
- }
+
+ @if (tab.Key.EnumTab == EnumTabs.OverviewC1)
+ {
+
+
+ }
- @if (tab.Key.EnumTab == EnumTabs.TestHistoryC1)
- {
-
-
- }
+ @if (tab.Key.EnumTab == EnumTabs.OverviewC1Detail)
+ {
+
+
+ }
+
+ @if (tab.Key.EnumTab == EnumTabs.TestHistoryC1)
+ {
+
+
+ }
+
+ @if (tab.Key.EnumTab == EnumTabs.TestResultC1)
+ {
+
+
+
+ @{
+ var history = tab.Key.Parent as TestHistory;
+ if(history.TestResult.ToLower().Contains("ok") == true)
+ {
+
+ }
+ else
+ {
+
+ }
+
+
+
+
+
+
+
+
+
+
+ @foreach (var prop in history.GetType().GetProperties())
+ {
+
+ @prop.Name
+ @prop.GetValue(history)
+
+ }
+
+
+
+ }
+
+
+
+
+
+
+
+
+ }
+
+
}
@@ -188,7 +253,7 @@
}
Tabs.AddOrUpdate(
- new OrderdTab {Id = tabId, TabName = $"{EnumTabs.OverviewC1} ({tabId})" , EnumTab = EnumTabs.OverviewC1 },
+ new OrderdTab {Id = tabId, TabName = $"{EnumTabs.OverviewC1} ({tabId})" , EnumTab = EnumTabs.OverviewC1, Parent = null },
key => overviews.Cast().ToList(), (key, oldValue) => overviews.Cast().ToList());
SelectedTabIndex = Tabs.Count - 1;
@@ -196,38 +261,46 @@
private void OnSelectRowOverview(IDataModel overview)
{
- SelectionStationName = $"{overview.StationName} ({overview.Host},{overview.Section})";
- SelectionProductNO = $"{overview.ProductNo} ({overview.TestCode})";
- SelectionParentInfo = $"{overview.ParentNo} ({overview.FileVersion},{overview.FileCode})";
+ var selectOverview = overview as Overview;
+ if(selectOverview is not null)
+ {
+ SelectionStationName = $"{selectOverview.StationName} ({selectOverview.Host},{selectOverview.Section})";
+ SelectionProductNO = $"{selectOverview.ProductNo} ({selectOverview.TestCode})";
+ SelectionParentInfo = $"{selectOverview.ParentNo} ({selectOverview.FileVersion},{selectOverview.FileCode})";
- SelectionSearchBegin = $"{overview.TestDate?.ToString("yyyy-MM-dd")} {overview.FirstTestTime}";
- SelectionSearchEnd = $"{overview.TestDate?.ToString("yyyy-MM-dd")} {overview.FinalTestTime}";
- SelectionStepVersion = $"{overview.StepVersion}";
+ SelectionSearchBegin = $"{selectOverview.TestDate?.ToString("yyyy-MM-dd")} {selectOverview.FirstTestTime}";
+ SelectionSearchEnd = $"{selectOverview.TestDate?.ToString("yyyy-MM-dd")} {selectOverview.FinalTestTime}";
+ SelectionStepVersion = $"{selectOverview.StepVersion}";
+ }
}
private async Task OnDoubleClickRowOverview(IDataModel row)
{
- List detailOverviews = new();
-
- if (IsMergePartNumberOption == false)
+ var selectRow = row as Overview;
+ if(selectRow is not null)
{
- detailOverviews = await CPXV2LogService.GetDetailOverview(SearchDataOverviews, row);
- }
- else
- {
- detailOverviews = await CPXV2LogService.GetDetailOverviewMerged(SearchDataOverviews, row);
- }
+ List detailOverviews = new();
- 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());
+ if (IsMergePartNumberOption == false)
+ {
+ detailOverviews = await CPXV2LogService.GetDetailOverview(SearchDataOverviews, selectRow);
+ }
+ else
+ {
+ detailOverviews = await CPXV2LogService.GetDetailOverviewMerged(SearchDataOverviews, selectRow);
+ }
- tabs.Reload();
- SelectedTabIndex = Tabs.Count - 1;
+ 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().ToList(), (key, oldValue) => detailOverviews.Cast().ToList());
+
+ tabs.Reload();
+ SelectedTabIndex = Tabs.Count - 1;
+ }
}
- private async Task OnDoubleClickRowDetailOverview(IDataModel row)
+ private async Task OnDoubleClickRowDetailOverview(IOverviewModel row)
{
List histories = new();
if (IsMergePartNumberOption == false)
@@ -241,13 +314,26 @@
int tabId = Tabs.Max(x => x.Key.Id) + 1;
Tabs.AddOrUpdate(
- new OrderdTab { Id = tabId, TabName = $"{EnumTabs.TestHistoryC1}({tabId})", EnumTab = EnumTabs.TestHistoryC1 },
+ new OrderdTab { Id = tabId, TabName = $"{EnumTabs.TestHistoryC1}({tabId})", EnumTab = EnumTabs.TestHistoryC1, Parent = row },
key => histories.Cast().ToList(), (key, oldValue) => histories.Cast().ToList());
tabs.Reload();
SelectedTabIndex = Tabs.Count - 1;
}
+ private async Task OnDoubleClickRowHistory(IDataModel row)
+ {
+ var s = await CPXV2LogService.GetTestResult(row);
+
+ int tabId = Tabs.Max(x => x.Key.Id) + 1;
+ Tabs.AddOrUpdate(
+ new OrderdTab { Id = tabId, TabName = $"{EnumTabs.TestResultC1}({tabId})", EnumTab = EnumTabs.TestResultC1, Parent = row },
+ key => s.DecompressTestResult.Cast().ToList(), (key, oldValue) => s.DecompressTestResult.Cast().ToList());
+
+ tabs.Reload();
+ SelectedTabIndex = Tabs.Count - 1;
+ }
+
private void OnClickDetailOverviewContextMenu()
{
// DetailOverviews = OverviewService.SearchDetailOverview(SelectedDataService.SelectedOverview);
diff --git a/Projects/WebClient/Web.Tra/Extended/ObjectExtended.cs b/Projects/WebClient/Web.Tra/Extended/ObjectExtended.cs
index 5c65df0..902445b 100644
--- a/Projects/WebClient/Web.Tra/Extended/ObjectExtended.cs
+++ b/Projects/WebClient/Web.Tra/Extended/ObjectExtended.cs
@@ -1,4 +1,7 @@
-using Web.Tra.Model;
+using Newtonsoft.Json;
+using SystemX.Core.DB;
+using Web.Tra.Model;
+using SystemX.Core.Utils;
public static class ObjectExtend
{
@@ -83,4 +86,22 @@ public static class ObjectExtend
TestListReqID = data.Summary.TestListCntID
};
}
+
+ public static List ToTestResult(this HIST_TestResult histTestResult)
+ {
+ var decompStr = histTestResult?.LogData.GzipDecompress();
+ var logData = JsonConvert.DeserializeObject>(decompStr);
+
+ foreach (var log in logData)
+ {
+ if (string.IsNullOrEmpty(log.Message) == false)
+ log.MesauredValue = log.Message;
+ else if (string.IsNullOrEmpty(log.MeasValStr) == false)
+ log.MesauredValue = log.MeasValStr;
+ else
+ log.MesauredValue = log.MeasVal.ToString();
+ }
+
+ return logData;
+ }
}
\ No newline at end of file
diff --git a/Projects/WebClient/Web.Tra/Model/Enum/EnumTabs.cs b/Projects/WebClient/Web.Tra/Model/Enum/EnumTabs.cs
index 36f02d2..4c54436 100644
--- a/Projects/WebClient/Web.Tra/Model/Enum/EnumTabs.cs
+++ b/Projects/WebClient/Web.Tra/Model/Enum/EnumTabs.cs
@@ -6,6 +6,7 @@
OverviewC1 = 10,
OverviewC1Detail = 20,
TestHistoryC1 = 30,
+ TestResultC1 = 40,
End = 10000
}
}
diff --git a/Projects/WebClient/Web.Tra/Model/IDataModel.cs b/Projects/WebClient/Web.Tra/Model/IDataModel.cs
index a9bd399..3c7b75b 100644
--- a/Projects/WebClient/Web.Tra/Model/IDataModel.cs
+++ b/Projects/WebClient/Web.Tra/Model/IDataModel.cs
@@ -2,19 +2,8 @@
{
public interface IDataModel
{
- public DateTime? TestDate { get; set; }
- public string StationName { get; set; }
- public string Host { get; set; }
- public string Section { get; set; }
- public string ModelName { get; set; }
- public string ProductNo { get; set; }
- public string TestCode { get; set; }
- public string ParentNo { get; set; }
- public string FileCode { get; set; }
- public string FileVersion { get; set; }
- public int? StepVersion { get; set; }
- public string FirstTestTime { get; set; }
- public string FinalTestTime { get; set; }
- public string TestListCntID { get; set; }
+ public DateTime? TestDate { get; set; }
+ public string Host { get; set; }
+ public string ModelName { get; set; }
}
}
diff --git a/Projects/WebClient/Web.Tra/Model/IOverviewModel.cs b/Projects/WebClient/Web.Tra/Model/IOverviewModel.cs
new file mode 100644
index 0000000..8dda12e
--- /dev/null
+++ b/Projects/WebClient/Web.Tra/Model/IOverviewModel.cs
@@ -0,0 +1,20 @@
+namespace Web.Tra.Model
+{
+ public interface IOverviewModel : IDataModel
+ {
+ public DateTime? TestDate { get; set; }
+ public string StationName { get; set; }
+ public string Host { get; set; }
+ public string Section { get; set; }
+ public string ModelName { get; set; }
+ public string ProductNo { get; set; }
+ public string TestCode { get; set; }
+ public string ParentNo { get; set; }
+ public string FileCode { get; set; }
+ public string FileVersion { get; set; }
+ public int? StepVersion { get; set; }
+ public string FirstTestTime { get; set; }
+ public string FinalTestTime { get; set; }
+ public string TestListCntID { get; set; }
+ }
+}
diff --git a/Projects/WebClient/Web.Tra/Model/ITestResultModel.cs b/Projects/WebClient/Web.Tra/Model/ITestResultModel.cs
new file mode 100644
index 0000000..caf5d37
--- /dev/null
+++ b/Projects/WebClient/Web.Tra/Model/ITestResultModel.cs
@@ -0,0 +1,7 @@
+namespace Web.Tra.Model
+{
+ public interface ITestResultModel : IDataModel
+ {
+ public long No { get; set; }
+ }
+}
diff --git a/Projects/WebClient/Web.Tra/Model/OrderdTab.cs b/Projects/WebClient/Web.Tra/Model/OrderdTab.cs
index f7b7f2c..361c66f 100644
--- a/Projects/WebClient/Web.Tra/Model/OrderdTab.cs
+++ b/Projects/WebClient/Web.Tra/Model/OrderdTab.cs
@@ -7,5 +7,7 @@ namespace Web.Tra.Model
public int Id { get; set; }
public string TabName { get; set; }
public EnumTabs EnumTab { get; set; }
+
+ public IDataModel Parent { get; set; }
}
}
diff --git a/Projects/WebClient/Web.Tra/Model/Overview.cs b/Projects/WebClient/Web.Tra/Model/Overview.cs
index ff2ffeb..caf7473 100644
--- a/Projects/WebClient/Web.Tra/Model/Overview.cs
+++ b/Projects/WebClient/Web.Tra/Model/Overview.cs
@@ -1,6 +1,6 @@
namespace Web.Tra.Model
{
- public class Overview : IDataModel
+ public class Overview : IOverviewModel
{
public DateTime? TestDate { get; set; }
public string StationName { get; set; }
diff --git a/Projects/WebClient/Web.Tra/Model/TestHistory.cs b/Projects/WebClient/Web.Tra/Model/TestHistory.cs
index f35e1c3..647ca63 100644
--- a/Projects/WebClient/Web.Tra/Model/TestHistory.cs
+++ b/Projects/WebClient/Web.Tra/Model/TestHistory.cs
@@ -1,6 +1,6 @@
namespace Web.Tra.Model
{
- public class TestHistory : IDataModel
+ public class TestHistory : IOverviewModel
{
public long No { get; set; }
public DateTime? TestDate { get; set; }
diff --git a/Projects/WebClient/Web.Tra/Model/TestResult.cs b/Projects/WebClient/Web.Tra/Model/TestResult.cs
new file mode 100644
index 0000000..b491b71
--- /dev/null
+++ b/Projects/WebClient/Web.Tra/Model/TestResult.cs
@@ -0,0 +1,45 @@
+
+namespace Web.Tra.Model
+{
+ public class TestResult : ITestResultModel
+ {
+ public long No { get; set; }
+
+ public DateTime? TestDate { get; set; }
+ public string StationName { get; set; }
+ public string Host { get; set; }
+ public string Section { get; set; }
+ public string ModelName { get; set; }
+ public string ProductNo { get; set; }
+ public string TestCode { get; set; }
+ public string ParentNo { get; set; }
+ public string FileCode { get; set; }
+ public string FileVersion { get; set; }
+ public int? StepVersion { get; set; }
+ public string FirstTestTime { get; set; }
+ public string FinalTestTime { get; set; }
+ public string TestListCntID { get; set; }
+
+
+ public List DecompressTestResult { get; set; }
+ }
+
+ public class DecompressTestResult : ITestResultModel
+ {
+ public long No { get; set; }
+ public DateTime? TestDate { get; set; }
+ public string StationName { get; set; }
+ public string Host { get; set; }
+ public string ModelName { get; set; }
+
+ public int StepID { get; set; }
+ public double MeasVal { get; set; }
+ public string MeasValStr { get; set; }
+ public string Message { get; set; }
+ public string GlobalMin { get; set; }
+ public string MesauredValue { get; set; }
+ public string GlobalMax { get; set; }
+ public string Result { get; set; }
+ public string SpentTime { get; set; }
+ }
+}
diff --git a/Projects/WebClient/Web.Tra/Services/CPXV2LogService.cs b/Projects/WebClient/Web.Tra/Services/CPXV2LogService.cs
index c3b207c..47ddbeb 100644
--- a/Projects/WebClient/Web.Tra/Services/CPXV2LogService.cs
+++ b/Projects/WebClient/Web.Tra/Services/CPXV2LogService.cs
@@ -114,7 +114,7 @@ namespace Web.Tra.Services
return group.ToList();
}
- public async Task> GetDetailOverview(List request, IDataModel row)
+ public async Task> GetDetailOverview(List request, IOverviewModel row)
{
var detailOverview = request
.Where(x => x.Summary.HostID == row.Host &&
@@ -134,7 +134,7 @@ namespace Web.Tra.Services
return detailOverview.ToList();
}
- public async Task> GetDetailOverviewMerged(List request, IDataModel row)
+ public async Task> GetDetailOverviewMerged(List request, IOverviewModel row)
{
var detailOverview = request
.Where(x => x.Summary.Testcode == row.TestCode &&
@@ -151,7 +151,7 @@ namespace Web.Tra.Services
return detailOverview.ToList();
}
- public async Task> GetTestHistory(List request, IDataModel row)
+ public async Task> GetTestHistory(List request, IOverviewModel row)
{
var testHistory = request
.Where(x => x.Summary.TestDT.Date == row.TestDate.Value.Date &&
@@ -166,7 +166,7 @@ namespace Web.Tra.Services
return testHistory.ToList();
}
- public async Task> GetTestHistoryMerged(List request, IDataModel row)
+ public async Task> GetTestHistoryMerged(List request, IOverviewModel row)
{
var testHistory = request
.Where(x => x.Summary.TestDT.Date == row.TestDate.Value.Date &&
@@ -179,6 +179,37 @@ namespace Web.Tra.Services
return testHistory.ToList();
}
+ public async Task GetTestResult(IDataModel row)
+ {
+ TestResult result = new TestResult();
+
+ var selectRow = row as TestHistory;
+ if(selectRow is not null)
+ {
+ int year = selectRow.TestDate.Value.Year;
+
+ using (var scope = _scopeFactory.CreateScope())
+ {
+ var provider = scope.ServiceProvider.GetRequiredService();
+ using (var context = GetDBContext(provider, year))
+ {
+ if (context is not null)
+ {
+ var testResult = context.HIST_TestResults.Where(x => x.No == selectRow.No)?.First();
+ var decompressTestResult = testResult.ToTestResult();
+
+ result.DecompressTestResult = decompressTestResult;
+ }
+ }
+ }
+
+ result.No = selectRow.No;
+ }
+
+ await Task.CompletedTask;
+ return result;
+ }
+
//Get DBContext
private T? GetDBContext(DbContextProvider provider, int dbID) where T : DbContext
{
diff --git a/Projects/WebClient/Web.Tra/wwwroot/app.css b/Projects/WebClient/Web.Tra/wwwroot/app.css
index f682f54..e918493 100644
--- a/Projects/WebClient/Web.Tra/wwwroot/app.css
+++ b/Projects/WebClient/Web.Tra/wwwroot/app.css
@@ -101,6 +101,7 @@ h1:focus {
font-size: 1.5rem !important;
}
+/*common*/
span{
font-size: 1.5rem;
}
\ No newline at end of file