X-Git-Url: http://git.scottworley.com/vopamoi/blobdiff_plain/109d4bc26db6a0f5a6b6afd72446827d25fc334e..9db534f6ab9420b8fd5836e791dbe09abb0a92d8:/vopamoi.ts diff --git a/vopamoi.ts b/vopamoi.ts index 302307f..f550fa1 100644 --- a/vopamoi.ts +++ b/vopamoi.ts @@ -207,6 +207,7 @@ function Log(prefix: string = "vp-") { }, replay: function () { + document.getElementById("tasks")!.style.display = "none"; while (true) { const entry = window.localStorage.getItem(`${prefix}${next_log_index}`); if (entry === null) { @@ -215,6 +216,7 @@ function Log(prefix: string = "vp-") { this.apply(entry); next_log_index++; } + document.getElementById("tasks")!.style.display = ""; }, }; } @@ -297,9 +299,6 @@ function BrowserUI() { this.firstVisibleTask()?.focus(); } input.value = ""; - if (currentTagView) { - ui.addTag(task.getAttribute("data-created")!, currentTagView); - } if (event.getModifierState("Control")) { this.makeBottomPriority(task); } @@ -381,8 +380,9 @@ function BrowserUI() { return target as HTMLElement; }, - firstVisibleTask: function () { - for (const task of document.getElementsByClassName("task")) { + firstVisibleTask: function (root: Element | null = null) { + if (root === null) root = document.body; + for (const task of root.getElementsByClassName("task")) { const state = task.getAttribute("data-state"); if ( task instanceof HTMLElement && @@ -441,6 +441,20 @@ function BrowserUI() { task instanceof HTMLElement && task.focus(); }, + moveCursorLeft: function () { + const active = this.currentTask(); + if (!active) return false; + if (active.parentElement!.classList.contains("task")) { + active.parentElement!.focus(); + } + }, + + moveCursorRight: function () { + const active = this.currentTask(); + if (!active) return false; + (this.firstVisibleTask(active) as HTMLElement | null)?.focus(); + }, + moveCursorVertically: function (offset: number): boolean { const active = this.currentTask(); if (!active) return false; @@ -643,6 +657,8 @@ function handleKey(event: any) { if (event.key == "e") return window.scrollBy(0, (inputCount ?? 1) * scrollIncrement); if (event.key == "y") return window.scrollBy(0, (inputCount ?? 1) * -scrollIncrement); } else { + if (event.key == "h") return browserUI.moveCursorLeft(); + if (event.key == "l") return browserUI.moveCursorRight(); if (event.key == "j") return browserUI.moveCursorVertically(inputCount ?? 1); if (event.key == "k") return browserUI.moveCursorVertically(-(inputCount ?? 1)); if (event.key == "J") return browserUI.moveTask(inputCount ?? 1);