From dd720d6646837f600ce2530b912f60e2da4e3a0b Mon Sep 17 00:00:00 2001 From: Christoph Hagen Date: Sun, 4 May 2025 10:13:59 +0200 Subject: [PATCH] Show drafts in generation view --- .../Generation/GenerationContentView.swift | 48 ++++++++++++------- .../GenerationStringIssuesView.swift | 11 ++--- 2 files changed, 37 insertions(+), 22 deletions(-) diff --git a/CHDataManagement/Views/Generation/GenerationContentView.swift b/CHDataManagement/Views/Generation/GenerationContentView.swift index 1f1817d..c18a867 100644 --- a/CHDataManagement/Views/Generation/GenerationContentView.swift +++ b/CHDataManagement/Views/Generation/GenerationContentView.swift @@ -12,6 +12,14 @@ struct GenerationContentView: View { @Environment(\.dismiss) private var dismiss + var draftPages: Set { + Set(content.pages.filter { $0.isDraft }) + } + + var draftPosts: Set { + Set(content.posts.filter { $0.isDraft }) + } + var body: some View { VStack(alignment: .leading) { Text("Website Generation") @@ -45,7 +53,7 @@ struct GenerationContentView: View { GenerationStringIssuesView( text: "output files", statusWhenNonEmpty: .nominal, - items: $content.results.outputFiles) + items: content.results.outputFiles) GenerationResultsIssueView( text: "\(content.results.imagesToGenerate.count) images", status: .nominal, @@ -57,54 +65,62 @@ struct GenerationContentView: View { GenerationStringIssuesView( text: "external links", statusWhenNonEmpty: .nominal, - items: $content.results.externalLinks) + items: content.results.externalLinks) GenerationStringIssuesView( text: "required files", statusWhenNonEmpty: .nominal, - items: $content.results.requiredFiles) { $0.id } + items: content.results.requiredFiles) { $0.id } GenerationStringIssuesView( text: "external files", statusWhenNonEmpty: .nominal, - items: $content.results.externalFiles) { $0.id } + items: content.results.externalFiles) { $0.id } GenerationStringIssuesView( text: "empty pages", statusWhenNonEmpty: .warning, - items: $content.results.emptyPages) { "\($0.pageId) (\($0.language))" } + items: content.results.emptyPages) { "\($0.pageId) (\($0.language))" } + GenerationStringIssuesView( + text: "draft pages", + statusWhenNonEmpty: .warning, + items: draftPages) { $0.id } + GenerationStringIssuesView( + text: "draft posts", + statusWhenNonEmpty: .warning, + items: draftPosts) { $0.id } GenerationStringIssuesView( text: "additional output files", statusWhenNonEmpty: .warning, - items: $content.results.unusedFilesInOutput) + items: content.results.unusedFilesInOutput) GenerationStringIssuesView( text: "inaccessible files", - items: $content.results.inaccessibleFiles) { $0.id } + items: content.results.inaccessibleFiles) { $0.id } GenerationStringIssuesView( text: "unparsable files", - items: $content.results.unparsableFiles) { $0.id } + items: content.results.unparsableFiles) { $0.id } GenerationStringIssuesView( text: "unsaved output files", - items: $content.results.unsavedOutputFiles) + items: content.results.unsavedOutputFiles) GenerationStringIssuesView( text: "failed image generations", - items: $content.results.failedImages) { $0.outputPath } + items: content.results.failedImages) { $0.outputPath } GenerationStringIssuesView( text: "missing files", - items: $content.results.missingFiles) + items: content.results.missingFiles) GenerationStringIssuesView( text: "missing tags", - items: $content.results.missingTags) + items: content.results.missingTags) GenerationStringIssuesView( text: "missing pages", - items: $content.results.missingPages) + items: content.results.missingPages) GenerationStringIssuesView( text: "invalid commands", - items: $content.results.invalidCommands) + items: content.results.invalidCommands) GenerationStringIssuesView( text: "invalid blocks", - items: $content.results.invalidBlocks) + items: content.results.invalidBlocks) GenerationStringIssuesView( text: "warnings", statusWhenNonEmpty: .warning, - items: $content.results.warnings) + items: content.results.warnings) HorizontalCenter { Button(action: { dismiss() }) { Text("Close") diff --git a/CHDataManagement/Views/Generation/GenerationStringIssuesView.swift b/CHDataManagement/Views/Generation/GenerationStringIssuesView.swift index fd00898..1edc045 100644 --- a/CHDataManagement/Views/Generation/GenerationStringIssuesView.swift +++ b/CHDataManagement/Views/Generation/GenerationStringIssuesView.swift @@ -6,8 +6,7 @@ struct GenerationStringIssuesView: View where T: Hashable { let statusWhenNonEmpty: IssueStatus - @Binding - var items: Set + let items: Set let map: (T) -> String @@ -18,10 +17,10 @@ struct GenerationStringIssuesView: View where T: Hashable { items.isEmpty ? .nominal : statusWhenNonEmpty } - init(text: String, statusWhenNonEmpty: IssueStatus = .error, items: Binding>, map: @escaping (T) -> String) { + init(text: String, statusWhenNonEmpty: IssueStatus = .error, items: Set, map: @escaping (T) -> String) { self.text = text self.statusWhenNonEmpty = statusWhenNonEmpty - self._items = items + self.items = items self.map = map } @@ -56,10 +55,10 @@ struct GenerationStringIssuesView: View where T: Hashable { extension GenerationStringIssuesView where T == String { - init(text: String, statusWhenNonEmpty: IssueStatus = .error, items: Binding>) { + init(text: String, statusWhenNonEmpty: IssueStatus = .error, items: Set) { self.text = text self.statusWhenNonEmpty = statusWhenNonEmpty - self._items = items + self.items = items self.map = { $0 } } }