add mark as completed button when the project has only completed and failed tasks.

This commit is contained in:
2021-04-03 13:51:11 +02:00
parent 2dddb7a216
commit 7dc9b9cc40
2 changed files with 34 additions and 1 deletions
+10 -1
View File
@@ -4,6 +4,8 @@
import modalStore from "../stores/modal";
export let open: ModalData = {name: "none"};
export let green: boolean = false;
export let disabled: boolean = false;
const dispatch = createEventDispatcher();
@@ -16,7 +18,7 @@
}
</script>
<div on:click={handleClick} class="option"><slot></slot></div>
<div on:click={handleClick} class="option" class:green class:disabled><slot></slot></div>
<style>
div.option {
@@ -35,4 +37,11 @@
color: #FC1;
text-decoration: underline;
}
div.option.green {
color: #484;
}
div.option.green:hover {
color: #78ff78;
}
</style>
@@ -35,6 +35,7 @@ import stuffLogClient from "../clients/stufflog";
let failedTasks: TaskResult[] = [];
let nonHiddenTasks: TaskResult[] = [];
let toggling = false;
let canComplete = false;
function toggleFavorite() {
if (toggling) {
@@ -53,6 +54,24 @@ import stuffLogClient from "../clients/stufflog";
})
}
function markCompleted() {
if (toggling) {
return
}
toggling = true
stuffLogClient.updateProject(project.id, {
statusTag: "completed",
active: false,
}).then(() => {
markStale("project");
}).catch(err => {
console.warn("Failed to mark completed:", err);
}).finally(() => {
toggling = false;
})
}
$: mdAddTask = {name:"task.add", project};
$: mdProjectEdit = {name:"project.edit", project};
$: mdProjectDelete = {name:"project.delete", project};
@@ -69,6 +88,8 @@ import stuffLogClient from "../clients/stufflog";
nonHiddenTasks = [...activeTasks, ...todoTasks, ...onholdTasks];
}
$: canComplete = project.active && completedTasks.length + failedTasks.length === project.tasks.length;
$: linkTarget = IS_MOBILE ? `/projects#${project.id}` : `/questlog#${project.id}`
</script>
@@ -95,6 +116,9 @@ import stuffLogClient from "../clients/stufflog";
<Option open={mdAddTask}>Add Task</Option>
<Option open={mdProjectEdit}>Edit</Option>
<Option open={mdProjectDelete}>Delete</Option>
{#if canComplete}
<Option disabled={!toggling} green on:click={markCompleted}>Complete Project</Option>
{/if}
</OptionRow>
{/if}
{#if hideInactive}