feat: add red colors to unknown status\priority
This commit is contained in:
@@ -12,6 +12,7 @@ export type KanbanOutboundMessage =
|
|||||||
scopeFilter: KanbanScopeFilter;
|
scopeFilter: KanbanScopeFilter;
|
||||||
shownHiddenColumns: TaskStatus[];
|
shownHiddenColumns: TaskStatus[];
|
||||||
defaultHiddenStatuses: TaskStatus[];
|
defaultHiddenStatuses: TaskStatus[];
|
||||||
|
dangerStatuses: TaskStatus[];
|
||||||
availableScopes: TaskScope[];
|
availableScopes: TaskScope[];
|
||||||
}
|
}
|
||||||
| { variant: "error"; error: AppError };
|
| { variant: "error"; error: AppError };
|
||||||
|
|||||||
@@ -116,6 +116,13 @@ export function getTaskKanbanHtml(
|
|||||||
color: var(--vscode-button-foreground);
|
color: var(--vscode-button-foreground);
|
||||||
border-color: transparent;
|
border-color: transparent;
|
||||||
}
|
}
|
||||||
|
#visibility-bar button.danger {
|
||||||
|
border-color: var(--vscode-errorForeground);
|
||||||
|
border-width: 2px;
|
||||||
|
}
|
||||||
|
#visibility-bar button.danger.shown {
|
||||||
|
background: var(--vscode-errorForeground);
|
||||||
|
}
|
||||||
#status-line {
|
#status-line {
|
||||||
font-size: 0.85em;
|
font-size: 0.85em;
|
||||||
opacity: 0.85;
|
opacity: 0.85;
|
||||||
@@ -210,6 +217,7 @@ export function getTaskKanbanHtml(
|
|||||||
let scopeFilter = "all";
|
let scopeFilter = "all";
|
||||||
let shownHiddenColumns = [];
|
let shownHiddenColumns = [];
|
||||||
let defaultHiddenStatuses = [];
|
let defaultHiddenStatuses = [];
|
||||||
|
let dangerStatuses = [];
|
||||||
let availableScopes = [];
|
let availableScopes = [];
|
||||||
let dragTaskId = null;
|
let dragTaskId = null;
|
||||||
|
|
||||||
@@ -269,6 +277,9 @@ export function getTaskKanbanHtml(
|
|||||||
if (shownHiddenColumns.indexOf(status) >= 0) {
|
if (shownHiddenColumns.indexOf(status) >= 0) {
|
||||||
btn.classList.add("shown");
|
btn.classList.add("shown");
|
||||||
}
|
}
|
||||||
|
if (dangerStatuses.indexOf(status) >= 0) {
|
||||||
|
btn.classList.add("danger");
|
||||||
|
}
|
||||||
btn.addEventListener("click", () => {
|
btn.addEventListener("click", () => {
|
||||||
post({ variant: "toggleHiddenColumn", status: status });
|
post({ variant: "toggleHiddenColumn", status: status });
|
||||||
});
|
});
|
||||||
@@ -374,6 +385,7 @@ export function getTaskKanbanHtml(
|
|||||||
scopeFilter = message.scopeFilter || "all";
|
scopeFilter = message.scopeFilter || "all";
|
||||||
shownHiddenColumns = message.shownHiddenColumns || [];
|
shownHiddenColumns = message.shownHiddenColumns || [];
|
||||||
defaultHiddenStatuses = message.defaultHiddenStatuses || [];
|
defaultHiddenStatuses = message.defaultHiddenStatuses || [];
|
||||||
|
dangerStatuses = message.dangerStatuses || [];
|
||||||
availableScopes = message.availableScopes || [];
|
availableScopes = message.availableScopes || [];
|
||||||
setStatus("");
|
setStatus("");
|
||||||
render();
|
render();
|
||||||
|
|||||||
@@ -278,10 +278,12 @@ export class TaskKanbanPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#postState(): void {
|
#postState(): void {
|
||||||
const board = buildKanbanBoard(
|
const filtered = this.#filteredTasks().map((item) => item.task);
|
||||||
this.#filteredTasks().map((item) => item.task),
|
const board = buildKanbanBoard(filtered, {
|
||||||
{ shownHiddenColumns: this.#shownHiddenColumns },
|
shownHiddenColumns: this.#shownHiddenColumns,
|
||||||
);
|
});
|
||||||
|
|
||||||
|
const hasUnknown = filtered.some((t) => t.status === TaskStatus.UNKNOWN);
|
||||||
|
|
||||||
this.#post({
|
this.#post({
|
||||||
variant: "state",
|
variant: "state",
|
||||||
@@ -289,9 +291,12 @@ export class TaskKanbanPanel {
|
|||||||
scopeFilter: this.#scopeFilter,
|
scopeFilter: this.#scopeFilter,
|
||||||
shownHiddenColumns: this.#shownHiddenColumns,
|
shownHiddenColumns: this.#shownHiddenColumns,
|
||||||
defaultHiddenStatuses: TASK_STATUS_ORDER.filter(
|
defaultHiddenStatuses: TASK_STATUS_ORDER.filter(
|
||||||
(s) => TASK_STATUS_META[s].defaultHidden,
|
(s) =>
|
||||||
|
TASK_STATUS_META[s].defaultHidden &&
|
||||||
|
(s !== TaskStatus.UNKNOWN || hasUnknown),
|
||||||
),
|
),
|
||||||
availableScopes: this.#availableScopes(),
|
availableScopes: this.#availableScopes(),
|
||||||
|
dangerStatuses: hasUnknown ? [TaskStatus.UNKNOWN] : [],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ import { resolveTaskLocations } from "@/commands/resolveTaskLocations";
|
|||||||
import { Task } from "@/model/task";
|
import { Task } from "@/model/task";
|
||||||
import { LocatedTask, TaskLocation } from "@/model/taskLocation";
|
import { LocatedTask, TaskLocation } from "@/model/taskLocation";
|
||||||
import {
|
import {
|
||||||
|
TaskStatus,
|
||||||
TASK_STATUS_META,
|
TASK_STATUS_META,
|
||||||
TASK_STATUS_ORDER,
|
TASK_STATUS_ORDER,
|
||||||
type TaskStatus,
|
|
||||||
} from "@/model/taskStatus";
|
} from "@/model/taskStatus";
|
||||||
import { IConfigProvider, ITaskRepository } from "@/ports";
|
import { IConfigProvider, ITaskRepository } from "@/ports";
|
||||||
import { TASK_SCOPE_LABELS, TASK_STATUS_LABELS } from "@/ui/taskLabels";
|
import { TASK_SCOPE_LABELS, TASK_STATUS_LABELS } from "@/ui/taskLabels";
|
||||||
@@ -47,7 +47,12 @@ class TaskGroupTreeItem extends vscode.TreeItem {
|
|||||||
this.description = `(${tasks.length})`;
|
this.description = `(${tasks.length})`;
|
||||||
this.id = `group-${location.scope}-${status}`;
|
this.id = `group-${location.scope}-${status}`;
|
||||||
this.contextValue = "taskGroup";
|
this.contextValue = "taskGroup";
|
||||||
this.iconPath = new vscode.ThemeIcon(TASK_STATUS_META[status].icon);
|
this.iconPath = new vscode.ThemeIcon(
|
||||||
|
TASK_STATUS_META[status].icon,
|
||||||
|
status === TaskStatus.UNKNOWN
|
||||||
|
? new vscode.ThemeColor("charts.red")
|
||||||
|
: undefined,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user