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.

45 lines
1.3 KiB

4 years ago
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 { GoalResult } from "../models/goal";
  3. import type { ModalData } from "../stores/modal";
  4. import Composition from "./Composition.svelte";
  5. import EveryMinute from "./EveryMinute.svelte";
  6. import Option from "./Option.svelte";
  7. import OptionRow from "./OptionRow.svelte";
  8. import ParentEntry from "./ParentEntry.svelte";
  9. import Progress from "./Progress.svelte";
  10. import TimeProgress from "./TimeProgress.svelte";
  11. export let goal: GoalResult = null;
  12. export let showAllOptions = false;
  13. export let linkGoal = false;
  14. let mdGoalEdit: ModalData;
  15. let mdGoalDelete: ModalData;
  16. $: mdGoalEdit = {name:"goal.edit", goal};
  17. $: mdGoalDelete = {name:"goal.delete", goal};
  18. </script>
  19. <ParentEntry
  20. full={showAllOptions}
  21. entry={goal}
  22. headerLink={linkGoal ? "/goals#"+goal.id : ""}
  23. >
  24. {#if showAllOptions}
  25. <OptionRow>
  26. <Option open={mdGoalEdit}>Edit</Option>
  27. <Option open={mdGoalDelete}>Delete</Option>
  28. </OptionRow>
  29. {/if}
  30. <div class="progress">
  31. <Progress count={goal.completedAmount} target={goal.amount} />
  32. <TimeProgress startTime={goal.startTime} endTime={goal.endTime} />
  33. </div>
  34. <Composition logs={goal.logs} mode={goal.compositionMode} />
  35. </ParentEntry>
  36. <style>
  37. div.progress {
  38. padding-top: 0.125em;
  39. font-size: 1.25em;
  40. }
  41. </style>