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.

21 lines
675 B

  1. <script lang="ts">
  2. import type { TaskResult } from "../models/task";
  3. import Progress from "./Progress.svelte";
  4. interface ProjectLike {
  5. tasks?: TaskResult[]
  6. }
  7. export let project: ProjectLike;
  8. let progressAmount: number;
  9. let progressTarget: number;
  10. $: progressAmount = (project.tasks||[]).map(t => t.active
  11. ? Math.min(t.completedAmount, t.itemAmount) * t.item.groupWeight
  12. : t.itemAmount * t.item.groupWeight
  13. ).reduce((n,m) => n+m, 0);
  14. $: progressTarget = Math.max((project.tasks||[]).map(t => t.itemAmount * t.item.groupWeight).reduce((n,m) => n+m, 0), 1);
  15. </script>
  16. <Progress thin green count={progressAmount} target={progressTarget} />