@model WritingSchedulePreviewViewModel @{ ViewData["Title"] = "Schedule Preview"; var message = TempData["SchedulePreviewMessage"] as string; var error = TempData["SchedulePreviewError"] as string; }

Validation

Schedule Preview

Generated writing schedule items.

@if (!string.IsNullOrWhiteSpace(message)) {
@message
} @if (!string.IsNullOrWhiteSpace(error)) {
@error
} @if (!Model.Plans.Any()) {

No writing plans found.

} else {

Plan

Writing Plan Selection

@foreach (var plan in Model.Plans) { }
Plan Name Project Book Deadline Date Active
@plan.PlanName @plan.ProjectName @(plan.BookTitle ?? "All Books") @plan.DeadlineDate.ToString("dd MMM yyyy") @(plan.IsActive ? "Yes" : "No") @if (plan.WritingPlanID == Model.SelectedWritingPlanID) { Selected } else { Select }
@if (Model.SelectedPlan is not null) { @if (Model.SelectedPlanRequiresRebalance) {
Schedule requires attention.
}
@if (Model.SelectedPlanRequiresRebalance) { Preview Rebalance }
@if (Model.RebalancePreview is not null) {

Rebalance

Rebalance Preview

Current Finish Date

@(Model.RebalancePreview.OriginalFinishDate?.ToString("dd MMM yyyy") ?? "-")

Proposed Finish Date

@(Model.RebalancePreview.ProposedFinishDate?.ToString("dd MMM yyyy") ?? "-")

Tasks Affected

@Model.RebalancePreview.TasksAffected
@if (!Model.RebalancePreview.Changes.Any()) {

No planned tasks need new dates.

} else {
@foreach (var change in Model.RebalancePreview.Changes) { }
Task Type Scene Current Date Proposed Date
@change.TaskType @change.SceneName @change.CurrentDate.ToString("dd MMM yyyy") @change.ProposedDate.ToString("dd MMM yyyy")
}
Cancel
}

Summary

Schedule Summary

Total Tasks

@Model.TotalTasks

Draft Tasks

@Model.DraftTasks

Revision Tasks

@Model.RevisionTasks

Polish Tasks

@Model.PolishTasks

Total Estimated Minutes

@Model.TotalEstimatedMinutes

Projected Finish Date

@(Model.ProjectedFinishDate?.ToString("dd MMM yyyy") ?? "-")

Items

Schedule Preview Table

@Model.Items.Count items
@if (!Model.Items.Any()) {

No schedule generated.

} else {
@foreach (var item in Model.Items) { }
Scheduled Date Task Type Book Chapter Scene Priority Estimated Minutes Target Words Schedule Status Blocked
@item.ScheduledDate.ToString("dd MMM yyyy") @item.TaskType @item.BookTitle Chapter @item.ChapterNumber: @item.ChapterTitle Scene @item.SceneNumber: @item.SceneTitle @(item.Priority?.ToString() ?? "-") @(item.EstimatedMinutes?.ToString() ?? "-") @(item.TargetWords?.ToString() ?? "-") @item.ScheduleStatus @(item.IsBlocked ? "Yes" : "No")
}
} }