]> git.scottworley.com Git - vopamoi/blobdiff - vopamoi.ts
Keep tags sorted
[vopamoi] / vopamoi.ts
index 5916d0a9b21d5fe722d5e05cfa2151b2e1057dd1..31a4cdcd858a56b7f72fe75dd1ccecbe756cb881 100644 (file)
@@ -29,6 +29,12 @@ function Clock() {
 }
 const clock = Clock();
 
 }
 const clock = Clock();
 
+// Returns a promise for a hue based on a hash of the string
+function hashHue(str: string) {
+  // Using crypto for this is overkill
+  return crypto.subtle.digest("SHA-256", new TextEncoder().encode(str)).then((buf) => (new Uint16Array(buf)[0] * 360) / 2 ** 16);
+}
+
 const Model = {
   addTask: function (timestamp: string, description: string): Element {
     const task = document.createElement("div");
 const Model = {
   addTask: function (timestamp: string, description: string): Element {
     const task = document.createElement("div");
@@ -53,6 +59,13 @@ const Model = {
     tag.appendChild(document.createTextNode(tagName));
     tag.classList.add("tag");
     tag.setAttribute("tabindex", "0");
     tag.appendChild(document.createTextNode(tagName));
     tag.classList.add("tag");
     tag.setAttribute("tabindex", "0");
+    hashHue(tagName).then((hue) => (tag.style.backgroundColor = `hsl(${hue},90%,45%)`));
+    for (const child of task.getElementsByClassName("tag")) {
+      if (tagName > child.textContent!) {
+        task.insertBefore(tag, child);
+        return tag;
+      }
+    }
     task.appendChild(tag);
     return tag;
   },
     task.appendChild(tag);
     return tag;
   },