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.

66 lines
1.3 KiB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
  1. import type Group from "./group";
  2. import type Item from "./item";
  3. import type { LogResult } from "./log";
  4. export type GoalCompositionMode = "task" | "item"
  5. export default interface Goal {
  6. id: string
  7. groupId: string
  8. itemId?: string
  9. startTime: string
  10. endTime: string
  11. amount: number
  12. name: string
  13. description: string
  14. unweighted: boolean
  15. compositionMode: GoalCompositionMode
  16. taskFilter?: string
  17. itemFilter?: string
  18. }
  19. export interface GoalFilter {
  20. minTime?: Date
  21. maxTime?: Date
  22. includesTime?: Date
  23. }
  24. export interface GoalResult extends Goal {
  25. group: Group
  26. items: GoalResultItem[]
  27. logs: LogResult[]
  28. completedAmount: number
  29. }
  30. interface GoalResultItem extends Item {
  31. completedAmount: number
  32. }
  33. export interface GoalInput {
  34. groupId: string
  35. itemId: string
  36. startTime: string | Date
  37. endTime: string | Date
  38. amount: number
  39. name: string
  40. description: string
  41. unweighted: boolean
  42. compositionMode: string
  43. taskFilter?: string
  44. itemFilter?: string
  45. }
  46. export interface GoalUpdate {
  47. itemId?: string
  48. startTime?: string | Date
  49. endTime?: string | Date
  50. amount?: number
  51. name?: string
  52. description?: string
  53. unweighted?: boolean
  54. compositionMode?: string
  55. clearItemId?: boolean
  56. taskFilter?: string
  57. clearTaskFilter: boolean
  58. itemFilter?: string
  59. clearItemFilter: boolean
  60. }