diff --git a/src/Marathon.UI/Components/NavBody.razor b/src/Marathon.UI/Components/NavBody.razor index ae99beb..afe1e97 100644 --- a/src/Marathon.UI/Components/NavBody.razor +++ b/src/Marathon.UI/Components/NavBody.razor @@ -53,6 +53,10 @@ + + + @L["Nav.Export"] + @L["Nav.Settings"] diff --git a/src/Marathon.UI/Pages/Export/ExportHub.razor b/src/Marathon.UI/Pages/Export/ExportHub.razor new file mode 100644 index 0000000..729c0f7 --- /dev/null +++ b/src/Marathon.UI/Pages/Export/ExportHub.razor @@ -0,0 +1,58 @@ +@* + ExportHub — a top-level home for the Excel export so it is no longer gated + behind opening a single event's detail page. Hosts the shared ExportDialog + (date range + kind) which is not event-specific. +*@ + +@page "/export" +@inject IStringLocalizer L +@inject IDialogService Dialog +@inject ISnackbar Snackbar + +@L["App.Title"] · @L["Export.Title"] + +
+
+ @L["Export.Kicker"] +

@L["Export.Title"]

+

@L["Export.Hub.Lede"]

+
+ +
+ +
+
+ +
+ + @L["Export.Hub.FilenameHint"] + +
+
+ +@code { + private async Task OpenExportDialog() + { + var parameters = new DialogParameters + { + ["InitialFrom"] = MoscowTime.Now.Date.AddDays(-7), + ["InitialTo"] = MoscowTime.Now.Date, + }; + + var options = new DialogOptions + { + CloseOnEscapeKey = true, + FullWidth = true, + MaxWidth = MaxWidth.Small, + }; + + var reference = await Dialog.ShowAsync(L["Export.Title"], parameters, options); + var result = await reference.Result; + if (result is { Canceled: false, Data: string path }) + { + Snackbar.Add(string.Format(CultureInfo.CurrentCulture, L["Export.Success"].Value, path), Severity.Success); + } + } +}