diff --git a/svelte-ui/src/components/Modal.svelte b/svelte-ui/src/components/Modal.svelte index 7468671..cdf34c9 100644 --- a/svelte-ui/src/components/Modal.svelte +++ b/svelte-ui/src/components/Modal.svelte @@ -142,6 +142,11 @@ div.modal :global(button:hover), div.modal :global(button:focus) { background: #222; color: #FFF; } +div.modal :global(button:disabled) { + background: #444; + color: #AAA; +} + div.modal :global(label) { padding: 0 0 0.125em 0.25ch; diff --git a/svelte-ui/src/forms/GoalForm.svelte b/svelte-ui/src/forms/GoalForm.svelte index 82f8913..1897492 100644 --- a/svelte-ui/src/forms/GoalForm.svelte +++ b/svelte-ui/src/forms/GoalForm.svelte @@ -46,8 +46,11 @@ import GroupSelect from "../components/GroupSelect.svelte"; let endTime = formatFormTime(goal.endTime); let error = null; + let loading = false; function onSubmit() { + loading = true; + if (creation) { stuffLogClient.createGoal({ startTime: new Date(startTime), @@ -59,6 +62,8 @@ import GroupSelect from "../components/GroupSelect.svelte"; modalStore.close(); }).catch(err => { error = err.message ? err.message : err.toString(); + }).finally(() => { + loading = false; }) } else if (deletion) { stuffLogClient.deleteGoal(goal.id).then(() => { @@ -67,6 +72,8 @@ import GroupSelect from "../components/GroupSelect.svelte"; modalStore.close(); }).catch(err => { error = err.message ? err.message : err.toString(); + }).finally(() => { + loading = false; }) } else { stuffLogClient.updateGoal(goal.id, { @@ -79,6 +86,8 @@ import GroupSelect from "../components/GroupSelect.svelte"; modalStore.close(); }).catch(err => { error = err.message ? err.message : err.toString(); + }).finally(() => { + loading = false; }) } @@ -107,6 +116,6 @@ import GroupSelect from "../components/GroupSelect.svelte";
- + \ No newline at end of file diff --git a/svelte-ui/src/forms/GroupForm.svelte b/svelte-ui/src/forms/GroupForm.svelte index dc7b89d..56ce111 100644 --- a/svelte-ui/src/forms/GroupForm.svelte +++ b/svelte-ui/src/forms/GroupForm.svelte @@ -33,8 +33,11 @@ import projectStore, { fpProjectStore } from "../stores/project"; let description = group.description; let icon = group.icon as IconName; let error = null; + let loading = false; function onSubmit() { + loading = true; + if (creation) { stuffLogClient.createGroup({ name, description, icon, @@ -43,6 +46,8 @@ import projectStore, { fpProjectStore } from "../stores/project"; modalStore.close(); }).catch(err => { error = err.message ? err.message : err.toString(); + }).finally(() => { + loading = false; }) } else if (deletion) { stuffLogClient.deleteGroup(group.id).then(() => { @@ -50,6 +55,8 @@ import projectStore, { fpProjectStore } from "../stores/project"; modalStore.close(); }).catch(err => { error = err.message ? err.message : err.toString(); + }).finally(() => { + loading = false; }) } else { stuffLogClient.updateGroup(group.id, { @@ -63,6 +70,8 @@ import projectStore, { fpProjectStore } from "../stores/project"; modalStore.close(); }).catch(err => { error = err.message ? err.message : err.toString(); + }).finally(() => { + loading = false; }) } @@ -85,6 +94,6 @@ import projectStore, { fpProjectStore } from "../stores/project";
- + \ No newline at end of file diff --git a/svelte-ui/src/forms/ItemAddForm.svelte b/svelte-ui/src/forms/ItemAddForm.svelte index 9ea08a8..9f81bcd 100644 --- a/svelte-ui/src/forms/ItemAddForm.svelte +++ b/svelte-ui/src/forms/ItemAddForm.svelte @@ -15,8 +15,11 @@ let description = ""; let groupWeight = 1; let error = null; + let loading = false; function onSubmit() { + loading = true; + stuffLogClient.createItem({ groupId: group.id, @@ -26,6 +29,8 @@ goalStore.markStale(); fpGoalStore.markStale(); modalStore.close(); + }).finally(() => { + loading = false; }) error = null; @@ -49,6 +54,6 @@
- + \ No newline at end of file diff --git a/svelte-ui/src/forms/ItemDeleteForm.svelte b/svelte-ui/src/forms/ItemDeleteForm.svelte index 1e83e4e..35a88ac 100644 --- a/svelte-ui/src/forms/ItemDeleteForm.svelte +++ b/svelte-ui/src/forms/ItemDeleteForm.svelte @@ -15,13 +15,18 @@ let description = item.description; let groupWeight = item.groupWeight; let error = null; + let loading = false; function onSubmit() { + loading = true; + stuffLogClient.deleteItem(item.id).then(() => { groupStore.markStale(); modalStore.close(); }).catch(err => { error = err.message ? err.message : err.toString(); + }).finally(() => { + loading = false; }) error = null; @@ -45,6 +50,6 @@
- + \ No newline at end of file diff --git a/svelte-ui/src/forms/ItemEditForm.svelte b/svelte-ui/src/forms/ItemEditForm.svelte index cd10cf5..0d3242f 100644 --- a/svelte-ui/src/forms/ItemEditForm.svelte +++ b/svelte-ui/src/forms/ItemEditForm.svelte @@ -17,8 +17,11 @@ let description = item.description; let groupWeight = item.groupWeight; let error = null; + let loading = false; function onSubmit() { + loading = true; + stuffLogClient.updateItem(item.id, { name, description, groupWeight, }).then(() => { @@ -28,6 +31,8 @@ projectStore.markStale(); fpProjectStore.markStale(); modalStore.close(); + }).finally(() => { + loading = false; }) error = null; @@ -51,6 +56,6 @@
- + \ No newline at end of file diff --git a/svelte-ui/src/forms/LogAddForm.svelte b/svelte-ui/src/forms/LogAddForm.svelte index 6ac0c5f..7c323db 100644 --- a/svelte-ui/src/forms/LogAddForm.svelte +++ b/svelte-ui/src/forms/LogAddForm.svelte @@ -18,8 +18,11 @@ import logStore from "../stores/logs"; let description = ""; let markInactive = task.completedAmount >= (task.itemAmount - 1); let error = null; + let loading = false; function onSubmit() { + loading = true; + stuffLogClient.createLog({ taskId: task.id, loggedTime: new Date(loggedTime).toISOString(), @@ -36,6 +39,8 @@ import logStore from "../stores/logs"; goalStore.markStale(); fpGoalStore.markStale(); logStore.markStale(); + }).finally(() => { + loading = false; }) error = null; @@ -59,6 +64,6 @@ import logStore from "../stores/logs";
- + \ No newline at end of file diff --git a/svelte-ui/src/forms/LogDeleteForm.svelte b/svelte-ui/src/forms/LogDeleteForm.svelte index 91132b7..1e640ef 100644 --- a/svelte-ui/src/forms/LogDeleteForm.svelte +++ b/svelte-ui/src/forms/LogDeleteForm.svelte @@ -15,6 +15,7 @@ let loggedTime = formatFormTime(new Date(md.log.loggedTime)); let description = md.log.description; let error = null; + let loading = false; function onSubmit() { const md = $modalStore; @@ -22,6 +23,8 @@ throw new Error("Wrong form"); } + loading = true; + stuffLogClient.deleteLog(md.log.id).then(() => { projectStore.markStale(); fpProjectStore.markStale(); @@ -30,6 +33,8 @@ logStore.markStale(); modalStore.close(); + }).finally(() => { + loading = false; }) error = null; @@ -51,6 +56,6 @@
- + \ No newline at end of file diff --git a/svelte-ui/src/forms/LogEditForm.svelte b/svelte-ui/src/forms/LogEditForm.svelte index 5b24d6d..0f9e251 100644 --- a/svelte-ui/src/forms/LogEditForm.svelte +++ b/svelte-ui/src/forms/LogEditForm.svelte @@ -15,6 +15,7 @@ let loggedTime = formatFormTime(new Date(md.log.loggedTime)); let description = md.log.description; let error = null; + let loading = false; function onSubmit() { const md = $modalStore; @@ -22,6 +23,8 @@ throw new Error("Wrong form"); } + loading = true; + stuffLogClient.updateLog(md.log.id, { loggedTime: new Date(loggedTime).toISOString(), description, @@ -33,6 +36,8 @@ logStore.markStale(); modalStore.close(); + }).finally(() => { + loading = false; }) error = null; @@ -54,6 +59,6 @@
- + \ No newline at end of file diff --git a/svelte-ui/src/forms/ProjectAddForm.svelte b/svelte-ui/src/forms/ProjectAddForm.svelte index c61bf3a..e142a91 100644 --- a/svelte-ui/src/forms/ProjectAddForm.svelte +++ b/svelte-ui/src/forms/ProjectAddForm.svelte @@ -11,8 +11,11 @@ let description = ""; let icon = iconNames[0]; let error = null; + let loading = false; function onSubmit() { + loading = true; + stuffLogClient.createProject({ active: true, endTime: ( endTime == "" ) ? null : new Date(endTime), @@ -26,6 +29,8 @@ modalStore.close(); }).catch(err => { error = err.message ? err.message : err.toString(); + }).finally(() => { + loading = false; }) error = null; @@ -49,6 +54,6 @@
- + \ No newline at end of file diff --git a/svelte-ui/src/forms/ProjectDeleteForm.svelte b/svelte-ui/src/forms/ProjectDeleteForm.svelte index 85fae9e..e56b630 100644 --- a/svelte-ui/src/forms/ProjectDeleteForm.svelte +++ b/svelte-ui/src/forms/ProjectDeleteForm.svelte @@ -18,8 +18,11 @@ let description = project.description; let icon = project.icon as IconName; let error = null; + let loading = false; function onSubmit() { + loading = true; + stuffLogClient.deleteProject(project.id).then(() => { projectStore.markStale(); if (endTime !== "") { @@ -28,6 +31,8 @@ modalStore.close(); }).catch(err => { error = err.message ? err.message : err.toString(); + }).finally(() => { + loading = false; }) error = null; @@ -51,6 +56,6 @@
- + \ No newline at end of file diff --git a/svelte-ui/src/forms/ProjectEditForm.svelte b/svelte-ui/src/forms/ProjectEditForm.svelte index 8ca5c09..0790c28 100644 --- a/svelte-ui/src/forms/ProjectEditForm.svelte +++ b/svelte-ui/src/forms/ProjectEditForm.svelte @@ -20,8 +20,11 @@ import Checkbox from "../components/Checkbox.svelte"; let description = project.description; let icon = project.icon as IconName; let error = null; + let loading = false; function onSubmit() { + loading = true; + stuffLogClient.updateProject(project.id, { endTime: ( endTime == "" ) ? null : new Date(endTime), clearEndTime: ( endTime == "" ), @@ -33,6 +36,8 @@ import Checkbox from "../components/Checkbox.svelte"; modalStore.close(); }).catch(err => { error = err.message ? err.message : err.toString(); + }).finally(() => { + loading = false; }) error = null; @@ -57,6 +62,6 @@ import Checkbox from "../components/Checkbox.svelte";
- + \ No newline at end of file diff --git a/svelte-ui/src/forms/TaskAddForm.svelte b/svelte-ui/src/forms/TaskAddForm.svelte index 3fcb50e..d4e6e8c 100644 --- a/svelte-ui/src/forms/TaskAddForm.svelte +++ b/svelte-ui/src/forms/TaskAddForm.svelte @@ -13,8 +13,11 @@ let description = ""; let itemAmount = 1; let error = null; + let loading = false; function onSubmit() { + loading = true; + stuffLogClient.createTask({ projectId: project.id, itemId: itemId, @@ -28,6 +31,8 @@ modalStore.close(); }).catch(err => { error = err.message ? err.message : err.toString(); + }).finally(() => { + loading = false; }) error = null; @@ -69,6 +74,6 @@
- + \ No newline at end of file diff --git a/svelte-ui/src/forms/TaskDeleteForm.svelte b/svelte-ui/src/forms/TaskDeleteForm.svelte index d221fb4..21f10d0 100644 --- a/svelte-ui/src/forms/TaskDeleteForm.svelte +++ b/svelte-ui/src/forms/TaskDeleteForm.svelte @@ -19,8 +19,11 @@ import Checkbox from "../components/Checkbox.svelte"; let completed = !task.active; let endTime = task.endTime ? formatFormTime(task.endTime) : ""; let error = null; + let loading = false; function onSubmit() { + loading = true; + stuffLogClient.deleteTask(task.id).then(() => { projectStore.markStale(); fpProjectStore.markStale(); @@ -29,6 +32,8 @@ import Checkbox from "../components/Checkbox.svelte"; modalStore.close(); }).catch(err => { error = err.message ? err.message : err.toString(); + }).finally(() => { + loading = false; }) error = null; @@ -55,6 +60,6 @@ import Checkbox from "../components/Checkbox.svelte";
- + \ No newline at end of file diff --git a/svelte-ui/src/forms/TaskEditForm.svelte b/svelte-ui/src/forms/TaskEditForm.svelte index 4c70479..87505ea 100644 --- a/svelte-ui/src/forms/TaskEditForm.svelte +++ b/svelte-ui/src/forms/TaskEditForm.svelte @@ -19,8 +19,11 @@ import Checkbox from "../components/Checkbox.svelte"; let completed = !task.active; let endTime = task.endTime ? formatFormTime(task.endTime) : ""; let error = null; + let loading = false; function onSubmit() { + loading = true; + stuffLogClient.updateTask(task.id, { endTime: (endTime == "") ? null : new Date(endTime), clearEndTime: endTime == "", @@ -35,6 +38,8 @@ import Checkbox from "../components/Checkbox.svelte"; modalStore.close(); }).catch(err => { error = err.message ? err.message : err.toString(); + }).finally(() => { + loading = false; }) error = null; @@ -61,6 +66,6 @@ import Checkbox from "../components/Checkbox.svelte";
- + \ No newline at end of file