Phase 9A cleanup
This commit is contained in:
parent
42b5ed371c
commit
b2cfcd08fa
@ -1159,9 +1159,6 @@ public sealed class SceneService(
|
|||||||
model.StorageUsage = model.SceneID == 0 ? null : await storage.GetSceneStorageUsageAsync(model.SceneID);
|
model.StorageUsage = model.SceneID == 0 ? null : await storage.GetSceneStorageUsageAsync(model.SceneID);
|
||||||
model.SceneNoteTypeOptions = ChapterService.ToSelectList(noteTypes, x => x.SceneNoteTypeID, x => x.TypeName);
|
model.SceneNoteTypeOptions = ChapterService.ToSelectList(noteTypes, x => x.SceneNoteTypeID, x => x.TypeName);
|
||||||
model.SceneAttachmentTypeOptions = ChapterService.ToSelectList(attachmentTypes, x => x.SceneAttachmentTypeID, x => x.TypeName);
|
model.SceneAttachmentTypeOptions = ChapterService.ToSelectList(attachmentTypes, x => x.SceneAttachmentTypeID, x => x.TypeName);
|
||||||
model.DraftStatusOptions = DraftStatuses()
|
|
||||||
.Select(x => new SelectListItem(x, x, string.Equals(x, model.Workflow.DraftStatus, StringComparison.OrdinalIgnoreCase)))
|
|
||||||
.ToList();
|
|
||||||
model.PlotLineOptions = ToOptionalSelectList(plotLines, x => x.PlotLineID, x => x.PlotLineName);
|
model.PlotLineOptions = ToOptionalSelectList(plotLines, x => x.PlotLineID, x => x.PlotLineName);
|
||||||
model.PlotThreadOptions = ToOptionalSelectList(plotThreads, x => x.PlotThreadID, x => $"{x.PlotLineName}: {x.ThreadTitle}");
|
model.PlotThreadOptions = ToOptionalSelectList(plotThreads, x => x.PlotThreadID, x => $"{x.PlotLineName}: {x.ThreadTitle}");
|
||||||
model.PlotLineEventOptions = plotLines;
|
model.PlotLineEventOptions = plotLines;
|
||||||
@ -1307,18 +1304,6 @@ public sealed class SceneService(
|
|||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static IReadOnlyList<string> DraftStatuses() =>
|
|
||||||
[
|
|
||||||
"Planned",
|
|
||||||
"Ready To Draft",
|
|
||||||
"Drafting",
|
|
||||||
"Drafted",
|
|
||||||
"Revising",
|
|
||||||
"Polishing",
|
|
||||||
"Complete",
|
|
||||||
"On Hold"
|
|
||||||
];
|
|
||||||
|
|
||||||
private static IReadOnlyList<SelectListItem> ToOptionalSelectList<T>(IEnumerable<T> rows, Func<T, int> value, Func<T, string> text)
|
private static IReadOnlyList<SelectListItem> ToOptionalSelectList<T>(IEnumerable<T> rows, Func<T, int> value, Func<T, string> text)
|
||||||
=> rows.Select(x => new SelectListItem(text(x), value(x).ToString())).ToList();
|
=> rows.Select(x => new SelectListItem(text(x), value(x).ToString())).ToList();
|
||||||
|
|
||||||
@ -3153,7 +3138,6 @@ public sealed class WriterWorkspaceService(
|
|||||||
ProjectOptions = projectRows.Select(x => new SelectListItem(x.ProjectName, x.ProjectID.ToString(), x.ProjectID == projectId)).ToList(),
|
ProjectOptions = projectRows.Select(x => new SelectListItem(x.ProjectName, x.ProjectID.ToString(), x.ProjectID == projectId)).ToList(),
|
||||||
WriteNext = await GetDashboardScenesAsync(projectIds, "WriteNext"),
|
WriteNext = await GetDashboardScenesAsync(projectIds, "WriteNext"),
|
||||||
ContinueWriting = await GetDashboardScenesAsync(projectIds, "ContinueWriting"),
|
ContinueWriting = await GetDashboardScenesAsync(projectIds, "ContinueWriting"),
|
||||||
NeedsAttention = await GetDashboardScenesAsync(projectIds, "NeedsAttention"),
|
|
||||||
RevisionQueue = await GetDashboardScenesAsync(projectIds, "RevisionQueue"),
|
RevisionQueue = await GetDashboardScenesAsync(projectIds, "RevisionQueue"),
|
||||||
PolishingQueue = await GetDashboardScenesAsync(projectIds, "PolishingQueue"),
|
PolishingQueue = await GetDashboardScenesAsync(projectIds, "PolishingQueue"),
|
||||||
StoryHealthReminders = await GetDashboardRemindersAsync(projectIds)
|
StoryHealthReminders = await GetDashboardRemindersAsync(projectIds)
|
||||||
@ -3212,21 +3196,29 @@ public sealed class WriterWorkspaceService(
|
|||||||
RisksOrConcerns = model.RisksOrConcerns
|
RisksOrConcerns = model.RisksOrConcerns
|
||||||
});
|
});
|
||||||
|
|
||||||
public Task SaveSceneWorkflowAsync(SceneWorkflowEditViewModel model) => writerWorkspace.SaveWorkflowAsync(new SceneWorkflow
|
public async Task SaveSceneWorkflowAsync(SceneWorkflowEditViewModel model)
|
||||||
|
{
|
||||||
|
var existing = await writerWorkspace.GetWorkflowAsync(model.SceneID);
|
||||||
|
var priority = model.Priority.HasValue
|
||||||
|
? Math.Clamp(model.Priority.Value, 1, 10)
|
||||||
|
: (int?)null;
|
||||||
|
|
||||||
|
await writerWorkspace.SaveWorkflowAsync(new SceneWorkflow
|
||||||
{
|
{
|
||||||
SceneID = model.SceneID,
|
SceneID = model.SceneID,
|
||||||
DraftStatus = model.DraftStatus,
|
DraftStatus = existing.DraftStatus,
|
||||||
EstimatedWordCount = model.EstimatedWordCount,
|
EstimatedWordCount = model.EstimatedWordCount,
|
||||||
ActualWordCount = model.ActualWordCount,
|
ActualWordCount = model.ActualWordCount,
|
||||||
DraftedDate = model.DraftedDate,
|
DraftedDate = model.DraftedDate,
|
||||||
LastWorkedOn = model.LastWorkedOn,
|
LastWorkedOn = model.LastWorkedOn,
|
||||||
ReadyForDraft = model.ReadyForDraft,
|
ReadyForDraft = existing.ReadyForDraft,
|
||||||
ReadyForRevision = model.ReadyForRevision,
|
ReadyForRevision = existing.ReadyForRevision,
|
||||||
ReadyForPolish = model.ReadyForPolish,
|
ReadyForPolish = existing.ReadyForPolish,
|
||||||
IsBlocked = model.IsBlocked,
|
IsBlocked = model.IsBlocked,
|
||||||
BlockedReason = model.BlockedReason,
|
BlockedReason = model.BlockedReason,
|
||||||
Priority = model.Priority
|
Priority = priority
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public Task<int> SaveNoteAsync(SceneNoteEditViewModel model) => writerWorkspace.SaveNoteAsync(new SceneNote
|
public Task<int> SaveNoteAsync(SceneNoteEditViewModel model) => writerWorkspace.SaveNoteAsync(new SceneNote
|
||||||
{
|
{
|
||||||
|
|||||||
@ -217,7 +217,6 @@ public sealed class SceneEditViewModel
|
|||||||
public SceneAttachmentEditViewModel NewAttachment { get; set; } = new();
|
public SceneAttachmentEditViewModel NewAttachment { get; set; } = new();
|
||||||
public IReadOnlyList<SelectListItem> SceneNoteTypeOptions { get; set; } = [];
|
public IReadOnlyList<SelectListItem> SceneNoteTypeOptions { get; set; } = [];
|
||||||
public IReadOnlyList<SelectListItem> SceneAttachmentTypeOptions { get; set; } = [];
|
public IReadOnlyList<SelectListItem> SceneAttachmentTypeOptions { get; set; } = [];
|
||||||
public IReadOnlyList<SelectListItem> DraftStatusOptions { get; set; } = [];
|
|
||||||
public StorageUsage? StorageUsage { get; set; }
|
public StorageUsage? StorageUsage { get; set; }
|
||||||
|
|
||||||
public int? ReturnProjectID { get; set; }
|
public int? ReturnProjectID { get; set; }
|
||||||
@ -317,7 +316,6 @@ public sealed class WriterDashboardViewModel
|
|||||||
public IReadOnlyList<SelectListItem> ProjectOptions { get; set; } = [];
|
public IReadOnlyList<SelectListItem> ProjectOptions { get; set; } = [];
|
||||||
public IReadOnlyList<WriterDashboardScene> WriteNext { get; set; } = [];
|
public IReadOnlyList<WriterDashboardScene> WriteNext { get; set; } = [];
|
||||||
public IReadOnlyList<WriterDashboardScene> ContinueWriting { get; set; } = [];
|
public IReadOnlyList<WriterDashboardScene> ContinueWriting { get; set; } = [];
|
||||||
public IReadOnlyList<WriterDashboardScene> NeedsAttention { get; set; } = [];
|
|
||||||
public IReadOnlyList<WriterDashboardScene> RevisionQueue { get; set; } = [];
|
public IReadOnlyList<WriterDashboardScene> RevisionQueue { get; set; } = [];
|
||||||
public IReadOnlyList<WriterDashboardScene> PolishingQueue { get; set; } = [];
|
public IReadOnlyList<WriterDashboardScene> PolishingQueue { get; set; } = [];
|
||||||
public IReadOnlyList<StoryBibleAttentionItem> StoryHealthReminders { get; set; } = [];
|
public IReadOnlyList<StoryBibleAttentionItem> StoryHealthReminders { get; set; } = [];
|
||||||
|
|||||||
@ -1208,10 +1208,6 @@
|
|||||||
<input type="hidden" name="ReturnProjectID" value="@Model.ReturnProjectID" />
|
<input type="hidden" name="ReturnProjectID" value="@Model.ReturnProjectID" />
|
||||||
<input type="hidden" name="ReturnBookID" value="@Model.ReturnBookID" />
|
<input type="hidden" name="ReturnBookID" value="@Model.ReturnBookID" />
|
||||||
<div class="row g-2">
|
<div class="row g-2">
|
||||||
<input type="hidden" name="DraftStatus" value="@Model.Workflow.DraftStatus" />
|
|
||||||
<input type="hidden" name="ReadyForDraft" value="false" />
|
|
||||||
<input type="hidden" name="ReadyForRevision" value="false" />
|
|
||||||
<input type="hidden" name="ReadyForPolish" value="false" />
|
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<label class="form-label" for="Priority">Priority</label>
|
<label class="form-label" for="Priority">Priority</label>
|
||||||
<div class="writer-priority-control">
|
<div class="writer-priority-control">
|
||||||
|
|||||||
@ -77,7 +77,7 @@
|
|||||||
<article class="writer-queue-card">
|
<article class="writer-queue-card">
|
||||||
<div class="writer-queue-title">
|
<div class="writer-queue-title">
|
||||||
<h3>Scene @scene.SceneNumber: @scene.SceneTitle</h3>
|
<h3>Scene @scene.SceneNumber: @scene.SceneTitle</h3>
|
||||||
<span class="status-pill">@(string.IsNullOrWhiteSpace(scene.RevisionStatusName) ? scene.DraftStatus : scene.RevisionStatusName)</span>
|
<span class="status-pill">@scene.RevisionStatusName</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="story-bible-meta">
|
<div class="story-bible-meta">
|
||||||
@if (scene.Priority.HasValue) { <span>Priority @scene.Priority</span> }
|
@if (scene.Priority.HasValue) { <span>Priority @scene.Priority</span> }
|
||||||
|
|||||||
@ -40,17 +40,6 @@
|
|||||||
<partial name="_WriterSceneQueue" model="Model.ContinueWriting" />
|
<partial name="_WriterSceneQueue" model="Model.ContinueWriting" />
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="writer-dashboard-panel">
|
|
||||||
<div class="story-bible-section-heading">
|
|
||||||
<div>
|
|
||||||
<p class="eyebrow">Practical blockers</p>
|
|
||||||
<h2>Needs Attention <help-icon key="workspace.practicalBlockers" /></h2>
|
|
||||||
</div>
|
|
||||||
<span class="soft-count">@Model.NeedsAttention.Count scenes</span>
|
|
||||||
</div>
|
|
||||||
<partial name="_WriterSceneQueue" model="Model.NeedsAttention" />
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="writer-dashboard-panel">
|
<section class="writer-dashboard-panel">
|
||||||
<div class="story-bible-section-heading">
|
<div class="story-bible-section-heading">
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@ -15,7 +15,7 @@ else
|
|||||||
<span class="eyebrow">@scene.BookTitle / Chapter @scene.ChapterNumber</span>
|
<span class="eyebrow">@scene.BookTitle / Chapter @scene.ChapterNumber</span>
|
||||||
<h3>Scene @scene.SceneNumber: @scene.SceneTitle</h3>
|
<h3>Scene @scene.SceneNumber: @scene.SceneTitle</h3>
|
||||||
</div>
|
</div>
|
||||||
<span class="status-pill">@(string.IsNullOrWhiteSpace(scene.RevisionStatusName) ? scene.DraftStatus : scene.RevisionStatusName)</span>
|
<span class="status-pill">@scene.RevisionStatusName</span>
|
||||||
</div>
|
</div>
|
||||||
@if (!string.IsNullOrWhiteSpace(scene.Summary))
|
@if (!string.IsNullOrWhiteSpace(scene.Summary))
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user