@model WarningDashboardViewModel @{ ViewData["Title"] = "Continuity Warnings"; ViewData["ProjectSection"] = "Warnings"; } @functions { private static string SeverityBadgeClass(string severity) => severity switch { "Critical" => "bg-danger", "Warning" => "bg-warning text-dark", _ => "bg-info text-dark" }; }

Continuity

@Model.Project.ProjectName

@if (Model.BookID.HasValue) {
}
@if (Model.LastValidationSummary is not null) {
Validation complete. @Model.LastValidationSummary.ErrorCount errors @Model.LastValidationSummary.WarningCount warnings @Model.LastValidationSummary.InfoCount info
}

By severity

@foreach (var count in Model.CountsBySeverity) {
@count.Key @count.Value
}

By type

@foreach (var count in Model.CountsByType.Take(8)) {
@count.Key @count.Value
}

Warnings

@if (!Model.ProjectWarnings.Any()) {

@(Model.HasAnyWarnings ? "No warnings match the current filters." : "No project warnings detected.")

} else {
@foreach (var warning in Model.ProjectWarnings) { }
Severity Category Warning Type Message Book Chapter Scene Status Actions
@warning.Severity @warning.Category @warning.WarningTypeDisplayName
@warning.Message
@if (!string.IsNullOrWhiteSpace(warning.Details)) { @warning.Details } @if (!string.IsNullOrWhiteSpace(warning.KnowledgeTitle)) { Knowledge: @warning.KnowledgeTitle } @if (warning.EstablishedSceneId.HasValue) { Established: @warning.EstablishedSceneDisplayName } @if (warning.ReferencedSceneId.HasValue) { Earlier reference: @warning.ReferencedSceneDisplayName } @if (warning.IsAcknowledged && !string.IsNullOrWhiteSpace(warning.AcknowledgementNotes)) { Note: @warning.AcknowledgementNotes }
@(string.IsNullOrWhiteSpace(warning.BookDisplayName) ? "Project" : warning.BookDisplayName) @(string.IsNullOrWhiteSpace(warning.ChapterDisplayName) ? "-" : warning.ChapterDisplayName) @if (warning.SceneID.HasValue) { @warning.SceneDisplayName } else { Project-wide } @if (warning.IsDismissed) { Dismissed } else if (warning.IsIntentional || warning.IsAcknowledged) { Acknowledged } else { Active } @if (warning.Source == "Persisted" && warning.ContinuityWarningID.HasValue) { @if (warning.IsDismissed || warning.IsIntentional) {
} else {
} } else { @if (warning.IsAcknowledged) {
} else {
} }
}