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.

52 lines
1.5 KiB

4 years ago
  1. <script>
  2. import ModalFrame from "../components/ModalFrame";
  3. import ActivityIconSelect from "../components/ActivityIconSelect";
  4. import modal from "../stores/modal";
  5. import stufflog from "../stores/stufflog";
  6. import dateStr from "../utils/dateStr";
  7. let error = null;
  8. let name = "";
  9. let fromStr = dateStr(new Date())
  10. let toStr = dateStr(new Date(Date.now() + (86400000 * 6)))
  11. let tagsStr = "";
  12. function createPeriod() {
  13. const from = new Date(`${fromStr} 00:00:00.000`);
  14. const to = new Date(`${toStr} 23:59:59.999`);
  15. const tags = tagsStr.split(",").map(t => t.trim()).filter(t => t.length > 0);
  16. error = null;
  17. if (Number.isNaN(from.getTime())) {
  18. error = "You must enter a from date.";
  19. return;
  20. }
  21. if (Number.isNaN(from.getTime())) {
  22. error = "You must enter a to date.";
  23. return;
  24. }
  25. stufflog.createPeriod({name, from, to, tags}).then(() => {
  26. modal.close();
  27. }).catch(err => {
  28. error = err.message || err;
  29. console.warn(err);
  30. });
  31. }
  32. </script>
  33. <ModalFrame title="Create Period" error={error} closable on:close={() => modal.close()}>
  34. <form on:submit|preventDefault={() => createPeriod()}>
  35. <label>Name</label>
  36. <input type="text" bind:value={name} />
  37. <label>From</label>
  38. <input type="date" bind:value={fromStr} />
  39. <label>To</label>
  40. <input type="date" bind:value={toStr} />
  41. <label>Tags (Comma separated)</label>
  42. <input type="text" bind:value={tagsStr} />
  43. <button type="submit">Create</button>
  44. </form>
  45. </ModalFrame>