From 838a7874093b438b7ec66e7a0f9a60ce10e5d07f Mon Sep 17 00:00:00 2001 From: Gisle Aune Date: Sat, 9 Jan 2021 14:43:46 +0100 Subject: [PATCH] add project progress indicator and sort front page projects by deadline. --- svelte-ui/src/components/Progress.svelte | 18 +++++++++++++--- svelte-ui/src/components/ProjectEntry.svelte | 12 ++++++----- svelte-ui/src/components/TaskEntry.svelte | 4 +--- svelte-ui/src/pages/FrontPage.svelte | 22 +++++++++++++------- 4 files changed, 38 insertions(+), 18 deletions(-) diff --git a/svelte-ui/src/components/Progress.svelte b/svelte-ui/src/components/Progress.svelte index 44b3eec..90b02ff 100644 --- a/svelte-ui/src/components/Progress.svelte +++ b/svelte-ui/src/components/Progress.svelte @@ -11,6 +11,8 @@ -
+
{#each {length: ons} as _}
{/each} @@ -61,7 +68,7 @@ flex-basis: 0; display: inline-block; box-sizing: border-box; - border: 0.1px solid #000; + border: 1px solid #000; } div.none { background-color: #555555; } @@ -69,6 +76,7 @@ div.silver { background-color: #d8dce4; } div.gold { background-color: #ffd966; } div.diamond { background-color: #84f5ff; } + div.green { background-color: #78ff78; } div.on { opacity: 0.75; @@ -77,4 +85,8 @@ div.off { opacity: 0.33; } + + div.bar.thin { + height: 0.25em; + } \ No newline at end of file diff --git a/svelte-ui/src/components/ProjectEntry.svelte b/svelte-ui/src/components/ProjectEntry.svelte index e9c8af5..cfdb67b 100644 --- a/svelte-ui/src/components/ProjectEntry.svelte +++ b/svelte-ui/src/components/ProjectEntry.svelte @@ -1,31 +1,32 @@
-
+
{project.name}
@@ -35,6 +36,7 @@ import TaskAddForm from "../forms/TaskAddForm.svelte";
{/if}
+ {#if showAllOptions}

{project.description}

diff --git a/svelte-ui/src/components/TaskEntry.svelte b/svelte-ui/src/components/TaskEntry.svelte index 4138e3b..dc787df 100644 --- a/svelte-ui/src/components/TaskEntry.svelte +++ b/svelte-ui/src/components/TaskEntry.svelte @@ -11,7 +11,6 @@ export let task: TaskResult = null; export let showAllOptions: boolean = false; - let itomIconName: IconName = "question"; let showLogs = false; let mdLogAdd: ModalData; let mdTaskEdit: ModalData; @@ -21,7 +20,6 @@ showLogs = !showLogs; } - $: itomIconName = task.item.icon as IconName; $: mdLogAdd = {name: "log.add", task}; $: mdTaskEdit = {name: "task.edit", task}; $: mdTaskDelete = {name: "task.delete", task}; @@ -53,7 +51,7 @@

{task.description}

- +
{task.item.name} ({task.item.groupWeight})
diff --git a/svelte-ui/src/pages/FrontPage.svelte b/svelte-ui/src/pages/FrontPage.svelte index f00b46f..49c24c0 100644 --- a/svelte-ui/src/pages/FrontPage.svelte +++ b/svelte-ui/src/pages/FrontPage.svelte @@ -4,10 +4,11 @@ import ProjectEntry from "../components/ProjectEntry.svelte"; import type { ProjectResult } from "../models/project"; import { fpGoalStore } from "../stores/goal"; - import { fpProjectStore } from "../stores/project"; - import { fpTaskStore } from "../stores/tasks"; + import projectStore, { fpProjectStore } from "../stores/project"; + import taskStore, { fpTaskStore } from "../stores/tasks"; let fakeProject: ProjectResult + let sortedProjects: ProjectResult[] $: { if ($fpGoalStore.stale && !$fpGoalStore.loading) { @@ -44,12 +45,22 @@ description: "", icon: "list", name: "Individual Tasks", - tasks: $fpTaskStore.tasks.filter(t => $fpProjectStore.projects.find(p => p.id === t.id) == null), + tasks: $fpTaskStore.tasks.filter(t => $fpProjectStore.projects.find(p => p.id === t.id) == null) + .sort((a,b) => Date.parse(a.endTime) - Date.parse(b.endTime)), endTime: null, } + if (fakeProject.tasks.length > 0) { + fakeProject.endTime = fakeProject.tasks[0].endTime; + } + console.log(fakeProject, $fpTaskStore); } + + $: { + const projects = fakeProject.tasks.length > 0 ? [...$fpProjectStore.projects, fakeProject] : [...$fpProjectStore.projects]; + sortedProjects = projects.sort((a,b) => Date.parse(a.endTime) - Date.parse(b.endTime)); + }
@@ -68,12 +79,9 @@ {#if !$fpProjectStore.loading || $fpProjectStore.projects.length > 0}

Upcoming Deadlines

{/if} - {#each $fpProjectStore.projects as project (project.id)} + {#each sortedProjects as project (project.id)} {/each} - {#if fakeProject.tasks.length > 0} - - {/if} {#if fakeProject.tasks.length === 0 && !$fpProjectStore.loading && $fpProjectStore.projects.length === 0} {/if}