Enhance tables canvas reading states

This commit is contained in:
2026-03-21 15:08:39 +01:00
parent 7a5568f77c
commit ae582367d6
7 changed files with 327 additions and 18 deletions

View File

@@ -61,17 +61,23 @@
SelectedGroupKey="selectedGroupKey"
SelectedColumnKey="selectedColumnKey"
RollJumpValue="rollJumpValue"
DensityMode="densityMode"
OnTogglePin="TogglePinnedTableAsync"
OnModeChanged="UpdateReferenceModeAsync"
OnGroupChanged="UpdateSelectedGroupAsync"
OnColumnChanged="UpdateSelectedColumnAsync"
OnRollJumpChanged="UpdateRollJumpAsync" />
OnRollJumpChanged="UpdateRollJumpAsync"
OnDensityChanged="UpdateDensityModeAsync" />
<TablesCanvas
Detail="detail"
CurrentMode="referenceMode"
SelectedGroupKey="selectedGroupKey"
SelectedColumnKey="selectedColumnKey"
RollJumpValue="rollJumpValue"
DensityMode="densityMode"
SelectedCell="selectedCell"
OnSelectCell="SelectCell"
OnOpenCuration="OpenCellCurationAsync"
OnOpenEditor="OpenCellEditorAsync" />
</div>
@@ -150,6 +156,8 @@
private string selectedGroupKey = string.Empty;
private string selectedColumnKey = string.Empty;
private string rollJumpValue = string.Empty;
private string densityMode = TablesDensityMode.Comfortable;
private TablesCellSelection? selectedCell;
private bool hasResolvedStoredTableSelection;
private CriticalTableReference? SelectedTableReference =>
referenceData?.CriticalTables.FirstOrDefault(item => string.Equals(item.Key, selectedTableSlug, StringComparison.OrdinalIgnoreCase));
@@ -664,6 +672,23 @@
return Task.CompletedTask;
}
private Task UpdateDensityModeAsync(string mode)
{
densityMode = NormalizeDensityMode(mode);
return Task.CompletedTask;
}
private void SelectCell(TablesCellSelection selection)
{
if (tableDetail?.Cells.Any(cell => cell.ResultId == selection.ResultId) != true)
{
selectedCell = null;
return;
}
selectedCell = selection;
}
private void NormalizeViewStateForCurrentDetail()
{
referenceMode = NormalizeMode(referenceMode);
@@ -673,6 +698,8 @@
selectedGroupKey = string.Empty;
selectedColumnKey = string.Empty;
rollJumpValue = string.Empty;
densityMode = NormalizeDensityMode(densityMode);
selectedCell = null;
return;
}
@@ -687,6 +714,12 @@
}
rollJumpValue = NormalizeRollInput(rollJumpValue);
densityMode = NormalizeDensityMode(densityMode);
if (selectedCell is not null && tableDetail.Cells.All(cell => cell.ResultId != selectedCell.ResultId))
{
selectedCell = null;
}
}
private static string NormalizeMode(string? mode) =>
@@ -700,6 +733,11 @@
private static string NormalizeOptionalFilter(string? value) =>
string.IsNullOrWhiteSpace(value) ? string.Empty : value.Trim();
private static string NormalizeDensityMode(string? mode) =>
string.Equals(mode, TablesDensityMode.Dense, StringComparison.Ordinal)
? TablesDensityMode.Dense
: TablesDensityMode.Comfortable;
private static string NormalizeRollInput(string? value)
{
if (string.IsNullOrWhiteSpace(value))