PlotDirector/PlotLine/Views/Development/StoryIntelligenceIllustrationDiagnostics.cshtml

120 lines
5.6 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>Assignment</th>
<th>Demand</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)</td>
<td>@Display(row.Character.ImageResolution.ReasonChosen)<br /><span class="muted">@Display(row.Character.ImageResolution.IllustrationAllocationStatus)</span></td>
<td>@Display(row.Character.ImageResolution.DemandStatus)</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;
}