You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.6 KiB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
  1. <script lang="ts">
  2. import type { ProjectResult } from "../models/project";
  3. import type { TaskResult } from "../models/task";
  4. import type { ModalData } from "../stores/modal";
  5. import projectStore from "../stores/project";
  6. import taskStore from "../stores/tasks";
  7. import Composition from "./Composition.svelte";
  8. import Option from "./Option.svelte";
  9. import OptionRow from "./OptionRow.svelte";
  10. import ParentEntry from "./ParentEntry.svelte";
  11. import TaskEntry from "./TaskEntry.svelte";
  12. export let project: ProjectResult = null;
  13. export let showAllOptions: boolean = false;
  14. export let hideInactive: boolean = false;
  15. export let hideProgress: boolean = false;
  16. export let linkProject: boolean = false;
  17. export let hideIcon: boolean = false;
  18. let mdAddTask: ModalData;
  19. let mdProjectEdit: ModalData;
  20. let mdProjectDelete: ModalData;
  21. $: mdAddTask = {name:"task.add", project};
  22. $: mdProjectEdit = {name:"project.edit", project};
  23. $: mdProjectDelete = {name:"project.delete", project};
  24. </script>
  25. <ParentEntry
  26. full={showAllOptions}
  27. entry={project}
  28. headerLink={linkProject ? "/projects#"+project.id : ""}
  29. hideProgress={hideProgress}
  30. hideIcon={hideIcon}
  31. showTimeProgress={!hideProgress}
  32. >
  33. {#if showAllOptions}
  34. <OptionRow>
  35. <Option open={mdAddTask}>Add Task</Option>
  36. <Option open={mdProjectEdit}>Edit</Option>
  37. <Option open={mdProjectDelete}>Delete</Option>
  38. </OptionRow>
  39. {/if}
  40. {#each project.tasks as task (task.id)}
  41. {#if !hideInactive || task.active}
  42. <TaskEntry showAllOptions={showAllOptions} task={task} project={project} />
  43. {/if}
  44. {/each}
  45. </ParentEntry>