@aneuhold/core-ts-db-lib 1.0.120 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +48 -5
- package/lib/documents/BaseDocument.d.ts +1 -1
- package/lib/documents/BaseDocument.d.ts.map +1 -1
- package/lib/documents/BaseDocument.js +4 -6
- package/lib/documents/BaseDocument.js.map +1 -0
- package/lib/documents/BaseDocument.ts +9 -0
- package/lib/documents/BaseDocumentWithType.d.ts +1 -1
- package/lib/documents/BaseDocumentWithType.d.ts.map +1 -1
- package/lib/documents/BaseDocumentWithType.js +3 -8
- package/lib/documents/BaseDocumentWithType.js.map +1 -0
- package/lib/documents/BaseDocumentWithType.ts +5 -0
- package/lib/documents/common/ApiKey.d.ts +5 -4
- package/lib/documents/common/ApiKey.d.ts.map +1 -1
- package/lib/documents/common/ApiKey.js +10 -17
- package/lib/documents/common/ApiKey.js.map +1 -0
- package/lib/documents/common/ApiKey.ts +40 -0
- package/lib/documents/common/User.d.ts +2 -2
- package/lib/documents/common/User.d.ts.map +1 -1
- package/lib/documents/common/User.js +8 -15
- package/lib/documents/common/User.js.map +1 -0
- package/lib/documents/common/User.ts +63 -0
- package/lib/documents/dashboard/NonogramKatanaItem.d.ts +4 -4
- package/lib/documents/dashboard/NonogramKatanaItem.d.ts.map +1 -1
- package/lib/documents/dashboard/NonogramKatanaItem.js +4 -11
- package/lib/documents/dashboard/NonogramKatanaItem.js.map +1 -0
- package/lib/documents/dashboard/NonogramKatanaItem.ts +53 -0
- package/lib/documents/dashboard/NonogramKatanaUpgrade.d.ts +5 -5
- package/lib/documents/dashboard/NonogramKatanaUpgrade.d.ts.map +1 -1
- package/lib/documents/dashboard/NonogramKatanaUpgrade.js +4 -11
- package/lib/documents/dashboard/NonogramKatanaUpgrade.js.map +1 -0
- package/lib/documents/dashboard/NonogramKatanaUpgrade.ts +50 -0
- package/lib/documents/dashboard/Task.d.ts +7 -7
- package/lib/documents/dashboard/Task.d.ts.map +1 -1
- package/lib/documents/dashboard/Task.js +10 -17
- package/lib/documents/dashboard/Task.js.map +1 -0
- package/lib/documents/dashboard/Task.ts +173 -0
- package/lib/documents/dashboard/UserConfig.d.ts +6 -6
- package/lib/documents/dashboard/UserConfig.d.ts.map +1 -1
- package/lib/documents/dashboard/UserConfig.js +12 -19
- package/lib/documents/dashboard/UserConfig.js.map +1 -0
- package/lib/documents/dashboard/UserConfig.ts +110 -0
- package/lib/embedded-types/dashboard/nonogramKatanaItem/ItemName.d.ts.map +1 -1
- package/lib/embedded-types/dashboard/nonogramKatanaItem/ItemName.js +2 -3
- package/lib/embedded-types/dashboard/nonogramKatanaItem/ItemName.js.map +1 -0
- package/lib/embedded-types/dashboard/nonogramKatanaItem/ItemName.ts +97 -0
- package/lib/embedded-types/dashboard/nonogramKatanaUpgrade/UpgradeName.d.ts.map +1 -1
- package/lib/embedded-types/dashboard/nonogramKatanaUpgrade/UpgradeName.js +2 -3
- package/lib/embedded-types/dashboard/nonogramKatanaUpgrade/UpgradeName.js.map +1 -0
- package/lib/embedded-types/dashboard/nonogramKatanaUpgrade/UpgradeName.ts +263 -0
- package/lib/embedded-types/dashboard/task/FilterSettings.d.ts +2 -2
- package/lib/embedded-types/dashboard/task/FilterSettings.d.ts.map +1 -1
- package/lib/embedded-types/dashboard/task/FilterSettings.js +3 -6
- package/lib/embedded-types/dashboard/task/FilterSettings.js.map +1 -0
- package/lib/embedded-types/dashboard/task/FilterSettings.ts +100 -0
- package/lib/embedded-types/dashboard/task/RecurrenceInfo.d.ts +1 -1
- package/lib/embedded-types/dashboard/task/RecurrenceInfo.d.ts.map +1 -1
- package/lib/embedded-types/dashboard/task/RecurrenceInfo.js +8 -11
- package/lib/embedded-types/dashboard/task/RecurrenceInfo.js.map +1 -0
- package/lib/embedded-types/dashboard/task/RecurrenceInfo.ts +100 -0
- package/lib/embedded-types/dashboard/task/SortSettings.d.ts +2 -2
- package/lib/embedded-types/dashboard/task/SortSettings.d.ts.map +1 -1
- package/lib/embedded-types/dashboard/task/SortSettings.js +7 -11
- package/lib/embedded-types/dashboard/task/SortSettings.js.map +1 -0
- package/lib/embedded-types/dashboard/task/SortSettings.ts +89 -0
- package/lib/embedded-types/dashboard/userConfig/Tags.d.ts.map +1 -1
- package/lib/embedded-types/dashboard/userConfig/Tags.js +2 -2
- package/lib/embedded-types/dashboard/userConfig/Tags.js.map +1 -0
- package/lib/embedded-types/dashboard/userConfig/Tags.ts +9 -0
- package/lib/index.d.ts +20 -20
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +19 -71
- package/lib/index.js.map +1 -0
- package/lib/index.ts +103 -0
- package/lib/schemas/required-refs/RequiredUserId.d.ts +1 -1
- package/lib/schemas/required-refs/RequiredUserId.d.ts.map +1 -1
- package/lib/schemas/required-refs/RequiredUserId.js +3 -8
- package/lib/schemas/required-refs/RequiredUserId.js.map +1 -0
- package/lib/schemas/required-refs/RequiredUserId.ts +9 -0
- package/lib/schemas/type-guards/commonTypeGuards.d.ts.map +1 -1
- package/lib/schemas/type-guards/commonTypeGuards.js +6 -12
- package/lib/schemas/type-guards/commonTypeGuards.js.map +1 -0
- package/lib/schemas/type-guards/commonTypeGuards.ts +29 -0
- package/lib/schemas/validators/DocumentValidator.d.ts +1 -1
- package/lib/schemas/validators/DocumentValidator.d.ts.map +1 -1
- package/lib/schemas/validators/DocumentValidator.js +2 -2
- package/lib/schemas/validators/DocumentValidator.js.map +1 -0
- package/lib/schemas/validators/DocumentValidator.ts +5 -0
- package/lib/schemas/validators/ValidateUtil.d.ts.map +1 -1
- package/lib/schemas/validators/ValidateUtil.js +8 -10
- package/lib/schemas/validators/ValidateUtil.js.map +1 -0
- package/lib/schemas/validators/ValidateUtil.spec.ts +75 -0
- package/lib/schemas/validators/ValidateUtil.ts +193 -0
- package/lib/services/DocumentService.d.ts +1 -1
- package/lib/services/DocumentService.d.ts.map +1 -1
- package/lib/services/DocumentService.js +4 -6
- package/lib/services/DocumentService.js.map +1 -0
- package/lib/services/DocumentService.spec.ts +28 -0
- package/lib/services/DocumentService.ts +18 -0
- package/lib/services/dashboard/Task/TaskFilterService.d.ts +2 -2
- package/lib/services/dashboard/Task/TaskFilterService.d.ts.map +1 -1
- package/lib/services/dashboard/Task/TaskFilterService.js +2 -4
- package/lib/services/dashboard/Task/TaskFilterService.js.map +1 -0
- package/lib/services/dashboard/Task/TaskFilterService.ts +105 -0
- package/lib/services/dashboard/Task/TaskRecurrenceService.d.ts +2 -2
- package/lib/services/dashboard/Task/TaskRecurrenceService.d.ts.map +1 -1
- package/lib/services/dashboard/Task/TaskRecurrenceService.js +21 -23
- package/lib/services/dashboard/Task/TaskRecurrenceService.js.map +1 -0
- package/lib/services/dashboard/Task/TaskRecurrenceService.ts +172 -0
- package/lib/services/dashboard/Task/TaskService.d.ts +5 -5
- package/lib/services/dashboard/Task/TaskService.d.ts.map +1 -1
- package/lib/services/dashboard/Task/TaskService.js +13 -18
- package/lib/services/dashboard/Task/TaskService.js.map +1 -0
- package/lib/services/dashboard/Task/TaskService.spec.ts +653 -0
- package/lib/services/dashboard/Task/TaskService.ts +189 -0
- package/lib/services/dashboard/Task/TaskSortService.d.ts +3 -3
- package/lib/services/dashboard/Task/TaskSortService.d.ts.map +1 -1
- package/lib/services/dashboard/Task/TaskSortService.js +6 -8
- package/lib/services/dashboard/Task/TaskSortService.js.map +1 -0
- package/lib/services/dashboard/Task/TaskSortService.ts +229 -0
- package/package.json +36 -29
- package/lib/schemas/validators/ValidateUtil.spec.d.ts +0 -2
- package/lib/schemas/validators/ValidateUtil.spec.d.ts.map +0 -1
- package/lib/schemas/validators/ValidateUtil.spec.js +0 -64
- package/lib/services/DocumentService.spec.d.ts +0 -2
- package/lib/services/DocumentService.spec.d.ts.map +0 -1
- package/lib/services/DocumentService.spec.js +0 -30
- package/lib/services/dashboard/Task/TaskService.spec.d.ts +0 -2
- package/lib/services/dashboard/Task/TaskService.spec.d.ts.map +0 -1
- package/lib/services/dashboard/Task/TaskService.spec.js +0 -508
|
@@ -1,37 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const RecurrenceInfo_1 = require("../../../embedded-types/dashboard/task/RecurrenceInfo");
|
|
5
|
-
class DashboardTaskRecurrenceService {
|
|
1
|
+
import { DateService } from '@aneuhold/core-ts-lib';
|
|
2
|
+
import { RecurrenceBasis, RecurrenceFrequencyType } from '../../../embedded-types/dashboard/task/RecurrenceInfo.js';
|
|
3
|
+
export default class DashboardTaskRecurrenceService {
|
|
6
4
|
/**
|
|
7
5
|
* Gets the next frequency date from the provided basis date. Returns null
|
|
8
6
|
* if the provided frequency is in an invalid state.
|
|
9
7
|
*/
|
|
10
8
|
static getNextFrequencyDate(basisDate, frequency) {
|
|
11
9
|
// Last day of month
|
|
12
|
-
if (frequency.type ===
|
|
13
|
-
return
|
|
10
|
+
if (frequency.type === RecurrenceFrequencyType.lastDayOfMonth) {
|
|
11
|
+
return DateService.getLastDayOfGivenMonth(basisDate);
|
|
14
12
|
}
|
|
15
13
|
// Every X Time Unit
|
|
16
|
-
if (frequency.type ===
|
|
14
|
+
if (frequency.type === RecurrenceFrequencyType.everyXTimeUnit) {
|
|
17
15
|
if (!frequency.everyXTimeUnit) {
|
|
18
16
|
return null;
|
|
19
17
|
}
|
|
20
18
|
if (frequency.everyXTimeUnit.timeUnit === 'day') {
|
|
21
|
-
return
|
|
19
|
+
return DateService.addDays(basisDate, frequency.everyXTimeUnit.x);
|
|
22
20
|
}
|
|
23
21
|
if (frequency.everyXTimeUnit.timeUnit === 'week') {
|
|
24
|
-
return
|
|
22
|
+
return DateService.addDays(basisDate, frequency.everyXTimeUnit.x * 7);
|
|
25
23
|
}
|
|
26
24
|
if (frequency.everyXTimeUnit.timeUnit === 'month') {
|
|
27
|
-
return
|
|
25
|
+
return DateService.addMonths(basisDate, frequency.everyXTimeUnit.x);
|
|
28
26
|
}
|
|
29
27
|
if (frequency.everyXTimeUnit.timeUnit === 'year') {
|
|
30
|
-
return
|
|
28
|
+
return DateService.addYears(basisDate, frequency.everyXTimeUnit.x);
|
|
31
29
|
}
|
|
32
30
|
}
|
|
33
31
|
// Week Day Set
|
|
34
|
-
if (frequency.type ===
|
|
32
|
+
if (frequency.type === RecurrenceFrequencyType.weekDaySet) {
|
|
35
33
|
if (!frequency.weekDaySet) {
|
|
36
34
|
return null;
|
|
37
35
|
}
|
|
@@ -46,18 +44,18 @@ class DashboardTaskRecurrenceService {
|
|
|
46
44
|
}
|
|
47
45
|
}
|
|
48
46
|
// Every X Weekday of Month
|
|
49
|
-
if (frequency.type ===
|
|
47
|
+
if (frequency.type === RecurrenceFrequencyType.everyXWeekdayOfMonth) {
|
|
50
48
|
if (!frequency.everyXWeekdayOfMonth) {
|
|
51
49
|
return null;
|
|
52
50
|
}
|
|
53
51
|
// Start by adding one day
|
|
54
|
-
let newDate =
|
|
52
|
+
let newDate = DateService.getWeekDayOfXWeekOfMonth(DateService.addDays(basisDate, 1), frequency.everyXWeekdayOfMonth.weekDay, frequency.everyXWeekdayOfMonth.weekOfMonth);
|
|
55
53
|
let monthsPassed = 0;
|
|
56
54
|
while (!newDate ||
|
|
57
55
|
newDate < basisDate ||
|
|
58
56
|
newDate.getTime() === basisDate.getTime()) {
|
|
59
57
|
monthsPassed += 1;
|
|
60
|
-
newDate =
|
|
58
|
+
newDate = DateService.getWeekDayOfXWeekOfMonth(DateService.addMonths(basisDate, monthsPassed), frequency.everyXWeekdayOfMonth.weekDay, frequency.everyXWeekdayOfMonth.weekOfMonth);
|
|
61
59
|
if (monthsPassed > 11) {
|
|
62
60
|
return null;
|
|
63
61
|
}
|
|
@@ -86,32 +84,32 @@ class DashboardTaskRecurrenceService {
|
|
|
86
84
|
// No dates to move forward
|
|
87
85
|
(!task.dueDate && !task.startDate) ||
|
|
88
86
|
// Invalid start date recurrence basis
|
|
89
|
-
(task.recurrenceInfo.recurrenceBasis ===
|
|
87
|
+
(task.recurrenceInfo.recurrenceBasis === RecurrenceBasis.startDate &&
|
|
90
88
|
!task.parentRecurringTaskInfo.startDate) ||
|
|
91
89
|
// Invalid due date recurrence basis
|
|
92
|
-
(task.recurrenceInfo.recurrenceBasis ===
|
|
90
|
+
(task.recurrenceInfo.recurrenceBasis === RecurrenceBasis.dueDate &&
|
|
93
91
|
!task.parentRecurringTaskInfo.dueDate)) {
|
|
94
92
|
return;
|
|
95
93
|
}
|
|
96
94
|
// Validation for moving dates based on their own recurrence
|
|
97
95
|
}
|
|
98
96
|
else if (!task.recurrenceInfo ||
|
|
99
|
-
(task.recurrenceInfo.recurrenceBasis ===
|
|
97
|
+
(task.recurrenceInfo.recurrenceBasis === RecurrenceBasis.startDate &&
|
|
100
98
|
!task.startDate) ||
|
|
101
|
-
(task.recurrenceInfo.recurrenceBasis ===
|
|
99
|
+
(task.recurrenceInfo.recurrenceBasis === RecurrenceBasis.dueDate &&
|
|
102
100
|
!task.dueDate)) {
|
|
103
101
|
return;
|
|
104
102
|
}
|
|
105
103
|
let diff = 0;
|
|
106
104
|
if (task.parentRecurringTaskInfo) {
|
|
107
|
-
if (task.recurrenceInfo.recurrenceBasis ===
|
|
105
|
+
if (task.recurrenceInfo.recurrenceBasis === RecurrenceBasis.startDate) {
|
|
108
106
|
diff = this.getDiffForDateUpdate(task.parentRecurringTaskInfo.startDate, task.recurrenceInfo.frequency);
|
|
109
107
|
}
|
|
110
108
|
else {
|
|
111
109
|
diff = this.getDiffForDateUpdate(task.parentRecurringTaskInfo.dueDate, task.recurrenceInfo.frequency);
|
|
112
110
|
}
|
|
113
111
|
}
|
|
114
|
-
else if (task.recurrenceInfo.recurrenceBasis ===
|
|
112
|
+
else if (task.recurrenceInfo.recurrenceBasis === RecurrenceBasis.startDate) {
|
|
115
113
|
diff = this.getDiffForDateUpdate(task.startDate, task.recurrenceInfo.frequency);
|
|
116
114
|
}
|
|
117
115
|
else {
|
|
@@ -135,4 +133,4 @@ class DashboardTaskRecurrenceService {
|
|
|
135
133
|
return nextFrequencyDate.getTime() - basisDate.getTime();
|
|
136
134
|
}
|
|
137
135
|
}
|
|
138
|
-
|
|
136
|
+
//# sourceMappingURL=TaskRecurrenceService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskRecurrenceService.js","sourceRoot":"./src/","sources":["services/dashboard/Task/TaskRecurrenceService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { DateService } from '@aneuhold/core-ts-lib';
|
|
2
|
+
import DashboardTask from '../../../documents/dashboard/Task.js';
|
|
3
|
+
import {
|
|
4
|
+
RecurrenceBasis,
|
|
5
|
+
RecurrenceFrequency,
|
|
6
|
+
RecurrenceFrequencyType
|
|
7
|
+
} from '../../../embedded-types/dashboard/task/RecurrenceInfo.js';
|
|
8
|
+
|
|
9
|
+
export default class DashboardTaskRecurrenceService {
|
|
10
|
+
/**
|
|
11
|
+
* Gets the next frequency date from the provided basis date. Returns null
|
|
12
|
+
* if the provided frequency is in an invalid state.
|
|
13
|
+
*/
|
|
14
|
+
static getNextFrequencyDate(basisDate: Date, frequency: RecurrenceFrequency) {
|
|
15
|
+
// Last day of month
|
|
16
|
+
if (frequency.type === RecurrenceFrequencyType.lastDayOfMonth) {
|
|
17
|
+
return DateService.getLastDayOfGivenMonth(basisDate);
|
|
18
|
+
}
|
|
19
|
+
// Every X Time Unit
|
|
20
|
+
if (frequency.type === RecurrenceFrequencyType.everyXTimeUnit) {
|
|
21
|
+
if (!frequency.everyXTimeUnit) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
if (frequency.everyXTimeUnit.timeUnit === 'day') {
|
|
25
|
+
return DateService.addDays(basisDate, frequency.everyXTimeUnit.x);
|
|
26
|
+
}
|
|
27
|
+
if (frequency.everyXTimeUnit.timeUnit === 'week') {
|
|
28
|
+
return DateService.addDays(basisDate, frequency.everyXTimeUnit.x * 7);
|
|
29
|
+
}
|
|
30
|
+
if (frequency.everyXTimeUnit.timeUnit === 'month') {
|
|
31
|
+
return DateService.addMonths(basisDate, frequency.everyXTimeUnit.x);
|
|
32
|
+
}
|
|
33
|
+
if (frequency.everyXTimeUnit.timeUnit === 'year') {
|
|
34
|
+
return DateService.addYears(basisDate, frequency.everyXTimeUnit.x);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// Week Day Set
|
|
38
|
+
if (frequency.type === RecurrenceFrequencyType.weekDaySet) {
|
|
39
|
+
if (!frequency.weekDaySet) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const newDate = new Date(basisDate);
|
|
43
|
+
let daysToAdd = 0;
|
|
44
|
+
while (daysToAdd < 7) {
|
|
45
|
+
newDate.setDate(newDate.getDate() + 1);
|
|
46
|
+
if (frequency.weekDaySet.includes(newDate.getDay())) {
|
|
47
|
+
return newDate;
|
|
48
|
+
}
|
|
49
|
+
daysToAdd += 1;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Every X Weekday of Month
|
|
53
|
+
if (frequency.type === RecurrenceFrequencyType.everyXWeekdayOfMonth) {
|
|
54
|
+
if (!frequency.everyXWeekdayOfMonth) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
// Start by adding one day
|
|
58
|
+
let newDate = DateService.getWeekDayOfXWeekOfMonth(
|
|
59
|
+
DateService.addDays(basisDate, 1),
|
|
60
|
+
frequency.everyXWeekdayOfMonth.weekDay,
|
|
61
|
+
frequency.everyXWeekdayOfMonth.weekOfMonth
|
|
62
|
+
);
|
|
63
|
+
let monthsPassed = 0;
|
|
64
|
+
while (
|
|
65
|
+
!newDate ||
|
|
66
|
+
newDate < basisDate ||
|
|
67
|
+
newDate.getTime() === basisDate.getTime()
|
|
68
|
+
) {
|
|
69
|
+
monthsPassed += 1;
|
|
70
|
+
newDate = DateService.getWeekDayOfXWeekOfMonth(
|
|
71
|
+
DateService.addMonths(basisDate, monthsPassed),
|
|
72
|
+
frequency.everyXWeekdayOfMonth.weekDay,
|
|
73
|
+
frequency.everyXWeekdayOfMonth.weekOfMonth
|
|
74
|
+
);
|
|
75
|
+
if (monthsPassed > 11) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return newDate;
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Moves the start and due date forward by one frequency.
|
|
86
|
+
*
|
|
87
|
+
* This does not take into account the recurrence effect. That should be
|
|
88
|
+
* handled on the frontend.
|
|
89
|
+
*
|
|
90
|
+
* Makes no changes if the state of the task is invalid for recurrence or
|
|
91
|
+
* there isn't recurrence info.
|
|
92
|
+
*/
|
|
93
|
+
static updateDatesForRecurrence(task: DashboardTask): void {
|
|
94
|
+
// Initial basic validation
|
|
95
|
+
if (!task.recurrenceInfo) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
// Validation for dates based on parent
|
|
99
|
+
if (task.parentRecurringTaskInfo) {
|
|
100
|
+
if (
|
|
101
|
+
// No dates to move forward
|
|
102
|
+
(!task.dueDate && !task.startDate) ||
|
|
103
|
+
// Invalid start date recurrence basis
|
|
104
|
+
(task.recurrenceInfo.recurrenceBasis === RecurrenceBasis.startDate &&
|
|
105
|
+
!task.parentRecurringTaskInfo.startDate) ||
|
|
106
|
+
// Invalid due date recurrence basis
|
|
107
|
+
(task.recurrenceInfo.recurrenceBasis === RecurrenceBasis.dueDate &&
|
|
108
|
+
!task.parentRecurringTaskInfo.dueDate)
|
|
109
|
+
) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
// Validation for moving dates based on their own recurrence
|
|
113
|
+
} else if (
|
|
114
|
+
!task.recurrenceInfo ||
|
|
115
|
+
(task.recurrenceInfo.recurrenceBasis === RecurrenceBasis.startDate &&
|
|
116
|
+
!task.startDate) ||
|
|
117
|
+
(task.recurrenceInfo.recurrenceBasis === RecurrenceBasis.dueDate &&
|
|
118
|
+
!task.dueDate)
|
|
119
|
+
) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
let diff = 0;
|
|
124
|
+
|
|
125
|
+
if (task.parentRecurringTaskInfo) {
|
|
126
|
+
if (task.recurrenceInfo.recurrenceBasis === RecurrenceBasis.startDate) {
|
|
127
|
+
diff = this.getDiffForDateUpdate(
|
|
128
|
+
task.parentRecurringTaskInfo.startDate,
|
|
129
|
+
task.recurrenceInfo.frequency
|
|
130
|
+
);
|
|
131
|
+
} else {
|
|
132
|
+
diff = this.getDiffForDateUpdate(
|
|
133
|
+
task.parentRecurringTaskInfo.dueDate,
|
|
134
|
+
task.recurrenceInfo.frequency
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
} else if (
|
|
138
|
+
task.recurrenceInfo.recurrenceBasis === RecurrenceBasis.startDate
|
|
139
|
+
) {
|
|
140
|
+
diff = this.getDiffForDateUpdate(
|
|
141
|
+
task.startDate,
|
|
142
|
+
task.recurrenceInfo.frequency
|
|
143
|
+
);
|
|
144
|
+
} else {
|
|
145
|
+
diff = this.getDiffForDateUpdate(
|
|
146
|
+
task.dueDate,
|
|
147
|
+
task.recurrenceInfo.frequency
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (task.startDate) {
|
|
152
|
+
task.startDate = new Date(task.startDate.getTime() + diff);
|
|
153
|
+
}
|
|
154
|
+
if (task.dueDate) {
|
|
155
|
+
task.dueDate = new Date(task.dueDate.getTime() + diff);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
private static getDiffForDateUpdate(
|
|
160
|
+
basisDate: Date | undefined,
|
|
161
|
+
frequency: RecurrenceFrequency
|
|
162
|
+
) {
|
|
163
|
+
if (!basisDate) {
|
|
164
|
+
return 0;
|
|
165
|
+
}
|
|
166
|
+
const nextFrequencyDate = this.getNextFrequencyDate(basisDate, frequency);
|
|
167
|
+
if (!nextFrequencyDate) {
|
|
168
|
+
return 0;
|
|
169
|
+
}
|
|
170
|
+
return nextFrequencyDate.getTime() - basisDate.getTime();
|
|
171
|
+
}
|
|
172
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ObjectId } from 'bson';
|
|
2
|
-
import DashboardTask, { DashboardTaskMap } from '../../../documents/dashboard/Task';
|
|
3
|
-
import { DashboardTaskListFilterSettings } from '../../../embedded-types/dashboard/task/FilterSettings';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
2
|
+
import DashboardTask, { DashboardTaskMap } from '../../../documents/dashboard/Task.js';
|
|
3
|
+
import { DashboardTaskListFilterSettings } from '../../../embedded-types/dashboard/task/FilterSettings.js';
|
|
4
|
+
import { RecurrenceFrequency } from '../../../embedded-types/dashboard/task/RecurrenceInfo.js';
|
|
5
|
+
import { DashboardTaskListSortSettings, DashboardTaskSortDirection } from '../../../embedded-types/dashboard/task/SortSettings.js';
|
|
6
|
+
import { DashboardTagSettings } from '../../../embedded-types/dashboard/userConfig/Tags.js';
|
|
7
7
|
/**
|
|
8
8
|
* A type for the task filter settings for a particular task.
|
|
9
9
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskService.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"TaskService.d.ts","sourceRoot":"./src/","sources":["services/dashboard/Task/TaskService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,aAAa,EAAE,EACpB,gBAAgB,EACjB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,+BAA+B,EAAE,MAAM,0DAA0D,CAAC;AAC3G,OAAO,EAAE,mBAAmB,EAAE,MAAM,0DAA0D,CAAC;AAC/F,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,EAC3B,MAAM,wDAAwD,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AAO5F;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B;;;;OAIG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACvC;;OAEG;IACH,MAAM,CAAC,cAAc,iBACL,aAAa,EAAE,iBACd,QAAQ,EAAE,KACxB,QAAQ,EAAE,CA2BX;IAEF;;;OAGG;IACH,MAAM,CAAC,oBAAoB,CACzB,SAAS,EAAE,IAAI,EACf,SAAS,EAAE,mBAAmB,GAC7B,IAAI,GAAG,IAAI;IAOd;;;;;;;;OAQG;IACH,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAI1D;;;;;;;OAOG;IACH,MAAM,CAAC,2BAA2B,CAChC,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,+BAA+B,EAC/C,YAAY,EAAE,6BAA6B,EAC3C,WAAW,EAAE,oBAAoB,EACjC,QAAQ,CAAC,EAAE,2BAA2B,GACrC,gCAAgC;IA8BnC;;;;OAIG;IACH,MAAM,CAAC,eAAe,CACpB,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,oBAAoB,EACjC,uBAAuB,EAAE,MAAM,EAC/B,aAAa,EAAE,0BAA0B,GACxC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAWzB,OAAO,CAAC,MAAM,CAAC,kBAAkB;CAsBlC"}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const bson_1 = require("bson");
|
|
7
|
-
const TaskRecurrenceService_1 = __importDefault(require("./TaskRecurrenceService"));
|
|
8
|
-
const TaskFilterService_1 = __importDefault(require("./TaskFilterService"));
|
|
9
|
-
const TaskSortService_1 = __importDefault(require("./TaskSortService"));
|
|
10
|
-
class DashboardTaskService {
|
|
1
|
+
import { ObjectId } from 'bson';
|
|
2
|
+
import DashboardTaskFilterService from './TaskFilterService.js';
|
|
3
|
+
import DashboardTaskRecurrenceService from './TaskRecurrenceService.js';
|
|
4
|
+
import DashboardTaskSortService from './TaskSortService.js';
|
|
5
|
+
export default class DashboardTaskService {
|
|
11
6
|
/**
|
|
12
7
|
* Gets all the children task IDs for the given parent task IDs.
|
|
13
8
|
*/
|
|
@@ -28,7 +23,7 @@ class DashboardTaskService {
|
|
|
28
23
|
const task = taskIdToTaskDict[taskId.toString()];
|
|
29
24
|
if (task) {
|
|
30
25
|
const childrenTaskIds = this.getChildrenTaskIds(taskIdToTaskDict, parentToTaskIdsDict, taskId.toString());
|
|
31
|
-
childrenIds.push(...childrenTaskIds.map((id) => new
|
|
26
|
+
childrenIds.push(...childrenTaskIds.map((id) => new ObjectId(id)));
|
|
32
27
|
}
|
|
33
28
|
});
|
|
34
29
|
return childrenIds;
|
|
@@ -38,7 +33,7 @@ class DashboardTaskService {
|
|
|
38
33
|
* if the provided frequency is in an invalid state.
|
|
39
34
|
*/
|
|
40
35
|
static getNextFrequencyDate(basisDate, frequency) {
|
|
41
|
-
return
|
|
36
|
+
return DashboardTaskRecurrenceService.getNextFrequencyDate(basisDate, frequency);
|
|
42
37
|
}
|
|
43
38
|
/**
|
|
44
39
|
* Moves the start and due date forward by one frequency.
|
|
@@ -50,7 +45,7 @@ class DashboardTaskService {
|
|
|
50
45
|
* there isn't recurrence info.
|
|
51
46
|
*/
|
|
52
47
|
static updateDatesForRecurrence(task) {
|
|
53
|
-
|
|
48
|
+
DashboardTaskRecurrenceService.updateDatesForRecurrence(task);
|
|
54
49
|
}
|
|
55
50
|
/**
|
|
56
51
|
* Gets the filtered and sorted set of task ids for a particular category.
|
|
@@ -63,13 +58,13 @@ class DashboardTaskService {
|
|
|
63
58
|
static getFilteredAndSortedTaskIds(taskMap, category, filterSettings, sortSettings, tagSettings, taskInfo) {
|
|
64
59
|
let filterResult;
|
|
65
60
|
if (!taskInfo) {
|
|
66
|
-
filterResult =
|
|
61
|
+
filterResult = DashboardTaskFilterService.filter(taskMap, Object.keys(taskMap), filterSettings, category);
|
|
67
62
|
}
|
|
68
63
|
else {
|
|
69
|
-
filterResult =
|
|
64
|
+
filterResult = DashboardTaskFilterService.filter(taskMap, taskInfo.allChildrenIds, filterSettings, category, taskInfo.taskId);
|
|
70
65
|
}
|
|
71
66
|
return {
|
|
72
|
-
filteredAndSortedIds:
|
|
67
|
+
filteredAndSortedIds: DashboardTaskSortService.sort(taskMap, filterResult.resultIds, sortSettings, tagSettings),
|
|
73
68
|
removedIds: filterResult.removedIds
|
|
74
69
|
};
|
|
75
70
|
}
|
|
@@ -79,7 +74,7 @@ class DashboardTaskService {
|
|
|
79
74
|
* noPriorityTagsIndicator will be used as the header name.
|
|
80
75
|
*/
|
|
81
76
|
static getTagHeaderMap(taskMap, taskIds, userId, tagSettings, noPriorityTagsIndicator, sortDirection) {
|
|
82
|
-
return
|
|
77
|
+
return DashboardTaskSortService.getTagHeaderMap(taskMap, taskIds, userId, tagSettings, noPriorityTagsIndicator, sortDirection);
|
|
83
78
|
}
|
|
84
79
|
static getChildrenTaskIds(taskIdToTaskDict, parentToTaskIdsDict, taskId) {
|
|
85
80
|
const childrenIds = parentToTaskIdsDict[taskId];
|
|
@@ -96,4 +91,4 @@ class DashboardTaskService {
|
|
|
96
91
|
return childrenIds;
|
|
97
92
|
}
|
|
98
93
|
}
|
|
99
|
-
|
|
94
|
+
//# sourceMappingURL=TaskService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskService.js","sourceRoot":"./src/","sources":["services/dashboard/Task/TaskService.ts"],"names":[],"mappings":"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"}
|