]> git.scottworley.com Git - vopamoi/blobdiff - vopamoi.ts
Always set state attribute
[vopamoi] / vopamoi.ts
index 80e8ff93c704ad3c5bb4675a29abe3c269be3eca..b16bc703b2ee1ca8432c0f3c2bab782fed502421 100644 (file)
@@ -36,6 +36,7 @@ const Model = {
     task.setAttribute("class", "task");
     task.setAttribute("tabindex", "0");
     task.setAttribute("data-created", timestamp);
+    task.setAttribute("data-state", "todo");
     document.getElementById("tasks")!.appendChild(task);
     return task;
   },
@@ -73,10 +74,6 @@ const Model = {
     return parseFloat(task.getAttribute("data-created")!);
   },
 
-  getState: function (task: Element): string {
-    return task.getAttribute("data-state") ?? "todo";
-  },
-
   getTask: function (createTimestamp: string) {
     for (const task of document.getElementsByClassName("task")) {
       if (task.getAttribute("data-created") === createTimestamp) {
@@ -297,7 +294,7 @@ const BrowserUI = {
   setState: function (newState: string) {
     const task = document.activeElement;
     if (!task) return;
-    const oldState = Model.getState(task);
+    const oldState = task.getAttribute("data-state");
     if (newState === oldState) return;
     const createTimestamp = task.getAttribute("data-created")!;
     this.moveCursor(1) || this.moveCursor(-1);
@@ -312,6 +309,7 @@ const BrowserUI = {
 
 enum InputState {
   Command,
+  View,
 }
 var inputState = InputState.Command;
 
@@ -337,6 +335,9 @@ function handleKey(event: any) {
       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);
     }
   }
 }