154 lines
7.3 KiB
Plaintext
154 lines
7.3 KiB
Plaintext
@model StoryIntelligenceExperiencePrototypeViewModel
|
|
@{
|
|
ViewData["Title"] = "Story Intelligence Illustration Diagnostics";
|
|
var characters = Model.Scenes.SelectMany(scene => scene.Characters.Select(character => new { Scene = scene, Character = character })).ToList();
|
|
var locations = Model.Scenes.Select(scene => new { Scene = scene, Location = scene.Location }).ToList();
|
|
var assets = Model.Scenes.SelectMany(scene => scene.Assets.Select(asset => new { Scene = scene, Asset = asset })).ToList();
|
|
}
|
|
|
|
<section class="stack-lg">
|
|
<div>
|
|
<p class="eyebrow">Development diagnostics</p>
|
|
<h1>Story Intelligence Illustration Diagnostics</h1>
|
|
<p class="muted">Import Session @Model.ImportSessionId · @Model.BookTitle · Snapshot @Model.GeneratedUtc.ToString("yyyy-MM-dd HH:mm:ss") UTC</p>
|
|
</div>
|
|
|
|
<div class="project-card">
|
|
<div class="project-card__body">
|
|
<h2>Characters</h2>
|
|
<div class="table-responsive">
|
|
<table class="table align-middle">
|
|
<thead>
|
|
<tr>
|
|
<th>Scene</th>
|
|
<th>Identity</th>
|
|
<th>Illustration</th>
|
|
<th>Resolved evidence</th>
|
|
<th>Revalidation</th>
|
|
<th>Assignment</th>
|
|
<th>Previous / change</th>
|
|
<th>Demand</th>
|
|
<th>Demand key</th>
|
|
<th>Candidate diagnostics</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach (var row in characters)
|
|
{
|
|
<tr>
|
|
<td>@row.Scene.SceneNumber</td>
|
|
<td><strong>@row.Character.Name</strong><br /><span class="muted">@row.Character.Id</span></td>
|
|
<td><code>@(row.Character.ImageResolution.StableCode ?? row.Character.LibraryCode)</code><br />@row.Character.ImageResolution.Status</td>
|
|
<td>
|
|
Age @Display(row.Character.ImageResolution.ResolvedAgeBand)<br />
|
|
Presentation @Display(row.Character.ImageResolution.ResolvedPresentation)<br />
|
|
<span class="text-warning">@Display(row.Character.ImageResolution.EvidenceWarnings)</span>
|
|
</td>
|
|
<td>@Revalidation(row.Character.ImageResolution)</td>
|
|
<td>@Display(row.Character.ImageResolution.ReasonChosen)<br /><span class="muted">@Display(row.Character.ImageResolution.IllustrationAllocationStatus)</span></td>
|
|
<td>
|
|
Previous illustration: <code>@Display(row.Character.ImageResolution.PreviousIllustration)</code><br />
|
|
Change: @Display(row.Character.ImageResolution.ReasonReassigned)<br />
|
|
<details>
|
|
<summary>Evidence</summary>
|
|
<pre class="small mb-0">Previous: @Display(row.Character.ImageResolution.PreviousEvidence)
|
|
Current: @Display(row.Character.ImageResolution.CurrentEvidence)</pre>
|
|
</details>
|
|
</td>
|
|
<td>@Display(row.Character.ImageResolution.DemandStatus)</td>
|
|
<td><code>@Display(row.Character.ImageResolution.DemandKey)</code></td>
|
|
<td><pre class="small mb-0">@Display(row.Character.ImageResolution.RejectedCandidates)</pre></td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="project-card">
|
|
<div class="project-card__body">
|
|
<h2>Locations</h2>
|
|
<div class="table-responsive">
|
|
<table class="table align-middle">
|
|
<thead>
|
|
<tr>
|
|
<th>Scene</th>
|
|
<th>Location</th>
|
|
<th>Semantic type</th>
|
|
<th>Illustration</th>
|
|
<th>Fallback</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach (var row in locations)
|
|
{
|
|
var type = StoryIntelligenceIllustrationCompatibility.LocationType($"{row.Location.Name} {row.Location.Label}");
|
|
<tr>
|
|
<td>@row.Scene.SceneNumber</td>
|
|
<td><strong>@row.Location.Name</strong><br /><span class="muted">@row.Location.Id</span></td>
|
|
<td>@type</td>
|
|
<td><code>@row.Location.LibraryCode</code><br />@row.Location.ImageResolution.Status</td>
|
|
<td>@row.Location.ImageResolution.FallbackUsed</td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="project-card">
|
|
<div class="project-card__body">
|
|
<h2>Assets</h2>
|
|
<div class="table-responsive">
|
|
<table class="table align-middle">
|
|
<thead>
|
|
<tr>
|
|
<th>Scene</th>
|
|
<th>Asset</th>
|
|
<th>Semantic type</th>
|
|
<th>Illustration</th>
|
|
<th>Fallback</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach (var row in assets)
|
|
{
|
|
var type = StoryIntelligenceIllustrationCompatibility.AssetType($"{row.Asset.Name} {row.Asset.Label}");
|
|
<tr>
|
|
<td>@row.Scene.SceneNumber</td>
|
|
<td><strong>@row.Asset.Name</strong><br /><span class="muted">@row.Asset.Id</span></td>
|
|
<td>@type</td>
|
|
<td><code>@row.Asset.LibraryCode</code><br />@row.Asset.ImageResolution.Status</td>
|
|
<td>@row.Asset.ImageResolution.FallbackUsed</td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
@functions {
|
|
private static string Display(string? value)
|
|
=> string.IsNullOrWhiteSpace(value) ? "none" : value;
|
|
|
|
private static string Revalidation(StoryIntelligenceExperienceImageResolution resolution)
|
|
{
|
|
if (string.Equals(resolution.Status, "GroupEntity", StringComparison.OrdinalIgnoreCase))
|
|
{
|
|
return "Group entity";
|
|
}
|
|
|
|
if (resolution.FallbackUsed)
|
|
{
|
|
return "No compatible illustration";
|
|
}
|
|
|
|
return string.IsNullOrWhiteSpace(resolution.ReasonReassigned) ? "Passed" : "Reassigned";
|
|
}
|
|
|
|
}
|