54 lines
2.0 KiB
Plaintext
54 lines
2.0 KiB
Plaintext
@model WritingIntentDisplayViewModel
|
|
@{
|
|
var scene = Model.Context?.Scene;
|
|
var workflow = scene?.Workflow;
|
|
var checklist = scene?.ChecklistItems.OrderBy(x => x.IsCompleted).ThenBy(x => x.SortOrder).ThenBy(x => x.ItemText).ToList() ?? [];
|
|
var completed = checklist.Count(x => x.IsCompleted);
|
|
}
|
|
|
|
<div class="writing-context-grid">
|
|
<article class="writing-context-card">
|
|
<p class="eyebrow">Workflow</p>
|
|
@if (workflow is null || scene is null)
|
|
{
|
|
<p>No current scene workflow.</p>
|
|
}
|
|
else
|
|
{
|
|
<dl class="writing-context-facts">
|
|
<dt>Status</dt><dd>@workflow.DraftStatus</dd>
|
|
<dt>Priority</dt><dd>@(workflow.Priority?.ToString() ?? "None")</dd>
|
|
<dt>Estimate</dt><dd>@(workflow.EstimatedWordCount?.ToString("N0") ?? "Not set")</dd>
|
|
<dt>Actual</dt><dd>@(workflow.ActualWordCount?.ToString("N0") ?? "Not set")</dd>
|
|
<dt>Blocked</dt><dd>@(workflow.IsBlocked ? (workflow.BlockedReason ?? "Blocked") : "No")</dd>
|
|
</dl>
|
|
}
|
|
</article>
|
|
|
|
<article class="writing-context-card">
|
|
<p class="eyebrow">Checklist</p>
|
|
@if (!checklist.Any())
|
|
{
|
|
<p>No checklist items.</p>
|
|
}
|
|
else
|
|
{
|
|
<p>@completed / @checklist.Count completed</p>
|
|
<ul class="writing-context-list writing-intent-checklist">
|
|
@foreach (var item in checklist)
|
|
{
|
|
<li class="@(item.IsCompleted ? "is-complete" : "")">
|
|
<span>@(item.IsCompleted ? "Done" : "Planned")</span>
|
|
<span>@item.ItemText</span>
|
|
</li>
|
|
}
|
|
</ul>
|
|
}
|
|
</article>
|
|
|
|
<article class="writing-context-card writing-context-card--wide">
|
|
<p class="eyebrow">Future Fulfilment</p>
|
|
<p>Stored checklist and workflow states are shown as recorded. Automatic fulfilment detection is not enabled here.</p>
|
|
</article>
|
|
</div>
|