feat: add red colors to unknown status\priority

This commit is contained in:
2026-07-19 09:37:36 +05:00
parent 93b299e6ad
commit 184f1c4d1e
4 changed files with 30 additions and 7 deletions
+1
View File
@@ -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 };
+12
View File
@@ -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();
+10 -5
View File
@@ -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] : [],
}); });
} }
+7 -2
View File
@@ -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,
);
} }
} }