From 978e4faadc873475a7f1b1c5b606bc882bf3c50c Mon Sep 17 00:00:00 2001 From: SHM Date: Tue, 2 Sep 2025 11:50:01 +0900 Subject: [PATCH] =?UTF-8?q?[=EC=84=B1=ED=98=84=EB=AA=A8]=20DB=20=EC=98=88?= =?UTF-8?q?=EC=99=B8=EC=B2=98=EB=A6=AC=20=EC=B6=94=EA=B0=80,=20UI=20?= =?UTF-8?q?=EC=82=AC=EC=9D=B4=EC=A6=88=20=EC=A1=B0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Projects/DLL/SystemX.Core.DB.dll | Bin 71680 -> 71680 bytes Projects/DLL/SystemX.Core.dll | Bin 53760 -> 53760 bytes .../Services/DBContextProvider.cs | 12 ++-- .../Web.Tra/Components/Dialog/Loading.razor | 22 +++++++ .../Components/Dialog/Loading.razor.css | 58 ++++++++++++++++++ .../Components/Layout/MainLayout.razor | 4 +- .../Web.Tra/Components/Module/TraGrid.razor | 21 ++++--- .../Components/Module/TraGrid.razor.css | 3 + .../Web.Tra/Components/Pages/TRA.razor | 48 ++++++++------- Projects/WebClient/Web.Tra/Program.cs | 7 ++- .../Web.Tra/Services/CPXV2LogService.cs | 8 +-- .../Web.Tra/Services/PopupService.cs | 43 +++++++++++++ Projects/WebClient/Web.Tra/wwwroot/app.css | 54 ++++++++++++++++ 13 files changed, 235 insertions(+), 45 deletions(-) create mode 100644 Projects/WebClient/Web.Tra/Components/Dialog/Loading.razor create mode 100644 Projects/WebClient/Web.Tra/Components/Dialog/Loading.razor.css create mode 100644 Projects/WebClient/Web.Tra/Components/Module/TraGrid.razor.css create mode 100644 Projects/WebClient/Web.Tra/Services/PopupService.cs diff --git a/Projects/DLL/SystemX.Core.DB.dll b/Projects/DLL/SystemX.Core.DB.dll index 942993d0db023e356f719637e93fab69a61e359d..45ce1d13e91a207bd4176e6f9384fc6e58ac64b0 100644 GIT binary patch delta 242 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 I(8>CL0C>F(&Hw-a delta 15601 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 diff --git a/Projects/SystemX.Core/SystemX.Core/Services/DBContextProvider.cs b/Projects/SystemX.Core/SystemX.Core/Services/DBContextProvider.cs index c15cada..2c9cff9 100644 --- a/Projects/SystemX.Core/SystemX.Core/Services/DBContextProvider.cs +++ b/Projects/SystemX.Core/SystemX.Core/Services/DBContextProvider.cs @@ -12,7 +12,7 @@ namespace SystemX.Core.Services { public class DbContextProvider { - public Dictionary DBDictionary { get; private set; } = new Dictionary(); + public Dictionary DBDictionary { get; private set; } = new Dictionary(); public void SetDBList(IList? DBList) { @@ -20,18 +20,18 @@ namespace SystemX.Core.Services { foreach (var db in DBList) { - if (DBDictionary.ContainsKey($"{db.DBName}") == false) - DBDictionary.Add($"{db.DBName}", db); + if (DBDictionary.ContainsKey(db.DBID) == false) + DBDictionary.Add(db.DBID, db); else - LogXnet.WriteLine($"Exist key DB Dictionary {db.DBName}", LogXLabel.Error); + LogXnet.WriteLine($"Exist key DB Dictionary {db.DBID}", LogXLabel.Error); } } } // 또는 context 직접 반환 (주의: caller가 Dispose 해야 함) - public TContext? GetDBContext(string dbName) where TContext : DbContext + public TContext? GetDBContext(int dbID) where TContext : DbContext { - if(DBDictionary.TryGetValue(dbName, out var db) == true) + if(DBDictionary.TryGetValue(dbID, out var db) == true) { var optionsBuilder = new DbContextOptionsBuilder(); optionsBuilder.UseSqlServer(db.ConvertToConnectionString()); diff --git a/Projects/WebClient/Web.Tra/Components/Dialog/Loading.razor b/Projects/WebClient/Web.Tra/Components/Dialog/Loading.razor new file mode 100644 index 0000000..5669ad8 --- /dev/null +++ b/Projects/WebClient/Web.Tra/Components/Dialog/Loading.razor @@ -0,0 +1,22 @@ +@page "/loading/{Message?}" + +
+
+
+
+
+
+
+
+ @Message +
+
+@code { + [Parameter] + public string? Message { get; set; } + + protected override void OnParametersSet() + { + + } +} diff --git a/Projects/WebClient/Web.Tra/Components/Dialog/Loading.razor.css b/Projects/WebClient/Web.Tra/Components/Dialog/Loading.razor.css new file mode 100644 index 0000000..8b45671 --- /dev/null +++ b/Projects/WebClient/Web.Tra/Components/Dialog/Loading.razor.css @@ -0,0 +1,58 @@ +.message { + /* change color here */ + color: #f8b26a; + text-align: center; + font-size: 1.5rem; +} + +.lds-ring { + /* change color here */ + color: #f8b26a; +} + + .lds-ring, + .lds-ring div { + box-sizing: border-box; + } + +.lds-ring { + display: inline-block; + position: relative; + width: 80px; + height: 80px; +} + + .lds-ring div { + box-sizing: border-box; + display: block; + position: absolute; + width: 64px; + height: 64px; + margin: 8px; + border: 8px solid currentColor; + border-radius: 50%; + animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite; + border-color: currentColor transparent transparent transparent; + } + + .lds-ring div:nth-child(1) { + animation-delay: -0.45s; + } + + .lds-ring div:nth-child(2) { + animation-delay: -0.3s; + } + + .lds-ring div:nth-child(3) { + animation-delay: -0.15s; + } + +@keyframes lds-ring { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +} diff --git a/Projects/WebClient/Web.Tra/Components/Layout/MainLayout.razor b/Projects/WebClient/Web.Tra/Components/Layout/MainLayout.razor index 78dd570..f3c2d4b 100644 --- a/Projects/WebClient/Web.Tra/Components/Layout/MainLayout.razor +++ b/Projects/WebClient/Web.Tra/Components/Layout/MainLayout.razor @@ -5,7 +5,6 @@ @inject ConfigService configService @inject NavigationManager NavigationManager - @@ -17,10 +16,11 @@ - + @Body + @code { bool sidebarExpanded = true; diff --git a/Projects/WebClient/Web.Tra/Components/Module/TraGrid.razor b/Projects/WebClient/Web.Tra/Components/Module/TraGrid.razor index b57b030..f64e79d 100644 --- a/Projects/WebClient/Web.Tra/Components/Module/TraGrid.razor +++ b/Projects/WebClient/Web.Tra/Components/Module/TraGrid.razor @@ -2,7 +2,7 @@ @inject ContextMenuService ContextMenuService - @@ -25,8 +25,10 @@ if (col.Name.ToLower().Equals("testdate")) { -