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
+ }
+ }
},
};
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) {
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 = {
}
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();
}
}