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.

53 lines
1.8 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. import { writable } from "svelte/store";
  2. import type { GoalResult } from "../models/goal";
  3. import type { GroupResult } from "../models/group";
  4. import type { ItemResult } from "../models/item";
  5. import type { LogResult } from "../models/log";
  6. import type {ProjectResult} from "../models/project";
  7. import type {TaskResult} from "../models/task";
  8. import type Project from "../models/project";
  9. import type Task from "../models/task";
  10. import type ProjectGroup from "../models/projectgroup";
  11. export type ModalData =
  12. | { name: "none" }
  13. | { name: "log.add", task: TaskResult }
  14. | { name: "log.edit", log: LogResult }
  15. | { name: "log.delete", log: LogResult }
  16. | { name: "task.add", project: ProjectResult }
  17. | { name: "task.edit", task: TaskResult }
  18. | { name: "task.delete", task: TaskResult }
  19. | { name: "project.add", groupId: string | null }
  20. | { name: "project.edit", project: ProjectResult }
  21. | { name: "project.delete", project: ProjectResult }
  22. | { name: "projectgroup.add" }
  23. | { name: "projectgroup.edit", projectGroup: ProjectGroup }
  24. | { name: "projectgroup.delete", projectGroup: ProjectGroup }
  25. | { name: "group.add" }
  26. | { name: "group.edit", group: GroupResult }
  27. | { name: "group.delete", group: GroupResult }
  28. | { name: "item.add", group: GroupResult }
  29. | { name: "item.edit", item: ItemResult }
  30. | { name: "item.delete", item: ItemResult }
  31. | { name: "goal.add" }
  32. | { name: "goal.edit", goal: GoalResult }
  33. | { name: "goal.delete", goal: GoalResult }
  34. | { name: "tasklink.add", project?: Project, task?: Task }
  35. | { name: "tasklink.delete", project: Project, task: Task }
  36. function createModalStore() {
  37. const {set, subscribe} = writable<ModalData>({name: "none"});
  38. return {
  39. subscribe,
  40. set,
  41. close() {
  42. set({name: "none"})
  43. },
  44. }
  45. }
  46. const modalStore = createModalStore();
  47. export default modalStore;