From b6712c31775727ba4eb89708f681d88af3ffb57a Mon Sep 17 00:00:00 2001 From: Scott Worley Date: Sat, 5 Mar 2022 16:06:36 -0800 Subject: [PATCH] Use created-date as id This makes getTask() O(1) instead of O(n), which makes replay() 3x faster. --- vopamoi.ts | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/vopamoi.ts b/vopamoi.ts index f0c8930..962add7 100644 --- a/vopamoi.ts +++ b/vopamoi.ts @@ -45,7 +45,7 @@ function Model() { task.appendChild(desc); task.classList.add("task"); task.setAttribute("tabindex", "0"); - task.setAttribute("data-created", timestamp); + task.setAttribute("id", timestamp); task.setAttribute("data-state", "todo"); const tasks = document.getElementById("tasks")!; tasks.insertBefore(task, tasks.firstElementChild); @@ -110,15 +110,11 @@ function Model() { if (task.hasAttribute("data-priority")) { return parseFloat(task.getAttribute("data-priority")!); } - return parseFloat(task.getAttribute("data-created")!); + return parseFloat(task.getAttribute("id")!); }, getTask: function (createTimestamp: string) { - for (const task of document.getElementsByClassName("task")) { - if (task.getAttribute("data-created") === createTimestamp) { - return task; - } - } + return document.getElementById(createTimestamp); }, insertInPriorityOrder: function (task: Element, dest: Element) { @@ -348,7 +344,7 @@ function BrowserUI() { if (resolution === CommitOrAbort.Abort || newDescription.match(/^ *$/) || newDescription === oldDescription) { desc.textContent = oldDescription; } else { - ui.edit(task.getAttribute("data-created")!, newDescription, oldDescription); + ui.edit(task.getAttribute("id")!, newDescription, oldDescription); } }, @@ -360,7 +356,7 @@ function BrowserUI() { task.removeChild(input); task.focus(); if (resolution === CommitOrAbort.Commit && !newTagName.match(/^ *$/) && !model.hasTag(task, newTagName)) { - ui.addTag(task.getAttribute("data-created")!, newTagName); + ui.addTag(task.getAttribute("id")!, newTagName); lastTagNameEntered = newTagName; } }, @@ -440,7 +436,7 @@ function BrowserUI() { makeTopPriority: function (task: Element | null = null) { if (!task) task = this.currentTask(); if (!task) return; - ui.setPriority(task.getAttribute("data-created")!, clock.now(), model.getPriority(task)); + ui.setPriority(task.getAttribute("id")!, clock.now(), model.getPriority(task)); task instanceof HTMLElement && task.focus(); }, @@ -486,7 +482,7 @@ function BrowserUI() { removeTag: function () { const target = this.currentTag(); if (!target) return; - ui.removeTag(target.parentElement!.getAttribute("data-created")!, target.textContent!); + ui.removeTag(target.parentElement!.getAttribute("id")!, target.textContent!); }, resetTagView: function () { @@ -523,7 +519,7 @@ function BrowserUI() { console.assert(aPriority > newPriority && newPriority > bPriority, aPriority, ">", newPriority, ">", bPriority); const newPriorityRounded = Math.round(newPriority); const okToRound = aPriority > newPriorityRounded && newPriorityRounded > bPriority; - ui.setPriority(task.getAttribute("data-created")!, okToRound ? newPriorityRounded : newPriority, model.getPriority(task)); + ui.setPriority(task.getAttribute("id")!, okToRound ? newPriorityRounded : newPriority, model.getPriority(task)); task instanceof HTMLElement && task.focus(); }, @@ -532,7 +528,7 @@ function BrowserUI() { if (!task) return; const oldState = task.getAttribute("data-state")!; if (newState === oldState) return; - const createTimestamp = task.getAttribute("data-created")!; + const createTimestamp = task.getAttribute("id")!; if (currentViewState !== "all" || newState == "deleted") { this.moveCursorVertically(1) || this.moveCursorVertically(-1); } -- 2.44.1