addTag: function (createTimestamp: string, tagName: string): Element | null {
const task = this.getTask(createTimestamp);
if (!task) return null;
addTag: function (createTimestamp: string, tagName: string): Element | null {
const task = this.getTask(createTimestamp);
if (!task) return null;
const tag = document.createElement("span");
tag.appendChild(document.createTextNode(tagName));
tag.classList.add("tag");
const tag = document.createElement("span");
tag.appendChild(document.createTextNode(tagName));
tag.classList.add("tag");
getPriority: function (task: Element): number {
if (task.hasAttribute("data-priority")) {
return parseFloat(task.getAttribute("data-priority")!);
getPriority: function (task: Element): number {
if (task.hasAttribute("data-priority")) {
return parseFloat(task.getAttribute("data-priority")!);
return {
addTask: function (event: KeyboardEvent) {
const input = <HTMLInputElement>document.getElementById("taskName");
return {
addTask: function (event: KeyboardEvent) {
const input = <HTMLInputElement>document.getElementById("taskName");
const input = document.createElement("input");
input.classList.add("tag");
input.addEventListener("blur", this.completeTagEdit, { once: true });
const input = document.createElement("input");
input.classList.add("tag");
input.addEventListener("blur", this.completeTagEdit, { once: true });
- ui.addTag(task.getAttribute("data-created")!, newTagName);
+ if (!Model.hasTag(task, newTagName)) {
+ ui.addTag(task.getAttribute("data-created")!, newTagName);
+ lastTagNameEntered = newTagName;
+ }