@model SceneEditViewModel @{ var purposeLabels = Model.ScenePurposeTypes .Where(x => Model.SelectedPurposeTypeIds.Contains(x.ScenePurposeTypeID)) .Select(x => x.PurposeName) .ToList(); var threadCount = Model.ThreadEvents.Count; var dependencyCount = Model.DependenciesThisSceneNeeds.Count + Model.DependenciesNeedingThisScene.Count; }

Story

Purpose and structure

Purpose @if (purposeLabels.Any()) {
@foreach (var purpose in purposeLabels) { @purpose }
} else {

No purpose selected yet.

} @if (!string.IsNullOrWhiteSpace(Model.ScenePurposeNotes)) {

@Model.ScenePurposeNotes

}
Outcome

@(string.IsNullOrWhiteSpace(Model.SceneOutcomeNotes) ? "No outcome has been captured yet." : Model.SceneOutcomeNotes)

Plot threads

@threadCount thread event@(threadCount == 1 ? "" : "s") in this scene.

Dependencies

@dependencyCount scene dependenc@(dependencyCount == 1 ? "y" : "ies") attached.

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

No active scene metrics are configured.

} else {
@foreach (var metric in Model.Metrics) { var effectiveMin = metric.MaxValue > metric.MinValue ? metric.MinValue : 0; var effectiveMax = metric.MaxValue > metric.MinValue ? metric.MaxValue : 10; var clampedValue = Math.Min(effectiveMax, Math.Max(effectiveMin, metric.Value)); var percent = effectiveMax == 0 ? 0 : (int)Math.Round(((double)clampedValue / effectiveMax) * 100);
@metric.MetricName
@metric.Value
}
}