]> git.scottworley.com Git - vopamoi/commitdiff
Set tasks "done" (or "waiting", "cancelled", "someday-maybe")
authorScott Worley <scottworley@scottworley.com>
Wed, 26 Jan 2022 09:01:48 +0000 (01:01 -0800)
committerScott Worley <scottworley@scottworley.com>
Thu, 27 Jan 2022 20:21:55 +0000 (12:21 -0800)
vopamoi.ts

index 151c5e06103d8e8f68791350c0361c56fe5f9fdf..2b38dd88b35c2f88e47b2f1d54d33c4a9d2c3c02 100644 (file)
@@ -37,7 +37,19 @@ const Model = {
 
   destroyTask: function (createTimestamp: string) {
     const task = this.getTask(createTimestamp);
-    task!.parentElement!.removeChild(task!);
+    if (task) {
+      task.parentElement!.removeChild(task);
+    }
+  },
+
+  setState: function (stateTimestamp: string, createTimestamp: string, state: string) {
+    const task = this.getTask(createTimestamp);
+    if (task) {
+      task.setAttribute(`data-${state}`, stateTimestamp);
+      if (task instanceof HTMLElement) {
+        task.style.display = "none"; // Until view filtering
+      }
+    }
   },
 };
 
@@ -52,6 +64,10 @@ const Log = (function () {
       if (command == "Destroy") {
         Model.destroyTask(data.split(" ", 1)[0]);
       }
+      if (command == "State") {
+        const [createTimestamp, state] = splitN(data, " ", 1);
+        Model.setState(timestamp, createTimestamp, state);
+      }
     },
 
     record: function (entry: string) {
@@ -83,6 +99,9 @@ const UI = {
   destroyTask: function (createTimestamp: string) {
     Log.recordAndApply(`${Date.now()} Destroy ${createTimestamp} ${Model.getTask(createTimestamp)?.textContent}`);
   },
+  setState: function (createTimestamp: string, state: string) {
+    Log.recordAndApply(`${Date.now()} State ${createTimestamp} ${state}`);
+  },
 };
 
 const BrowserUI = {
@@ -119,13 +138,23 @@ const BrowserUI = {
     }
     return false;
   },
+
+  setState: function (state: string) {
+    const createTimestamp = document.activeElement?.getAttribute("data-created");
+    this.moveCursor(1) || this.moveCursor(-1);
+    return UI.setState(createTimestamp!, state);
+  },
 };
 
 function handleKey(event: any) {
   if (event.target.tagName !== "INPUT") {
     if (event.key == "j") return BrowserUI.moveCursor(1);
     if (event.key == "k") return BrowserUI.moveCursor(-1);
-    if (event.key == "c") return BrowserUI.focusTaskNameInput(event);
+    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 == "X") return BrowserUI.destroyTask();
   }
 }