From 1a1c8e71fcd14858f595029f089b2d4a00202b32 Mon Sep 17 00:00:00 2001
From: ogi <Administrator@S-OGI-PC>
Date: Fri, 05 Dec 2025 09:24:16 +0900
Subject: [PATCH] プロジェクトファイルを追加。

---
 HotelPms.Client.Blazor/Util/DefaultGlobalLoadingSpinner.cs |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 55 insertions(+), 0 deletions(-)

diff --git a/HotelPms.Client.Blazor/Util/DefaultGlobalLoadingSpinner.cs b/HotelPms.Client.Blazor/Util/DefaultGlobalLoadingSpinner.cs
new file mode 100644
index 0000000..2e197d2
--- /dev/null
+++ b/HotelPms.Client.Blazor/Util/DefaultGlobalLoadingSpinner.cs
@@ -0,0 +1,55 @@
+using Microsoft.JSInterop;
+
+namespace HotelPms.Client.Blazor.Util
+{
+    /// <summary>
+    /// 汎用待ち画面
+    /// </summary>
+    public class DefaultGlobalLoadingSpinner : IGlobalLoadingSpinner
+    {
+        static object Locker = new object();
+        int SpinnerCount = 1;
+
+        IJSRuntime _jsRuntime;
+
+        public DefaultGlobalLoadingSpinner(IJSRuntime jsRuntime)
+        {
+            _jsRuntime = jsRuntime;
+        }
+
+        public async Task ShowAsync()
+        {
+            EnvironmentSetting.Debug($"Locker Start:{DateTime.Now.ToString("HH:mm:ss fff")}");
+            lock (Locker)
+            {
+                SpinnerCount++;
+            }
+
+            EnvironmentSetting.Debug($"InvokeVoidAsync Start:{DateTime.Now.ToString("HH:mm:ss fff")}");
+            await this._jsRuntime.InvokeVoidAsync("NetCallJs.showGlobalLoadingSpinner");  //0.5秒
+            EnvironmentSetting.Debug($"InvokeVoidAsync End:{DateTime.Now.ToString("HH:mm:ss fff")}");
+        }
+
+        public async Task HideAsync()
+        {
+            lock (Locker)
+            {
+                SpinnerCount--;
+                if (SpinnerCount < 0)
+                {
+                    SpinnerCount = 0;
+                }
+            }
+
+            if (SpinnerCount == 0)
+            {
+                await this._jsRuntime.InvokeVoidAsync("NetCallJs.hideGlobalLoadingSpinner");
+            }
+        }
+
+        public async Task HideLogoAsync()
+        {
+            await this._jsRuntime.InvokeVoidAsync("NetCallJs.hideGlobalLoadingSpinnerLogo");
+        }
+    }
+}

--
Gitblit v1.10.0