|
@@ -31,6 +31,24 @@ struct ProjectPanelView: View {
|
|
|
}
|
|
}
|
|
|
.help("New Task")
|
|
.help("New Task")
|
|
|
.padding(.trailing, 10)
|
|
.padding(.trailing, 10)
|
|
|
|
|
+ if move {
|
|
|
|
|
+ Label("", systemImage: "arrow.up.arrow.down")
|
|
|
|
|
+ .foregroundStyle(.red)
|
|
|
|
|
+ .font(.title2)
|
|
|
|
|
+ .help("Re-ordering mode is enabled, text fields will be unresponsive")
|
|
|
|
|
+ }
|
|
|
|
|
+ if !taskFilter.isEmpty {
|
|
|
|
|
+ Label("", systemImage: "text.magnifyingglass")
|
|
|
|
|
+ .foregroundStyle(.blue)
|
|
|
|
|
+ .font(.title2)
|
|
|
|
|
+ .help("Only showing text matching '\(taskFilter)'")
|
|
|
|
|
+ }
|
|
|
|
|
+ if !statuses.all {
|
|
|
|
|
+ Label("", systemImage: "exclamationmark.magnifyingglass")
|
|
|
|
|
+ .foregroundStyle(.blue)
|
|
|
|
|
+ .font(.title2)
|
|
|
|
|
+ .help(statuses.description)
|
|
|
|
|
+ }
|
|
|
Button {
|
|
Button {
|
|
|
showDialogue = !showDialogue
|
|
showDialogue = !showDialogue
|
|
|
} label: {
|
|
} label: {
|
|
@@ -94,14 +112,16 @@ struct ProjectPanelView: View {
|
|
|
|
|
|
|
|
private func selected<T : Ordered & Filterable>(_ items: Binding<[T]>) -> [Binding<T>] {
|
|
private func selected<T : Ordered & Filterable>(_ items: Binding<[T]>) -> [Binding<T>] {
|
|
|
return items.sorted(by: T.less).filter({
|
|
return items.sorted(by: T.less).filter({
|
|
|
- statuses.test($0.wrappedValue.status) &&
|
|
|
|
|
- (taskFilter.isEmpty || $0.wrappedValue.containsText(taskFilter))
|
|
|
|
|
|
|
+ let value = $0.wrappedValue
|
|
|
|
|
+ return value.name.isEmpty ||
|
|
|
|
|
+ (statuses.test(value.status) &&
|
|
|
|
|
+ (taskFilter.isEmpty || value.containsText(taskFilter)))
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private func addItem() {
|
|
private func addItem() {
|
|
|
withAnimation {
|
|
withAnimation {
|
|
|
- let newTask = Task(name: "New Task", parent: item)
|
|
|
|
|
|
|
+ let newTask = Task(parent: item)
|
|
|
modelContext.insert(newTask)
|
|
modelContext.insert(newTask)
|
|
|
item.tasks.append(newTask)
|
|
item.tasks.append(newTask)
|
|
|
}
|
|
}
|