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.

90 lines
2.7 KiB

4 years ago
  1. <script>
  2. import {get} from "svelte/store";
  3. import pluralize from "pluralize";
  4. import Icon from 'fa-svelte'
  5. import { faCircle } from '@fortawesome/free-solid-svg-icons/faCircle'
  6. import stufflog from "../stores/stufflog";
  7. import modal from "../stores/modal";
  8. import Boi from "../components/Boi.svelte";
  9. import AddBoi from "../components/AddBoi.svelte";
  10. import Property from "../components/Property.svelte";
  11. import Row from "../components/Row.svelte";
  12. import Col from "../components/Col.svelte";
  13. import Link from "../components/Link.svelte";
  14. function openModal(modalName, id, subId) {
  15. const activity = get(stufflog).activities.find(a => a.id === id);
  16. const subActivity = (activity || {subActivities:[]}).subActivities.find(s => s.id === subId);
  17. modal.open(modalName, {activity, subActivity})
  18. }
  19. </script>
  20. <div class="page">
  21. {#each $stufflog.activities as activity (activity.id)}
  22. <Boi header={activity.name} icon={activity.icon}>
  23. <Row>
  24. <Col size=3><Property label="ID" value={activity.id} /></Col>
  25. <Col size=3><Property label="Daily Bonus" value={activity.dailyBonus} /></Col>
  26. <Col size=6>
  27. <Property label="Options">
  28. <Link on:click={() => openModal("activity.edit", activity.id)}>Edit Activity</Link>,
  29. <Link on:click={() => openModal("subactivity.add", activity.id)}>Add Sub-Activity</Link>,
  30. <Link on:click={() => openModal("activity.delete", activity.id)}>Delete Activity</Link>
  31. </Property>
  32. </Col>
  33. </Row>
  34. <table>
  35. <tr>
  36. <th class="th-name">Sub-Activity</th>
  37. <th class="th-value">Value</th>
  38. <th class="th-options">Options</th>
  39. </tr>
  40. {#each activity.subActivities as subActivtiy (subActivtiy.id)}
  41. <tr>
  42. <td>{subActivtiy.name}</td>
  43. <td>{subActivtiy.value} per {pluralize(subActivtiy.unitName, 1)}</td>
  44. <td>
  45. <Link on:click={() => openModal("subactivity.edit", activity.id, subActivtiy.id)}>Edit</Link>,
  46. <Link on:click={() => openModal("subactivity.remove", activity.id, subActivtiy.id)}>Delete</Link>
  47. </td>
  48. </tr>
  49. {/each}
  50. </table>
  51. </Boi>
  52. {:else}
  53. <div class="empty">No data.</div>
  54. {/each}
  55. <AddBoi on:click={() => modal.open("activity.create")}>Activity</AddBoi>
  56. </div>
  57. <style>
  58. div.page {
  59. width: 100ch;
  60. max-width: 90%;
  61. margin: auto;
  62. }
  63. table {
  64. width: 100%;
  65. padding: 0.5em 0;
  66. }
  67. th, td {
  68. padding: 0em 1ch;
  69. }
  70. th {
  71. text-align: left;
  72. font-size: 0.75em;
  73. }
  74. th.th-name {
  75. width: 50%;
  76. }
  77. th.th-value {
  78. width: 25%;
  79. }
  80. th.th-options {
  81. width: 25%;
  82. }
  83. </style>