Expose imported critical data in web app
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
@using System.Text.Json
|
||||
|
||||
<div class="result-card">
|
||||
<h3>@Result.CriticalTableName</h3>
|
||||
<div class="result-stats">
|
||||
<span class="stat-pill">Table: <code>@Result.CriticalType</code></span>
|
||||
<span class="stat-pill">Column: @Result.ColumnLabel</span>
|
||||
<span class="stat-pill">Role: @Result.ColumnRole</span>
|
||||
<span class="stat-pill">Band: @Result.RollBand</span>
|
||||
<span class="stat-pill">Roll: @Result.Roll</span>
|
||||
<span class="stat-pill">Status: @Result.ParseStatus</span>
|
||||
</div>
|
||||
|
||||
<div class="detail-grid">
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Family</span>
|
||||
<span>@Result.CriticalFamily</span>
|
||||
</div>
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Source</span>
|
||||
<span>@Result.SourceDocument</span>
|
||||
</div>
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Column Key</span>
|
||||
<span><code>@Result.Column</code></span>
|
||||
</div>
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Roll Range</span>
|
||||
<span>@FormatRollRange(Result.RollBandMinRoll, Result.RollBandMaxRoll)</span>
|
||||
</div>
|
||||
@if (!string.IsNullOrWhiteSpace(Result.Group))
|
||||
{
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Group</span>
|
||||
<span>@(string.IsNullOrWhiteSpace(Result.GroupLabel) ? Result.Group : $"{Result.GroupLabel} ({Result.Group})")</span>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
@if (!string.IsNullOrWhiteSpace(Result.TableNotes))
|
||||
{
|
||||
<p class="muted">@Result.TableNotes</p>
|
||||
}
|
||||
|
||||
<p><strong>@Result.Description</strong></p>
|
||||
|
||||
@if (!string.IsNullOrWhiteSpace(Result.AffixText))
|
||||
{
|
||||
<div class="callout">
|
||||
<h4>Affix Text</h4>
|
||||
<p class="stacked-copy">@Result.AffixText</p>
|
||||
</div>
|
||||
}
|
||||
|
||||
<details class="details-block">
|
||||
<summary>Raw Imported Cell</summary>
|
||||
<pre class="code-block">@Result.RawCellText</pre>
|
||||
</details>
|
||||
|
||||
<details class="details-block">
|
||||
<summary>Parsed JSON</summary>
|
||||
<pre class="code-block">@FormatJson(Result.ParsedJson)</pre>
|
||||
</details>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
[Parameter, EditorRequired]
|
||||
public CriticalLookupResponse Result { get; set; } = null!;
|
||||
|
||||
private static string FormatRollRange(int minRoll, int? maxRoll) =>
|
||||
maxRoll is null
|
||||
? $"{minRoll}+"
|
||||
: minRoll == maxRoll
|
||||
? minRoll.ToString()
|
||||
: $"{minRoll}-{maxRoll}";
|
||||
|
||||
private static string FormatJson(string value)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(value))
|
||||
{
|
||||
return "{}";
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
using var document = JsonDocument.Parse(value);
|
||||
return JsonSerializer.Serialize(document.RootElement, new JsonSerializerOptions { WriteIndented = true });
|
||||
}
|
||||
catch (JsonException)
|
||||
{
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
<div class="table-list-item">
|
||||
<strong>@Table.Label</strong>
|
||||
<div class="detail-grid">
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Key</span>
|
||||
<span><code>@Table.Key</code></span>
|
||||
</div>
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Family</span>
|
||||
<span>@Table.Family</span>
|
||||
</div>
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Source</span>
|
||||
<span>@Table.SourceDocument</span>
|
||||
</div>
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Columns</span>
|
||||
<span>@Table.Columns.Count</span>
|
||||
</div>
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Groups</span>
|
||||
<span>@Table.Groups.Count</span>
|
||||
</div>
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Roll Bands</span>
|
||||
<span>@Table.RollBands.Count</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (!string.IsNullOrWhiteSpace(Table.Notes))
|
||||
{
|
||||
<p class="muted">@Table.Notes</p>
|
||||
}
|
||||
|
||||
<div class="chip-row">
|
||||
@foreach (var column in Table.Columns)
|
||||
{
|
||||
<span class="chip">@column.Label <small>(@column.Key, @column.Role, #@column.SortOrder)</small></span>
|
||||
}
|
||||
</div>
|
||||
|
||||
@if (Table.Groups.Count > 0)
|
||||
{
|
||||
<div class="chip-row">
|
||||
@foreach (var group in Table.Groups)
|
||||
{
|
||||
<span class="chip">@group.Label <small>(@group.Key, #@group.SortOrder)</small></span>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
|
||||
<details class="details-block">
|
||||
<summary>Roll Bands (@Table.RollBands.Count)</summary>
|
||||
<div class="chip-row">
|
||||
@foreach (var rollBand in Table.RollBands)
|
||||
{
|
||||
<span class="chip">@rollBand.Label <small>(@FormatRollRange(rollBand.MinRoll, rollBand.MaxRoll), #@rollBand.SortOrder)</small></span>
|
||||
}
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
[Parameter, EditorRequired]
|
||||
public CriticalTableReference Table { get; set; } = null!;
|
||||
|
||||
private static string FormatRollRange(int minRoll, int? maxRoll) =>
|
||||
maxRoll is null
|
||||
? $"{minRoll}+"
|
||||
: minRoll == maxRoll
|
||||
? minRoll.ToString()
|
||||
: $"{minRoll}-{maxRoll}";
|
||||
}
|
||||
Reference in New Issue
Block a user