diff --git a/Hcs.WebApp/Components/Dialogs/AddUser.razor b/Hcs.WebApp/Components/Dialogs/AddUser.razor
index 01ad719..c436af5 100644
--- a/Hcs.WebApp/Components/Dialogs/AddUser.razor
+++ b/Hcs.WebApp/Components/Dialogs/AddUser.razor
@@ -46,8 +46,8 @@
-
-
+
+
diff --git a/Hcs.WebApp/Components/Dialogs/StartParsing.razor b/Hcs.WebApp/Components/Dialogs/StartParsing.razor
new file mode 100644
index 0000000..37864de
--- /dev/null
+++ b/Hcs.WebApp/Components/Dialogs/StartParsing.razor
@@ -0,0 +1,80 @@
+@using Hcs.WebApp.Services
+
+@inject DialogService DialogService
+@inject FileToParseService FileToParseService
+
+
+
+
+
+ @errorMessage
+
+
+
+
+
+
+
+
+
+
+@code {
+ enum UploadState
+ {
+ Idle,
+ InProgress,
+ Completed
+ }
+
+ RadzenUpload upload;
+ UploadState state;
+ int progress;
+ bool hasError;
+ string errorMessage;
+
+ void Upload()
+ {
+ state = UploadState.InProgress;
+ hasError = false;
+
+ upload.Upload();
+ }
+
+ void Close()
+ {
+ DialogService.Close(true);
+ }
+
+ void OnProgress(UploadProgressArgs args)
+ {
+ progress = args.Progress;
+ }
+
+ async Task OnCompleteAsync(UploadCompleteEventArgs args)
+ {
+ try
+ {
+ // TODO
+ }
+ catch (Exception e)
+ {
+ hasError = true;
+ errorMessage = e.Message;
+ }
+
+ state = hasError ? UploadState.Idle : UploadState.Completed;
+ }
+}
diff --git a/Hcs.WebApp/Components/Pages/FilesToParse.razor b/Hcs.WebApp/Components/Pages/FilesToParse.razor
index 3322a03..03d26db 100644
--- a/Hcs.WebApp/Components/Pages/FilesToParse.razor
+++ b/Hcs.WebApp/Components/Pages/FilesToParse.razor
@@ -46,8 +46,6 @@
protected override async Task OnAfterRenderAsync(bool firstRender)
{
- await base.OnAfterRenderAsync(firstRender);
-
if (firstRender)
{
ChangeState(PageState.Loading);
diff --git a/Hcs.WebApp/Components/Pages/Objects/Houses.razor b/Hcs.WebApp/Components/Pages/Objects/Houses.razor
index 669dd15..3b84fe0 100644
--- a/Hcs.WebApp/Components/Pages/Objects/Houses.razor
+++ b/Hcs.WebApp/Components/Pages/Objects/Houses.razor
@@ -23,7 +23,7 @@
-
+
diff --git a/Hcs.WebApp/Components/Pages/Registry/Common.razor b/Hcs.WebApp/Components/Pages/Registry/Common.razor
index 57a71b0..eb9d081 100644
--- a/Hcs.WebApp/Components/Pages/Registry/Common.razor
+++ b/Hcs.WebApp/Components/Pages/Registry/Common.razor
@@ -10,7 +10,6 @@
@attribute [Authorize]
@inject RegistryService RegistryService
-@inject DialogService DialogService
Общие справочники подсистемы НСИ
diff --git a/Hcs.WebApp/Components/Pages/Registry/Private.razor b/Hcs.WebApp/Components/Pages/Registry/Private.razor
index 43452b5..de1c92b 100644
--- a/Hcs.WebApp/Components/Pages/Registry/Private.razor
+++ b/Hcs.WebApp/Components/Pages/Registry/Private.razor
@@ -10,7 +10,6 @@
@attribute [Authorize]
@inject RegistryService RegistryService
-@inject DialogService DialogService
Частные справочники подсистемы НСИ
diff --git a/Hcs.WebApp/Components/Shared/SyncedPageBase.cs b/Hcs.WebApp/Components/Shared/SyncedPageBase.cs
index 05ffd88..0365d47 100644
--- a/Hcs.WebApp/Components/Shared/SyncedPageBase.cs
+++ b/Hcs.WebApp/Components/Shared/SyncedPageBase.cs
@@ -1,8 +1,10 @@
using Hcs.WebApp.BackgroundServices;
+using Hcs.WebApp.Components.Dialogs;
using Hcs.WebApp.Data.Hcs;
using Hcs.WebApp.Services;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Authorization;
+using Radzen;
using System.Security.Claims;
namespace Hcs.WebApp.Components.Shared
@@ -12,6 +14,7 @@ namespace Hcs.WebApp.Components.Shared
protected SyncedPageState state;
protected IEnumerable data;
protected string syncButtonText = "...";
+ protected string parseButtonText = "...";
protected abstract Campaign.CampaignType CampaignType { get; }
@@ -24,6 +27,9 @@ namespace Hcs.WebApp.Components.Shared
[Inject]
private CampaignManagementState CampaignManagementState { get; set; }
+ [Inject]
+ protected DialogService DialogService { get; set; }
+
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
@@ -78,31 +84,63 @@ namespace Hcs.WebApp.Components.Shared
}
}
+ protected async Task ParseDataAsync()
+ {
+ if (state == SyncedPageState.SyncWaiting) return;
+
+ ChangeState(SyncedPageState.SyncWaiting);
+
+ if (await HeadquartersService.HasActiveCampaignAsync(CampaignType))
+ {
+ ChangeState(SyncedPageState.Idle);
+ }
+ else
+ {
+ await DialogService.OpenAsync(
+ "Отправка файла",
+ null,
+ new DialogOptions()
+ {
+ Width = "600px",
+ CloseDialogOnEsc = false,
+ CloseDialogOnOverlayClick = false,
+ ShowClose = false
+ });
+
+ //// TODO: Use user id
+ //var campaign = await HeadquartersService.InitiateCampaignAsync(CampaignType, "");
+ //CampaignManagementState.EnqueueCampaign(campaign);
+ }
+ }
+
private void ChangeState(SyncedPageState state)
{
if (this.state == state) return;
this.state = state;
- SetSyncButtonText();
+ SetButtonsText();
StateHasChanged();
}
- private void SetSyncButtonText()
+ private void SetButtonsText()
{
switch (state)
{
case SyncedPageState.Init:
syncButtonText = "...";
+ parseButtonText = "...";
break;
case SyncedPageState.Loading:
case SyncedPageState.Idle:
syncButtonText = "Синхронизировать";
+ parseButtonText = "Спарсить";
break;
case SyncedPageState.SyncWaiting:
syncButtonText = "Идет синхронизация...";
+ parseButtonText = "Идет парсинг...";
break;
}
}