Phase 12D: Continuity Explorer Scene Navigation Integration.
This commit is contained in:
parent
c7e02870cf
commit
9cc20ea266
@ -2638,6 +2638,7 @@ public sealed class StoryStateService(
|
|||||||
LocationID = latest.LocationID,
|
LocationID = latest.LocationID,
|
||||||
CurrentLocation = latest.LocationPath ?? latest.LocationName ?? "Unknown",
|
CurrentLocation = latest.LocationPath ?? latest.LocationName ?? "Unknown",
|
||||||
State = latest.SceneID == currentSceneId ? "Explicit" : "Inferred",
|
State = latest.SceneID == currentSceneId ? "Explicit" : "Inferred",
|
||||||
|
LastConfirmedSceneID = latest.SceneID,
|
||||||
LastConfirmed = SceneLabel(latest.SceneNumber, latest.SceneTitle)
|
LastConfirmed = SceneLabel(latest.SceneNumber, latest.SceneTitle)
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
@ -2684,6 +2685,7 @@ public sealed class StoryStateService(
|
|||||||
LocationID = latest.LocationID,
|
LocationID = latest.LocationID,
|
||||||
CurrentHolderOrLocation = latest.Label,
|
CurrentHolderOrLocation = latest.Label,
|
||||||
State = latest.SceneID == currentSceneId ? "Explicit" : "Inferred",
|
State = latest.SceneID == currentSceneId ? "Explicit" : "Inferred",
|
||||||
|
LastConfirmedSceneID = latest.SceneID,
|
||||||
LastConfirmed = scenesById.TryGetValue(latest.SceneID, out var scene)
|
LastConfirmed = scenesById.TryGetValue(latest.SceneID, out var scene)
|
||||||
? SceneLabel(scene.SceneNumber, scene.SceneTitle)
|
? SceneLabel(scene.SceneNumber, scene.SceneTitle)
|
||||||
: "Unknown"
|
: "Unknown"
|
||||||
|
|||||||
@ -251,6 +251,7 @@ public sealed class CharacterStoryStateViewModel
|
|||||||
public int? LocationID { get; set; }
|
public int? LocationID { get; set; }
|
||||||
public string CurrentLocation { get; set; } = "Unknown";
|
public string CurrentLocation { get; set; } = "Unknown";
|
||||||
public string State { get; set; } = "Unknown";
|
public string State { get; set; } = "Unknown";
|
||||||
|
public int? LastConfirmedSceneID { get; set; }
|
||||||
public string LastConfirmed { get; set; } = "Never";
|
public string LastConfirmed { get; set; } = "Never";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,6 +262,7 @@ public sealed class AssetStoryStateViewModel
|
|||||||
public int? LocationID { get; set; }
|
public int? LocationID { get; set; }
|
||||||
public string CurrentHolderOrLocation { get; set; } = "Unknown";
|
public string CurrentHolderOrLocation { get; set; } = "Unknown";
|
||||||
public string State { get; set; } = "Unknown";
|
public string State { get; set; } = "Unknown";
|
||||||
|
public int? LastConfirmedSceneID { get; set; }
|
||||||
public string LastConfirmed { get; set; } = "Never";
|
public string LastConfirmed { get; set; } = "Never";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -181,7 +181,21 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
@foreach (var row in Model.StoryState.Characters)
|
@foreach (var row in Model.StoryState.Characters)
|
||||||
{
|
{
|
||||||
<tr><td>@row.CharacterName</td><td>@row.CurrentLocation</td><td><span class="badge @StateBadgeClass(row.State)">@row.State</span></td><td>@row.LastConfirmed</td></tr>
|
<tr>
|
||||||
|
<td>@row.CharacterName</td>
|
||||||
|
<td>@row.CurrentLocation</td>
|
||||||
|
<td><span class="badge @StateBadgeClass(row.State)">@row.State</span></td>
|
||||||
|
<td>
|
||||||
|
@if (row.LastConfirmedSceneID.HasValue)
|
||||||
|
{
|
||||||
|
<a asp-controller="Timeline" asp-action="Index" asp-route-projectId="@Model.Project.ProjectID" asp-route-selectedSceneId="@row.LastConfirmedSceneID">@row.LastConfirmed</a>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
@row.LastConfirmed
|
||||||
|
}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
}
|
}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
@ -197,7 +211,21 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
@foreach (var row in Model.StoryState.Assets)
|
@foreach (var row in Model.StoryState.Assets)
|
||||||
{
|
{
|
||||||
<tr><td>@row.AssetName</td><td>@row.CurrentHolderOrLocation</td><td><span class="badge @StateBadgeClass(row.State)">@row.State</span></td><td>@row.LastConfirmed</td></tr>
|
<tr>
|
||||||
|
<td>@row.AssetName</td>
|
||||||
|
<td>@row.CurrentHolderOrLocation</td>
|
||||||
|
<td><span class="badge @StateBadgeClass(row.State)">@row.State</span></td>
|
||||||
|
<td>
|
||||||
|
@if (row.LastConfirmedSceneID.HasValue)
|
||||||
|
{
|
||||||
|
<a asp-controller="Timeline" asp-action="Index" asp-route-projectId="@Model.Project.ProjectID" asp-route-selectedSceneId="@row.LastConfirmedSceneID">@row.LastConfirmed</a>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
@row.LastConfirmed
|
||||||
|
}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
}
|
}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
@ -271,7 +299,7 @@ else if (Model.Filter.DisplayMode == "Journey")
|
|||||||
{
|
{
|
||||||
<td>@row.ChapterDisplayName</td>
|
<td>@row.ChapterDisplayName</td>
|
||||||
}
|
}
|
||||||
<td>@row.SceneDisplayName</td>
|
<td><a asp-controller="Timeline" asp-action="Index" asp-route-projectId="@Model.Project.ProjectID" asp-route-selectedSceneId="@row.SceneID">@row.SceneDisplayName</a></td>
|
||||||
<td>@row.Location</td>
|
<td>@row.Location</td>
|
||||||
</tr>
|
</tr>
|
||||||
}
|
}
|
||||||
@ -311,7 +339,7 @@ else if (Model.Filter.DisplayMode == "Journey")
|
|||||||
{
|
{
|
||||||
<td>@row.ChapterDisplayName</td>
|
<td>@row.ChapterDisplayName</td>
|
||||||
}
|
}
|
||||||
<td>@row.SceneDisplayName</td>
|
<td><a asp-controller="Timeline" asp-action="Index" asp-route-projectId="@Model.Project.ProjectID" asp-route-selectedSceneId="@row.SceneID">@row.SceneDisplayName</a></td>
|
||||||
<td>@row.HolderOrLocation</td>
|
<td>@row.HolderOrLocation</td>
|
||||||
</tr>
|
</tr>
|
||||||
}
|
}
|
||||||
@ -363,7 +391,7 @@ else
|
|||||||
{
|
{
|
||||||
<td>@row.ChapterDisplayName</td>
|
<td>@row.ChapterDisplayName</td>
|
||||||
}
|
}
|
||||||
<td>@row.SceneDisplayName</td>
|
<td><a asp-controller="Timeline" asp-action="Index" asp-route-projectId="@Model.Project.ProjectID" asp-route-selectedSceneId="@row.SceneID">@row.SceneDisplayName</a></td>
|
||||||
<td>
|
<td>
|
||||||
@if (!row.Characters.Any())
|
@if (!row.Characters.Any())
|
||||||
{
|
{
|
||||||
@ -379,7 +407,17 @@ else
|
|||||||
<span class="badge @StateBadgeClass(character.StateType)">@character.StateType</span>
|
<span class="badge @StateBadgeClass(character.StateType)">@character.StateType</span>
|
||||||
@if (!string.IsNullOrWhiteSpace(character.LastConfirmedSceneDisplayName))
|
@if (!string.IsNullOrWhiteSpace(character.LastConfirmedSceneDisplayName))
|
||||||
{
|
{
|
||||||
<small class="text-muted d-block">Last confirmed: @character.LastConfirmedSceneDisplayName</small>
|
<small class="text-muted d-block">
|
||||||
|
Last confirmed:
|
||||||
|
@if (character.LastConfirmedSceneID.HasValue)
|
||||||
|
{
|
||||||
|
<a asp-controller="Timeline" asp-action="Index" asp-route-projectId="@Model.Project.ProjectID" asp-route-selectedSceneId="@character.LastConfirmedSceneID">@character.LastConfirmedSceneDisplayName</a>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
@character.LastConfirmedSceneDisplayName
|
||||||
|
}
|
||||||
|
</small>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
@ -405,7 +443,17 @@ else
|
|||||||
}
|
}
|
||||||
@if (!string.IsNullOrWhiteSpace(asset.LastConfirmedSceneDisplayName))
|
@if (!string.IsNullOrWhiteSpace(asset.LastConfirmedSceneDisplayName))
|
||||||
{
|
{
|
||||||
<small class="text-muted d-block">Last confirmed: @asset.LastConfirmedSceneDisplayName</small>
|
<small class="text-muted d-block">
|
||||||
|
Last confirmed:
|
||||||
|
@if (asset.LastConfirmedSceneID.HasValue)
|
||||||
|
{
|
||||||
|
<a asp-controller="Timeline" asp-action="Index" asp-route-projectId="@Model.Project.ProjectID" asp-route-selectedSceneId="@asset.LastConfirmedSceneID">@asset.LastConfirmedSceneDisplayName</a>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
@asset.LastConfirmedSceneDisplayName
|
||||||
|
}
|
||||||
|
</small>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user