@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 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 | @row.LastConfirmed |
| Asset | Holder / Location | State | Last Confirmed |
|---|---|---|---|
| @row.AssetName | @row.CurrentHolderOrLocation | @row.State | @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 })) {| Scene | Location |
|---|---|
| @row.SceneLabel | @row.Location |
| Scene | Holder / Location |
|---|---|
| @row.SceneLabel | @row.HolderOrLocation |
No matching continuity information found.
} else {| Location | Scene | Characters Present | Assets Present |
|---|---|---|---|
| @row.LocationName | @row.SceneLabel | @row.CharactersPresent | @row.AssetsPresent |