Plan stuff. Log stuff.
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.

37 lines
1.2 KiB

  1. <script>
  2. import { createEventDispatcher } from 'svelte';
  3. import pluralize from "pluralize";
  4. import Link from "../Link.svelte";
  5. import Table from "../Table.svelte";
  6. import ActivityIcon from "../ActivityIcon.svelte";
  7. import PointsBar from "../PointsBar.svelte";
  8. import ActivityDisplay from "../ActivityDisplay.svelte";
  9. export let period = {goals: []};
  10. export let activities = [];
  11. const dispatch = createEventDispatcher();
  12. let activityMap = {};
  13. function onOption(name, goalId) {
  14. const goal = period.goals.find(g => g.id === goalId);
  15. const activity = activities.find(a => a.id === goal.activityId)
  16. dispatch("option", {name, period, goal, activity})
  17. }
  18. </script>
  19. <Table headers={["Activity", "Points", "Options"]} percentages={[25, 55, 20]}>
  20. {#each period.goals as goal (goal.id)}
  21. <tr>
  22. <td class="ellipsis">
  23. <ActivityDisplay activity={activities.find(a => a.id === goal.activityId)} />
  24. </td>
  25. <td><PointsBar value={period.scores[goal.id]} goal={goal.pointCount} /></td>
  26. <td class="td-options">
  27. <Link on:click={() => onOption("periodgoal.remove", goal.id)}>Delete</Link>
  28. </td>
  29. </tr>
  30. {/each}
  31. </Table>