PlotDirector/PlotLine/Views/Onboarding/BuildComplete.cshtml

120 lines
5.9 KiB
Plaintext

@model OnboardingManuscriptBuildResult
@{
ViewData["Title"] = "Manuscript imported";
var coreComplete = string.Equals(Model.Status, "CoreImportComplete", StringComparison.OrdinalIgnoreCase);
}
<section class="onboarding-shell" aria-labelledby="build-complete-title">
<div class="onboarding-panel onboarding-review-panel">
<partial name="_OnboardingJourneyHeader" model="@(new OnboardingJourneyHeaderViewModel { CurrentStep = coreComplete ? 10 : 8, TotalSteps = 10 })" />
<div class="onboarding-copy">
<p class="eyebrow">@(coreComplete ? "Core Import Complete" : "Scene Detection Complete")</p>
<div class="onboarding-success-heading">
<span aria-hidden="true">&check;</span>
<h1 id="build-complete-title">@(coreComplete ? "Core import is complete." : "Scene structure has been detected.")</h1>
</div>
<p>
@if (coreComplete)
{
@:PlotDirector created the approved chapters and scenes, saved the Word markers, and applied your character review. Core import is complete.
}
else if (Model.AlreadyBuilt)
{
@:This manuscript structure has already been created in PlotDirector, so nothing was duplicated. Review characters to complete the core import.
}
else
{
@:PlotDirector created the approved chapters and detected scenes, persisted their manuscript text, updated the Word markers, and saved the manuscript. Word may now be closed if you wish; keep this browser workflow open to review characters.
}
</p>
@if (!string.IsNullOrWhiteSpace(Model.MarkerWarning))
{
<p class="text-warning">@Model.MarkerWarning</p>
}
</div>
<div class="onboarding-scan-counts onboarding-review-counts">
<div>
<span>Chapters</span>
<strong>@Model.ChaptersCreated</strong>
</div>
<div>
<span>Scenes</span>
<strong>@Model.ScenesCreated</strong>
</div>
<div>
<span>Characters created now</span>
<strong>@(Model.CharactersCreated + Model.CharactersReused)</strong>
</div>
<div>
<span>Scene appearances now</span>
<strong>@Model.SceneAppearancesCreated</strong>
</div>
</div>
@if (Model.SceneStructure.Any())
{
<section class="onboarding-complete-next" aria-label="Detected scene structure">
<h2>Detected scene structure</h2>
<div class="onboarding-review-chapters">
@foreach (var chapter in Model.SceneStructure)
{
<details class="onboarding-review-chapter">
<summary>
<span>Chapter @chapter.ChapterNumber</span>
<strong>@chapter.ChapterTitle</strong>
<small>@chapter.SceneCount.ToString("N0") scene@(chapter.SceneCount == 1 ? string.Empty : "s") / @chapter.WordCount.ToString("N0") words</small>
</summary>
@if (chapter.Scenes.Any(scene => !string.IsNullOrWhiteSpace(scene.StructuralSummary)))
{
<ol>
@foreach (var scene in chapter.Scenes)
{
<li>
<strong>@scene.Title</strong>
<span>@scene.WordCount.ToString("N0") words / paragraphs @scene.StartParagraph-@scene.EndParagraph</span>
@if (!string.IsNullOrWhiteSpace(scene.StructuralSummary))
{
<p>@scene.StructuralSummary</p>
}
</li>
}
</ol>
}
</details>
}
</div>
</section>
}
@if (coreComplete)
{
<section class="onboarding-complete-next">
<h2>Optional: analyse manuscript</h2>
<p>Story Intelligence can now enrich the existing scenes with summaries, context, relationships, knowledge, timeline details and metrics. You can analyse now or return later.</p>
</section>
}
else
{
<section class="onboarding-complete-next">
<h2>Next: review characters</h2>
<p>Character detection remains part of core import. Review detected names, aliases and existing matches to finish importing the manuscript.</p>
</section>
}
<div class="onboarding-actions">
@if (coreComplete)
{
<a class="btn btn-primary" asp-controller="Onboarding" asp-action="StoryIntelligence">Analyse my book</a>
<a class="btn btn-outline-secondary" asp-controller="Projects" asp-action="Details" asp-route-id="@Model.ProjectID">Not now</a>
}
else
{
<a class="btn btn-primary" asp-controller="Onboarding" asp-action="ScanCharacters" asp-route-previewId="@Model.PreviewID">Review characters</a>
}
<a class="btn btn-outline-primary" asp-controller="Projects" asp-action="Details" asp-route-id="@Model.ProjectID">Open Project Overview</a>
<a class="btn btn-outline-secondary" asp-controller="Writer" asp-action="Index" asp-route-projectId="@Model.ProjectID">Open Writer Workspace</a>
</div>
</div>
</section>