120 lines
5.6 KiB
Plaintext
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;
|
|
}
|