Add desktop tables inspector
This commit is contained in:
@@ -83,6 +83,13 @@
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
@if (tableDetail is not null)
|
||||
{
|
||||
<aside class="tables-reference-inspector-shell">
|
||||
<TablesInspector SelectedCellDetail="SelectedCellDetail" />
|
||||
</aside>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</section>
|
||||
@@ -161,6 +168,10 @@
|
||||
private bool hasResolvedStoredTableSelection;
|
||||
private CriticalTableReference? SelectedTableReference =>
|
||||
referenceData?.CriticalTables.FirstOrDefault(item => string.Equals(item.Key, selectedTableSlug, StringComparison.OrdinalIgnoreCase));
|
||||
private CriticalTableCellDetail? SelectedCellDetail =>
|
||||
selectedCell is null
|
||||
? null
|
||||
: tableDetail?.Cells.FirstOrDefault(cell => cell.ResultId == selectedCell.ResultId);
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
|
||||
52
src/RolemasterDb.App/Components/Tables/TablesInspector.razor
Normal file
52
src/RolemasterDb.App/Components/Tables/TablesInspector.razor
Normal file
@@ -0,0 +1,52 @@
|
||||
@if (SelectedCellDetail is null)
|
||||
{
|
||||
<aside class="tables-inspector" aria-label="Selected result inspector">
|
||||
<InspectorSection Title="Inspector" Description="Select a result in the table to inspect its details here.">
|
||||
<p class="tables-inspector-empty">Choose a cell to see its roll band, severity, and readable result without leaving the grid.</p>
|
||||
</InspectorSection>
|
||||
</aside>
|
||||
}
|
||||
else
|
||||
{
|
||||
var cell = SelectedCellDetail;
|
||||
|
||||
<aside class="tables-inspector" aria-label="Selected result inspector">
|
||||
<InspectorSection Title="Selected Result" Description="Read the selected cell and its context without opening a modal.">
|
||||
<div class="tables-inspector-summary">
|
||||
<div>
|
||||
<p class="tables-inspector-kicker">Roll band</p>
|
||||
<strong>@cell.RollBand</strong>
|
||||
</div>
|
||||
<div>
|
||||
<p class="tables-inspector-kicker">Severity</p>
|
||||
<strong>@cell.ColumnLabel</strong>
|
||||
</div>
|
||||
@if (!string.IsNullOrWhiteSpace(cell.GroupLabel))
|
||||
{
|
||||
<div>
|
||||
<p class="tables-inspector-kicker">Variant</p>
|
||||
<strong>@cell.GroupLabel</strong>
|
||||
</div>
|
||||
}
|
||||
<div>
|
||||
<p class="tables-inspector-kicker">Status</p>
|
||||
<StatusChip Tone="@(cell.IsCurated ? "success" : "warning")">
|
||||
@(cell.IsCurated ? "Curated" : "Needs Curation")
|
||||
</StatusChip>
|
||||
</div>
|
||||
</div>
|
||||
</InspectorSection>
|
||||
|
||||
<InspectorSection Title="Result" Description="The selected critical result stays readable while you browse the grid.">
|
||||
<CompactCriticalCell
|
||||
Description="@(cell.Description ?? string.Empty)"
|
||||
Effects="@(cell.Effects ?? Array.Empty<CriticalEffectLookupResponse>())"
|
||||
Branches="@(cell.Branches ?? Array.Empty<CriticalBranchLookupResponse>())" />
|
||||
</InspectorSection>
|
||||
</aside>
|
||||
}
|
||||
|
||||
@code {
|
||||
[Parameter]
|
||||
public CriticalTableCellDetail? SelectedCellDetail { get; set; }
|
||||
}
|
||||
@@ -1146,7 +1146,7 @@ pre,
|
||||
|
||||
.tables-reference-layout {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(17rem, 20rem) minmax(0, 1fr);
|
||||
grid-template-columns: minmax(17rem, 20rem) minmax(0, 1fr) minmax(19rem, 24rem);
|
||||
gap: 1rem;
|
||||
align-items: start;
|
||||
}
|
||||
@@ -1341,6 +1341,35 @@ pre,
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.tables-reference-inspector-shell {
|
||||
position: sticky;
|
||||
top: calc(var(--shell-header-height) + 1rem);
|
||||
}
|
||||
|
||||
.tables-inspector {
|
||||
display: grid;
|
||||
gap: 0.85rem;
|
||||
}
|
||||
|
||||
.tables-inspector-empty {
|
||||
margin: 0;
|
||||
color: var(--ink-soft);
|
||||
}
|
||||
|
||||
.tables-inspector-summary {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 0.75rem;
|
||||
}
|
||||
|
||||
.tables-inspector-kicker {
|
||||
margin: 0 0 0.2rem;
|
||||
color: var(--ink-soft);
|
||||
font-size: 0.76rem;
|
||||
letter-spacing: 0.08em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.table-shell {
|
||||
border-radius: 20px;
|
||||
padding: 1.2rem;
|
||||
@@ -1450,6 +1479,10 @@ pre,
|
||||
.tables-reference-rail {
|
||||
position: static;
|
||||
}
|
||||
|
||||
.tables-reference-inspector-shell {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.table-shell .table-scroll {
|
||||
|
||||
Reference in New Issue
Block a user