@location.LocationPath
Characters: @(location.CharactersPresent.Any() ? string.Join(", ", location.CharactersPresent) : "None")
Assets: @(location.AssetsPresent.Any() ? string.Join(", ", location.AssetsPresent) : "None")
@model ContinuityExplorerViewModel
@{
ViewData["Title"] = $"Continuity Explorer - {Model.Project.ProjectName}";
ViewData["ProjectSection"] = "Continuity Explorer";
}
@functions {
private static string StateBadgeClass(string state) => state switch
{
"Explicit" => "bg-success",
"Inferred" => "bg-secondary",
_ => "bg-warning text-dark"
};
private static string WarningBadgeClass(string severity) => severity switch
{
"Critical" => "bg-danger",
"Warning" => "bg-warning text-dark",
_ => "bg-info"
};
private bool IsEntitySelected(string entityType) =>
Model.Filter.EntityTypes.Contains(entityType, StringComparer.OrdinalIgnoreCase);
}
Continuity
Investigate where characters, assets, and locations stand across the story.
No matching continuity information found.
} else { @if (Model.Filter.IncludeCharacters) {| Character | Current Location | State | Last Confirmed |
|---|---|---|---|
| @row.CharacterName | @row.CurrentLocation | @row.State | @if (row.LastConfirmedSceneID.HasValue) { @row.LastConfirmed } else { @row.LastConfirmed } |
| Asset | Holder / Location | State | Last Confirmed |
|---|---|---|---|
| @row.AssetName | @row.CurrentHolderOrLocation | @row.State | @if (row.LastConfirmedSceneID.HasValue) { @row.LastConfirmed } else { @row.LastConfirmed } |
No matching location presence found.
} else {Characters: @(location.CharactersPresent.Any() ? string.Join(", ", location.CharactersPresent) : "None")
Assets: @(location.AssetsPresent.Any() ? string.Join(", ", location.AssetsPresent) : "None")
No movement recorded.
} else { @foreach (var group in Model.CharacterJourney.GroupBy(x => new { x.CharacterID, x.CharacterName })) {| Book | } @if (Model.ShowChapterContext) {Chapter | }Scene | Location |
|---|---|---|---|
| @row.BookDisplayName | } @if (Model.ShowChapterContext) {@row.ChapterDisplayName | }@row.SceneDisplayName | @row.Location |
| Book | } @if (Model.ShowChapterContext) {Chapter | }Scene | Holder / Location |
|---|---|---|---|
| @row.BookDisplayName | } @if (Model.ShowChapterContext) {@row.ChapterDisplayName | }@row.SceneDisplayName | @row.HolderOrLocation |
No matching continuity information found.
} else {| Location | @if (Model.ShowBookContext) {Book | } @if (Model.ShowChapterContext) {Chapter | }Scene | Characters Present | Assets Present |
|---|---|---|---|---|---|
| @row.LocationName | @if (Model.ShowBookContext) {@row.BookDisplayName | } @if (Model.ShowChapterContext) {@row.ChapterDisplayName | }@row.SceneDisplayName |
@if (!row.Characters.Any())
{
None
}
else
{
@foreach (var character in row.Characters)
{
}
@character.EntityName
@character.StateType
@if (!string.IsNullOrWhiteSpace(character.LastConfirmedSceneDisplayName))
{
Last confirmed:
@if (character.LastConfirmedSceneID.HasValue)
{
@character.LastConfirmedSceneDisplayName
}
else
{
@character.LastConfirmedSceneDisplayName
}
}
}
|
@if (!row.Assets.Any())
{
None
}
else
{
@foreach (var asset in row.Assets)
{
}
@asset.EntityName
@asset.StateType
@if (!string.IsNullOrWhiteSpace(asset.Note))
{
@asset.Note
}
@if (!string.IsNullOrWhiteSpace(asset.LastConfirmedSceneDisplayName))
{
Last confirmed:
@if (asset.LastConfirmedSceneID.HasValue)
{
@asset.LastConfirmedSceneDisplayName
}
else
{
@asset.LastConfirmedSceneDisplayName
}
}
}
|