X-Git-Url: http://git.scottworley.com/vopamoi/blobdiff_plain/0726872b8e043c19883d26492ce42d3411505179..792b8a180ea729fd3cbfffaa915c6df9041e391d:/vopamoi.ts diff --git a/vopamoi.ts b/vopamoi.ts index c17a2f0..ede5911 100644 --- a/vopamoi.ts +++ b/vopamoi.ts @@ -125,6 +125,7 @@ const Model = { const tag = this.hasTag(task, tagName); if (!tag) return; task.removeChild(tag); + if (task instanceof HTMLElement) task.focus(); }, setPriority: function (createTimestamp: string, priority: number): Element | null { @@ -218,6 +219,10 @@ function UI() { undoLog.push(`Edit ${createTimestamp} ${oldDescription}`); return log.recordAndApply(`${clock.now()} Edit ${createTimestamp} ${newDescription}`); }, + removeTag: function (createTimestamp: string, tag: string) { + undoLog.push(`Tag ${createTimestamp} ${tag}`); + return log.recordAndApply(`${clock.now()} Untag ${createTimestamp} ${tag}`); + }, setPriority: function (createTimestamp: string, newPriority: number, oldPriority: number) { undoLog.push(`Priority ${createTimestamp} ${oldPriority}`); return log.recordAndApply(`${clock.now()} Priority ${createTimestamp} ${newPriority}`); @@ -257,7 +262,7 @@ function BrowserUI() { } input.value = ""; if (event.getModifierState("Control")) { - this.setPriority(task, null, document.getElementsByClassName("task")[0]); + this.makeTopPriority(task); } }, @@ -351,6 +356,10 @@ function BrowserUI() { return valid_cursor; }, + makeTopPriority: function (task: Element) { + this.setPriority(task, null, document.getElementsByClassName("task")[0]); + }, + moveCursor: function (offset: number): boolean { const active = document.activeElement; if (!active) return false; @@ -376,6 +385,17 @@ function BrowserUI() { } }, + removeTag: function () { + var target = document.activeElement; + if (!target) return; + if (target.classList.contains("task")) { + const tags = target.getElementsByClassName("tag"); + target = tags[tags.length - 1]; + } + if (!target || !target.classList.contains("tag")) return; + ui.removeTag(target.parentElement!.getAttribute("data-created")!, target.textContent!); + }, + returnFocusAfterInput: function (): boolean { if (taskFocusedBeforeJumpingToInput) { taskFocusedBeforeJumpingToInput.focus(); @@ -459,6 +479,7 @@ function handleKey(event: any) { if (event.key == "s") return browserUI.setState("someday-maybe"); if (event.key == "w") return browserUI.setState("waiting"); if (event.key == "X") return browserUI.setState("deleted"); + if (event.key == "x") return browserUI.removeTag(); if (event.key == "u") return browserUI.undo(); if (event.key == "e") return browserUI.beginEdit(event); if (event.key == "t") return browserUI.beginTagEdit(event);