]> git.scottworley.com Git - vopamoi/blobdiff - vopamoi.ts
When creating a task while viewing a tag, the new task has that tag
[vopamoi] / vopamoi.ts
index a1149595bb86c84ab22b48546dd29b67023ac813..6ba608a4478481fbfcd6fb06f506f5b3ac439fbe 100644 (file)
@@ -67,7 +67,7 @@ const Model = {
         return tag;
       }
     }
-    task.appendChild(tag);
+    task.insertBefore(tag, task.getElementsByClassName("desc")[0]!);
     return tag;
   },
 
@@ -76,7 +76,7 @@ const Model = {
     if (!target) return null;
     if (target.hasAttribute("data-description")) {
       // Oh no: An edit has arrived from a replica while a local edit is in progress.
-      const input = target.firstChild as HTMLInputElement;
+      const input = target.getElementsByTagName("input")[0]!;
       if (
         input.value === target.getAttribute("data-description") &&
         input.selectionStart === input.value.length &&
@@ -276,6 +276,7 @@ function BrowserUI() {
     todo: "White",
     waiting: "MediumOrchid",
   };
+  var currentTagView: string | null = null;
   var currentViewState = "todo";
   var taskFocusedBeforeJumpingToInput: HTMLElement | null = null;
   var lastTagNameEntered = "";
@@ -291,6 +292,9 @@ function BrowserUI() {
         this.firstVisibleTask()?.focus();
       }
       input.value = "";
+      if (currentTagView) {
+        ui.addTag(task.getAttribute("data-created")!, currentTagView);
+      }
       if (event.getModifierState("Control")) {
         this.makeBottomPriority(task);
       }
@@ -464,6 +468,7 @@ function BrowserUI() {
     },
 
     resetTagView: function () {
+      currentTagView = null;
       for (const task of document.getElementsByClassName("task")) {
         task.classList.remove("hide");
       }
@@ -519,6 +524,7 @@ function BrowserUI() {
           task.classList.add("hide");
         }
       }
+      currentTagView = tag;
     },
 
     setView: function (state: string) {
@@ -537,6 +543,16 @@ function BrowserUI() {
       }
     },
 
+    setUntaggedView: function () {
+      for (const task of document.getElementsByClassName("task")) {
+        if (task.getElementsByClassName("tag").length === 0) {
+          task.classList.remove("hide");
+        } else {
+          task.classList.add("hide");
+        }
+      }
+    },
+
     undo: function () {
       const ret = ui.undo();
       if (ret && ret instanceof HTMLElement) ret.focus();
@@ -613,10 +629,12 @@ function handleKey(event: any) {
       if (event.key == "a") return browserUI.setView("all");
       if (event.key == "c") return browserUI.setView("cancelled");
       if (event.key == "d") return browserUI.setView("done");
+      if (event.key == "i") return browserUI.setUntaggedView();
       if (event.key == "q") return browserUI.setView("todo");
       if (event.key == "s") return (inputState = InputState.VS);
       if (event.key == "T") return browserUI.resetTagView();
       if (event.key == "t") return browserUI.setTagView();
+      if (event.key == "u") return browserUI.setUntaggedView();
       if (event.key == "v") return browserUI.resetView();
       if (event.key == "w") return browserUI.setView("waiting");
       if (event.key == "x") return browserUI.setView("deleted");