@model ScenarioTimelineViewModel @{ ViewData["Title"] = $"{Model.Scenario.ScenarioName} Scenario"; ViewData["ShellClass"] = "plotline-shell-wide"; var scenesByChapter = Model.Scenes.GroupBy(x => x.ProposedChapterID).ToDictionary(x => x.Key, x => x.OrderBy(s => s.ProposedSortOrder).ToList()); var orderedScenes = Model.Scenes.OrderBy(x => x.ProposedSortOrder).ToList(); }

Scenario Mode

@Model.Scenario.ScenarioName

@Model.Scenario.Description

Return to Main Timeline
Compare
@if (TempData["ScenarioMessage"] is string message) {
@message
}
@Model.Warnings.Count scenario warning@(Model.Warnings.Count == 1 ? "" : "s") These warnings belong to the sandbox and do not affect the main warning board.
@foreach (var chapter in Model.Chapters) { var chapterScenes = scenesByChapter.GetValueOrDefault(chapter.ChapterID, []); if (!chapterScenes.Any()) { continue; }
Chapter @chapter.ChapterNumber:g @chapter.ChapterTitle
@foreach (var scene in chapterScenes) { var previous = orderedScenes.TakeWhile(x => x.SceneID != scene.SceneID).LastOrDefault(); var next = orderedScenes.SkipWhile(x => x.SceneID != scene.SceneID).Skip(1).FirstOrDefault();
Scene @scene.SceneNumber:g @scene.SceneTitle
@scene.RevisionStatusName @scene.TimeLabel @if (scene.WarningCount > 0) { @scene.WarningCount warning@(scene.WarningCount == 1 ? "" : "s") }

@scene.Summary

@if (!string.IsNullOrWhiteSpace(scene.ThreadLabels)) { Threads: @scene.ThreadLabels } @if (!string.IsNullOrWhiteSpace(scene.AssetLabels)) { Assets: @scene.AssetLabels } @if (!string.IsNullOrWhiteSpace(scene.CharacterLabels)) { Characters: @scene.CharacterLabels } @if (!string.IsNullOrWhiteSpace(scene.LocationLabel)) { Location: @scene.LocationLabel }
@if (previous is not null) {
} @if (next is not null) {
}
Open scene
}
}

Scenario warnings

Validation Notes

@Model.Warnings.Count
@if (!Model.Warnings.Any()) {

Run scenario validation to check this order.

} else {
@foreach (var warning in Model.Warnings) {
Scenario warning @warning.WarningTypeName

@warning.Message

@if (!string.IsNullOrWhiteSpace(warning.Details)) {

@warning.Details

}
}
}