Add shared pinned tables state
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
@using System.Linq
|
||||
@inject IJSRuntime JSRuntime
|
||||
@inject LookupService LookupService
|
||||
@inject RolemasterDb.App.Frontend.AppState.PinnedTablesState PinnedTablesState
|
||||
@inject RolemasterDb.App.Frontend.AppState.RecentTablesState RecentTablesState
|
||||
|
||||
<PageTitle>Critical Tables</PageTitle>
|
||||
@@ -29,6 +30,10 @@
|
||||
@if (SelectedTableReference is { } selected)
|
||||
{
|
||||
<span class="table-select-trigger-chips">
|
||||
@if (PinnedTablesState.IsPinned(selected.Key))
|
||||
{
|
||||
<span class="chip">Pinned</span>
|
||||
}
|
||||
<span class="chip">@($"{selected.CurationPercentage}%")</span>
|
||||
</span>
|
||||
}
|
||||
@@ -51,6 +56,10 @@
|
||||
<strong class="table-select-option-title">@table.Label</strong>
|
||||
</span>
|
||||
<span class="table-select-option-chips">
|
||||
@if (PinnedTablesState.IsPinned(table.Key))
|
||||
{
|
||||
<span class="chip">Pinned</span>
|
||||
}
|
||||
<span class="chip">@($"{table.CurationPercentage}%")</span>
|
||||
</span>
|
||||
</button>
|
||||
@@ -95,7 +104,12 @@
|
||||
<h2 class="panel-title">@detail.DisplayName</h2>
|
||||
<p class="table-browser-reading-hint">@readingHint</p>
|
||||
</div>
|
||||
<p class="table-browser-edit-hint">Use the curation action or edit action on any filled result.</p>
|
||||
<div class="action-row">
|
||||
<button type="button" class="btn btn-link" @onclick="TogglePinnedTableAsync">
|
||||
@(PinnedTablesState.IsPinned(detail.Slug) ? "Unpin table" : "Pin table")
|
||||
</button>
|
||||
<p class="table-browser-edit-hint">Use the curation action or edit action on any filled result.</p>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
@{
|
||||
@@ -311,6 +325,12 @@
|
||||
|
||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||
{
|
||||
if (firstRender)
|
||||
{
|
||||
await RecentTablesState.InitializeAsync();
|
||||
await PinnedTablesState.InitializeAsync();
|
||||
}
|
||||
|
||||
if (!hasResolvedStoredTableSelection && referenceData?.CriticalTables.Count > 0)
|
||||
{
|
||||
try
|
||||
@@ -773,6 +793,20 @@
|
||||
private Task PersistSelectedTableAsync(string tableSlug) =>
|
||||
JSRuntime.InvokeVoidAsync("localStorage.setItem", SelectedTableStorageKey, tableSlug).AsTask();
|
||||
|
||||
private Task TogglePinnedTableAsync()
|
||||
{
|
||||
if (SelectedTableReference is not { } selectedTable)
|
||||
{
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
return PinnedTablesState.ToggleAsync(
|
||||
selectedTable.Key,
|
||||
selectedTable.Label,
|
||||
selectedTable.Family,
|
||||
selectedTable.CurationPercentage);
|
||||
}
|
||||
|
||||
private Task RecordRecentTableVisitAsync()
|
||||
{
|
||||
if (SelectedTableReference is not { } selectedTable)
|
||||
|
||||
Reference in New Issue
Block a user