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.

54 lines
1.5 KiB

4 years ago
  1. <script>
  2. import pluralize from "pluralize";
  3. import ModalFrame from "../components/ModalFrame";
  4. import modal from "../stores/modal";
  5. import stufflog from "../stores/stufflog";
  6. export let activity = {};
  7. let error = null;
  8. let name = "";
  9. let unitName = "minute";
  10. let value = "1";
  11. function addSubActivity() {
  12. value = parseFloat(value)
  13. if (Number.isNaN(value)) {
  14. error = "Invalid value, it should be a number."
  15. value = "1";
  16. return
  17. }
  18. stufflog.updateActivity(activity.id, {addSub: {name, unitName, value}}).then(() => {
  19. modal.close();
  20. }).catch(err => {
  21. error = err.message || err;
  22. console.warn(err);
  23. });
  24. }
  25. </script>
  26. <ModalFrame title={`Add ${activity.name} Sub-Activity`} error={error} closable on:close={() => modal.close()}>
  27. <form on:submit|preventDefault={() => addSubActivity()}>
  28. <label>Name</label>
  29. <input type="text" bind:value={name} />
  30. <label>Unit</label>
  31. <select bind:value={unitName}>
  32. <option value="minute">minute</option>
  33. <option value="word">word</option>
  34. <option value="hour">hour</option>
  35. <option value="item">item</option>
  36. </select>
  37. <label>Value per {pluralize(unitName, 1)}</label>
  38. <input type="string" bind:value={value} />
  39. <p>
  40. 1000 points should be equivalent to about an hour of baseline activity. Beyond that, it's
  41. about incentivitzing the right thing.
  42. </p>
  43. <hr />
  44. <button type="submit">Add Sub-Activity</button>
  45. </form>
  46. </ModalFrame>