From: Scott Worley Date: Thu, 27 Jan 2022 07:49:58 +0000 (-0800) Subject: Views: Show tasks by state X-Git-Url: http://git.scottworley.com/vopamoi/commitdiff_plain/868667c1142d78afe4955a6f394e9cb661eedc54?ds=inline;hp=ada060d76e8d158ee56aee89402a674e3a82be9f Views: Show tasks by state --- diff --git a/vopamoi.ts b/vopamoi.ts index 94c26e6..3c59226 100644 --- a/vopamoi.ts +++ b/vopamoi.ts @@ -177,6 +177,7 @@ const UI = { }; function BrowserUI() { + var currentViewState = "todo"; return { addTask: function (event: KeyboardEvent) { const input = document.getElementById("taskName"); @@ -223,7 +224,7 @@ function BrowserUI() { firstVisibleTask: function () { for (const task of document.getElementsByClassName("task")) { - if (task instanceof HTMLElement && task.getAttribute("data-state")! === "todo") { + if (task instanceof HTMLElement && task.getAttribute("data-state") === currentViewState) { return task; } } @@ -241,7 +242,7 @@ function BrowserUI() { while (true) { cursor = increment > 0 ? cursor.nextElementSibling : cursor.previousElementSibling; if (!cursor || !(cursor instanceof HTMLElement)) break; - if (cursor.getAttribute("data-state")! === "todo") { + if (cursor.getAttribute("data-state")! === currentViewState) { offset -= increment; valid_cursor = cursor; } @@ -299,6 +300,16 @@ function BrowserUI() { return UI.setState(createTimestamp, newState, oldState); }, + setView: function (state: string) { + const sheet = (document.getElementById("viewStyle") as HTMLStyleElement).sheet!; + sheet.insertRule(`.task:not([data-state=${state}]) { display: none }`); + sheet.removeRule(1); + currentViewState = state; + if (document.activeElement?.getAttribute("data-state") !== state) { + this.firstVisibleTask()?.focus(); + } + }, + undo: function () { const ret = UI.undo(); if (ret && ret instanceof HTMLElement) ret.focus(); @@ -327,17 +338,23 @@ function handleKey(event: any) { if (event.key == "J") return browserUI.moveTask(1); if (event.key == "K") return browserUI.moveTask(-1); if (event.key == "n") return browserUI.focusTaskNameInput(event); - if (event.key == "s") return browserUI.setState("someday-maybe"); - if (event.key == "w") return browserUI.setState("waiting"); - if (event.key == "d") return browserUI.setState("done"); if (event.key == "c") return browserUI.setState("cancelled"); + if (event.key == "d") return browserUI.setState("done"); + if (event.key == "s") return browserUI.setState("someday-maybe"); if (event.key == "t") return browserUI.setState("todo"); + if (event.key == "w") return browserUI.setState("waiting"); if (event.key == "X") return browserUI.setState("deleted"); if (event.key == "u") return browserUI.undo(); if (event.key == "e") return browserUI.beginEdit(event); if (event.key == "v") return (inputState = InputState.View); } else if (inputState === InputState.View) { - return (inputState = InputState.Command); + inputState = InputState.Command; + if (event.key == "c") return browserUI.setView("cancelled"); + if (event.key == "d") return browserUI.setView("done"); + if (event.key == "s") return browserUI.setView("someday-maybe"); + if (event.key == "t") return browserUI.setView("todo"); + if (event.key == "w") return browserUI.setView("waiting"); + if (event.key == "x") return browserUI.setView("deleted"); } } }