@dhis2/analytics 24.8.0 → 24.9.0-alpha.1
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/CHANGELOG.md +34 -1
- package/build/cjs/components/PeriodDimension/PeriodTransfer.js +38 -4
- package/build/cjs/components/PeriodDimension/__tests__/PeriodSelector.spec.js +13 -0
- package/build/cjs/components/PeriodDimension/utils/fixedPeriods.js +207 -478
- package/build/cjs/locales/en/translations.json +0 -14
- package/build/es/components/PeriodDimension/PeriodTransfer.js +35 -4
- package/build/es/components/PeriodDimension/__tests__/PeriodSelector.spec.js +13 -0
- package/build/es/components/PeriodDimension/utils/fixedPeriods.js +205 -477
- package/build/es/locales/en/translations.json +0 -14
- package/package.json +2 -1
|
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.parsePeriodCode = exports.getYearOffsetFromNow = exports.getFixedPeriodsOptionsById = exports.getFixedPeriodsOptions = void 0;
|
|
7
7
|
|
|
8
|
+
var _multiCalendarDates = require("@dhis2/multi-calendar-dates");
|
|
9
|
+
|
|
8
10
|
var _index = _interopRequireDefault(require("../../../locales/index.js"));
|
|
9
11
|
|
|
10
12
|
var _index2 = require("./index.js");
|
|
@@ -49,452 +51,180 @@ const PERIOD_TYPE_REGEX = {
|
|
|
49
51
|
|
|
50
52
|
};
|
|
51
53
|
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
54
|
+
const getPeriods = _ref => {
|
|
55
|
+
let {
|
|
56
|
+
periodType,
|
|
57
|
+
config,
|
|
58
|
+
fnFilter,
|
|
59
|
+
periodSettings = {}
|
|
60
|
+
} = _ref;
|
|
61
|
+
const offset = parseInt(config.offset, 10);
|
|
62
|
+
const isFilter = config.filterFuturePeriods;
|
|
63
|
+
const isReverse = periodType.match(/^FY|YEARLY/) ? true : config.reversePeriods;
|
|
64
|
+
const {
|
|
65
|
+
calendar = 'gregory',
|
|
66
|
+
locale = 'en'
|
|
67
|
+
} = periodSettings;
|
|
68
|
+
const now = (0, _multiCalendarDates.getNowInCalendar)(calendar);
|
|
69
|
+
const year = (now.eraYear || now.year) + offset;
|
|
70
|
+
const params = {
|
|
71
|
+
periodType,
|
|
72
|
+
year,
|
|
73
|
+
calendar,
|
|
74
|
+
locale,
|
|
75
|
+
startingDay: config.startDay
|
|
76
|
+
};
|
|
77
|
+
let periods = (0, _multiCalendarDates.generateFixedPeriods)(params);
|
|
78
|
+
periods = isFilter ? fnFilter(periods) : periods;
|
|
79
|
+
periods = !isReverse ? periods : periods.reverse();
|
|
80
|
+
return periods;
|
|
55
81
|
};
|
|
56
82
|
|
|
57
|
-
const getDailyPeriodType = (
|
|
83
|
+
const getDailyPeriodType = (fnFilter, periodSettings) => {
|
|
58
84
|
return config => {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
while (date.getFullYear() === year) {
|
|
67
|
-
const period = {};
|
|
68
|
-
period.startDate = formatYyyyMmDd(date);
|
|
69
|
-
period.endDate = period.startDate;
|
|
70
|
-
period.name = period.startDate;
|
|
71
|
-
period.iso = period.startDate.replace(/-/g, '');
|
|
72
|
-
period.id = period.iso;
|
|
73
|
-
periods.push(period);
|
|
74
|
-
date.setDate(date.getDate() + 1);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
periods = isFilter ? fnFilter(periods) : periods;
|
|
78
|
-
periods = isReverse ? periods.reverse() : periods;
|
|
79
|
-
return periods;
|
|
85
|
+
return getPeriods({
|
|
86
|
+
periodType: 'DAILY',
|
|
87
|
+
config,
|
|
88
|
+
fnFilter,
|
|
89
|
+
periodSettings
|
|
90
|
+
});
|
|
80
91
|
};
|
|
81
92
|
};
|
|
82
93
|
|
|
83
|
-
const getWeeklyPeriodType = (
|
|
84
|
-
// Calculate the first date of an EPI year base on ISO standard ( first week always contains 4th Jan )
|
|
85
|
-
const getEpiWeekStartDay = (year, startDayOfWeek) => {
|
|
86
|
-
const jan4 = new Date(year, 0, 4);
|
|
87
|
-
const jan4DayOfWeek = jan4.getDay();
|
|
88
|
-
const startDate = jan4;
|
|
89
|
-
const dayDiff = jan4DayOfWeek - startDayOfWeek;
|
|
90
|
-
|
|
91
|
-
if (dayDiff > 0) {
|
|
92
|
-
startDate.setDate(jan4.getDate() - dayDiff);
|
|
93
|
-
} else if (dayDiff < 0) {
|
|
94
|
-
startDate.setDate(jan4.getDate() - dayDiff);
|
|
95
|
-
startDate.setDate(startDate.getDate() - 7);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
return startDate;
|
|
99
|
-
};
|
|
100
|
-
|
|
94
|
+
const getWeeklyPeriodType = (weekObj, fnFilter, periodSettings) => {
|
|
101
95
|
return config => {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
while (date.getFullYear() <= year) {
|
|
111
|
-
const period = {};
|
|
112
|
-
period.startDate = formatYyyyMmDd(date);
|
|
113
|
-
period.iso = "".concat(year).concat(weekObj.shortName, "W").concat(week);
|
|
114
|
-
period.id = period.iso;
|
|
115
|
-
date.setDate(date.getDate() + 6);
|
|
116
|
-
period.endDate = formatYyyyMmDd(date);
|
|
117
|
-
const weekNumber = week;
|
|
118
|
-
period.name = "".concat(_index.default.t('Week {{weekNumber}}', {
|
|
119
|
-
weekNumber
|
|
120
|
-
}), " - ").concat(period.startDate, " - ").concat(period.endDate); // if end date is Jan 4th or later, week belongs to next year
|
|
121
|
-
|
|
122
|
-
if (date.getFullYear() > year && date.getDate() >= 4) {
|
|
123
|
-
break;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
periods.push(period);
|
|
127
|
-
date.setDate(date.getDate() + 1);
|
|
128
|
-
week += 1;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
periods = isFilter ? fnFilter(periods) : periods;
|
|
132
|
-
periods = isReverse ? periods.reverse() : periods;
|
|
133
|
-
return periods;
|
|
96
|
+
return getPeriods({
|
|
97
|
+
periodType: 'WEEKLY',
|
|
98
|
+
config: { ...config,
|
|
99
|
+
startDay: weekObj.startDay
|
|
100
|
+
},
|
|
101
|
+
fnFilter,
|
|
102
|
+
periodSettings
|
|
103
|
+
});
|
|
134
104
|
};
|
|
135
105
|
};
|
|
136
106
|
|
|
137
|
-
const getBiWeeklyPeriodType = (
|
|
107
|
+
const getBiWeeklyPeriodType = (fnFilter, periodSettings) => {
|
|
138
108
|
return config => {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
const day = date.getDay();
|
|
146
|
-
let biWeek = 1;
|
|
147
|
-
|
|
148
|
-
if (day <= 4) {
|
|
149
|
-
date.setDate(date.getDate() - (day - 1));
|
|
150
|
-
} else {
|
|
151
|
-
date.setDate(date.getDate() + (8 - day));
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
while (date.getFullYear() <= year) {
|
|
155
|
-
const period = {};
|
|
156
|
-
period.iso = "".concat(year, "BiW").concat(biWeek);
|
|
157
|
-
period.id = period.iso;
|
|
158
|
-
period.startDate = formatYyyyMmDd(date);
|
|
159
|
-
date.setDate(date.getDate() + 13);
|
|
160
|
-
period.endDate = formatYyyyMmDd(date);
|
|
161
|
-
const biWeekNumber = biWeek;
|
|
162
|
-
period.name = "".concat(_index.default.t('Bi-Week {{biWeekNumber}}', {
|
|
163
|
-
biWeekNumber
|
|
164
|
-
}), " - ").concat(period.startDate, " - ").concat(period.endDate); // if end date is Jan 4th or later, biweek belongs to next year
|
|
165
|
-
|
|
166
|
-
if (date.getFullYear() > year && date.getDate() >= 4) {
|
|
167
|
-
break;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
periods.push(period);
|
|
171
|
-
date.setDate(date.getDate() + 1);
|
|
172
|
-
biWeek += 1;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
periods = isFilter ? fnFilter(periods) : periods;
|
|
176
|
-
periods = isReverse ? periods.reverse() : periods;
|
|
177
|
-
return periods;
|
|
109
|
+
return getPeriods({
|
|
110
|
+
periodType: 'BIWEEKLY',
|
|
111
|
+
config,
|
|
112
|
+
fnFilter,
|
|
113
|
+
periodSettings
|
|
114
|
+
});
|
|
178
115
|
};
|
|
179
116
|
};
|
|
180
117
|
|
|
181
|
-
const getMonthlyPeriodType = (
|
|
182
|
-
const formatIso = date => {
|
|
183
|
-
const y = date.getFullYear();
|
|
184
|
-
let m = String(date.getMonth() + 1);
|
|
185
|
-
m = m.length < 2 ? "0".concat(m) : m;
|
|
186
|
-
return y + m;
|
|
187
|
-
};
|
|
188
|
-
|
|
118
|
+
const getMonthlyPeriodType = (fnFilter, periodSettings) => {
|
|
189
119
|
return config => {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
while (date.getFullYear() === year) {
|
|
198
|
-
const period = {};
|
|
199
|
-
period.endDate = formatYyyyMmDd(date);
|
|
200
|
-
date.setDate(1);
|
|
201
|
-
period.startDate = formatYyyyMmDd(date);
|
|
202
|
-
const monthName = getMonthName(date.getMonth());
|
|
203
|
-
period.name = "".concat(monthName, " ").concat(year);
|
|
204
|
-
period.iso = formatIso(date);
|
|
205
|
-
period.id = period.iso;
|
|
206
|
-
periods.push(period);
|
|
207
|
-
date.setDate(0);
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
periods = isFilter ? fnFilter(periods) : periods;
|
|
211
|
-
periods = isReverse ? periods : periods.reverse(); // Months are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.
|
|
212
|
-
|
|
213
|
-
return periods;
|
|
120
|
+
return getPeriods({
|
|
121
|
+
periodType: 'MONTHLY',
|
|
122
|
+
config,
|
|
123
|
+
fnFilter,
|
|
124
|
+
periodSettings
|
|
125
|
+
});
|
|
214
126
|
};
|
|
215
127
|
};
|
|
216
128
|
|
|
217
|
-
const getBiMonthlyPeriodType = (
|
|
129
|
+
const getBiMonthlyPeriodType = (fnFilter, periodSettings) => {
|
|
218
130
|
return config => {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
let index = 6;
|
|
226
|
-
|
|
227
|
-
while (date.getFullYear() === year) {
|
|
228
|
-
const period = {};
|
|
229
|
-
period.endDate = formatYyyyMmDd(date);
|
|
230
|
-
date.setDate(0);
|
|
231
|
-
date.setDate(1);
|
|
232
|
-
period.startDate = formatYyyyMmDd(date);
|
|
233
|
-
const monthStart = getMonthName(date.getMonth());
|
|
234
|
-
const monthEnd = getMonthName(date.getMonth() + 1);
|
|
235
|
-
const fullYear = date.getFullYear();
|
|
236
|
-
period.name = "".concat(monthStart, " - ").concat(monthEnd, " ").concat(fullYear);
|
|
237
|
-
period.iso = "".concat(year, "0").concat(index, "B");
|
|
238
|
-
period.id = period.iso;
|
|
239
|
-
periods.push(period);
|
|
240
|
-
date.setDate(0);
|
|
241
|
-
index--;
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
periods = isFilter ? fnFilter(periods) : periods;
|
|
245
|
-
periods = isReverse ? periods : periods.reverse(); // Bi-months are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.
|
|
246
|
-
|
|
247
|
-
return periods;
|
|
131
|
+
return getPeriods({
|
|
132
|
+
periodType: 'BIMONTHLY',
|
|
133
|
+
config,
|
|
134
|
+
fnFilter,
|
|
135
|
+
periodSettings
|
|
136
|
+
});
|
|
248
137
|
};
|
|
249
138
|
};
|
|
250
139
|
|
|
251
|
-
const getQuarterlyPeriodType = (
|
|
140
|
+
const getQuarterlyPeriodType = (fnFilter, periodSettings) => {
|
|
252
141
|
return config => {
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
let quarter = 4;
|
|
260
|
-
|
|
261
|
-
while (date.getFullYear() === year) {
|
|
262
|
-
const period = {};
|
|
263
|
-
period.endDate = formatYyyyMmDd(date);
|
|
264
|
-
date.setDate(0);
|
|
265
|
-
date.setDate(0);
|
|
266
|
-
date.setDate(1);
|
|
267
|
-
period.startDate = formatYyyyMmDd(date);
|
|
268
|
-
const monthStart = getMonthName(date.getMonth());
|
|
269
|
-
const monthEnd = getMonthName(date.getMonth() + 2);
|
|
270
|
-
const fullYear = date.getFullYear();
|
|
271
|
-
period.name = "".concat(monthStart, " - ").concat(monthEnd, " ").concat(fullYear);
|
|
272
|
-
period.iso = "".concat(year, "Q").concat(quarter);
|
|
273
|
-
period.id = period.iso;
|
|
274
|
-
periods.push(period);
|
|
275
|
-
date.setDate(0);
|
|
276
|
-
quarter -= 1;
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
periods = isFilter ? fnFilter(periods) : periods;
|
|
280
|
-
periods = isReverse ? periods : periods.reverse(); // Quarters are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.
|
|
281
|
-
|
|
282
|
-
return periods;
|
|
142
|
+
return getPeriods({
|
|
143
|
+
periodType: 'QUARTERLY',
|
|
144
|
+
config,
|
|
145
|
+
fnFilter,
|
|
146
|
+
periodSettings
|
|
147
|
+
});
|
|
283
148
|
};
|
|
284
149
|
};
|
|
285
150
|
|
|
286
|
-
const getSixMonthlyPeriodType = fnFilter => {
|
|
151
|
+
const getSixMonthlyPeriodType = (fnFilter, periodSettings) => {
|
|
287
152
|
return config => {
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
period.startDate = "".concat(year, "-01-01");
|
|
295
|
-
period.endDate = "".concat(year, "-06-30");
|
|
296
|
-
period.name = "".concat(getMonthName(0), " - ").concat(getMonthName(5), " ").concat(year);
|
|
297
|
-
period.iso = "".concat(year, "S1");
|
|
298
|
-
period.id = period.iso;
|
|
299
|
-
periods.push(period);
|
|
300
|
-
period = {};
|
|
301
|
-
period.startDate = "".concat(year, "-07-01");
|
|
302
|
-
period.endDate = "".concat(year, "-12-31");
|
|
303
|
-
period.name = "".concat(getMonthName(6), " - ").concat(getMonthName(11), " ").concat(year);
|
|
304
|
-
period.iso = "".concat(year, "S2");
|
|
305
|
-
period.id = period.iso;
|
|
306
|
-
periods.push(period);
|
|
307
|
-
periods = isFilter ? fnFilter(periods) : periods;
|
|
308
|
-
periods = isReverse ? periods.reverse() : periods;
|
|
309
|
-
return periods;
|
|
153
|
+
return getPeriods({
|
|
154
|
+
periodType: 'SIXMONTHLY',
|
|
155
|
+
config,
|
|
156
|
+
fnFilter,
|
|
157
|
+
periodSettings
|
|
158
|
+
});
|
|
310
159
|
};
|
|
311
160
|
};
|
|
312
161
|
|
|
313
|
-
const getSixMonthlyAprilPeriodType = fnFilter => {
|
|
162
|
+
const getSixMonthlyAprilPeriodType = (fnFilter, periodSettings) => {
|
|
314
163
|
return config => {
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
period.startDate = "".concat(year, "-04-01");
|
|
322
|
-
period.endDate = "".concat(year, "-09-30");
|
|
323
|
-
period.name = "".concat(getMonthName(3), " - ").concat(getMonthName(8), " ").concat(year);
|
|
324
|
-
period.iso = "".concat(year, "AprilS1");
|
|
325
|
-
period.id = period.iso;
|
|
326
|
-
periods.push(period);
|
|
327
|
-
period = {};
|
|
328
|
-
period.startDate = "".concat(year, "-10-01");
|
|
329
|
-
period.endDate = "".concat(year + 1, "-03-31");
|
|
330
|
-
period.name = "".concat(getMonthName(9), " ").concat(year, " - ").concat(getMonthName(2), " ").concat(year + 1);
|
|
331
|
-
period.iso = "".concat(year, "AprilS2");
|
|
332
|
-
period.id = period.iso;
|
|
333
|
-
periods.push(period);
|
|
334
|
-
periods = isFilter ? fnFilter(periods) : periods;
|
|
335
|
-
periods = isReverse ? periods.reverse() : periods;
|
|
336
|
-
return periods;
|
|
164
|
+
return getPeriods({
|
|
165
|
+
periodType: 'SIXMONTHLYAPR',
|
|
166
|
+
config,
|
|
167
|
+
fnFilter,
|
|
168
|
+
periodSettings
|
|
169
|
+
});
|
|
337
170
|
};
|
|
338
171
|
};
|
|
339
172
|
|
|
340
|
-
const getYearlyPeriodType = (
|
|
173
|
+
const getYearlyPeriodType = (fnFilter, periodSettings) => {
|
|
341
174
|
return config => {
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
while (year - date.getFullYear() < 10) {
|
|
350
|
-
const period = {};
|
|
351
|
-
period.endDate = formatYyyyMmDd(date);
|
|
352
|
-
date.setMonth(0, 1);
|
|
353
|
-
period.startDate = formatYyyyMmDd(date);
|
|
354
|
-
const dateString = date.getFullYear().toString();
|
|
355
|
-
period.name = dateString;
|
|
356
|
-
period.iso = date.getFullYear().toString();
|
|
357
|
-
period.id = period.iso.toString();
|
|
358
|
-
periods.push(period);
|
|
359
|
-
date.setDate(0);
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
periods = isFilter ? fnFilter(periods) : periods;
|
|
363
|
-
periods = isReverse ? periods : periods.reverse(); // Years are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.
|
|
364
|
-
|
|
365
|
-
return periods;
|
|
175
|
+
return getPeriods({
|
|
176
|
+
periodType: 'YEARLY',
|
|
177
|
+
config,
|
|
178
|
+
fnFilter,
|
|
179
|
+
periodSettings
|
|
180
|
+
});
|
|
366
181
|
};
|
|
367
182
|
};
|
|
368
183
|
|
|
369
|
-
const getFinancialOctoberPeriodType = (
|
|
184
|
+
const getFinancialOctoberPeriodType = (fnFilter, periodSettings) => {
|
|
370
185
|
return config => {
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
for (let i = 0; i < 10; i++) {
|
|
379
|
-
const period = {};
|
|
380
|
-
period.endDate = formatYyyyMmDd(date);
|
|
381
|
-
date.setYear(date.getFullYear() - 1);
|
|
382
|
-
date.setDate(date.getDate() + 1);
|
|
383
|
-
period.startDate = formatYyyyMmDd(date);
|
|
384
|
-
const yearStart = date.getFullYear();
|
|
385
|
-
const yearEnd = date.getFullYear() + 1;
|
|
386
|
-
period.name = "".concat(getMonthName(9), " ").concat(yearStart, " - ").concat(getMonthName(8), " ").concat(yearEnd);
|
|
387
|
-
period.id = "".concat(date.getFullYear(), "Oct");
|
|
388
|
-
periods.push(period);
|
|
389
|
-
date.setDate(date.getDate() - 1);
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
periods = isFilter ? fnFilter(periods) : periods;
|
|
393
|
-
periods = isReverse ? periods : periods.reverse(); // FinancialOctober periods are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.
|
|
394
|
-
|
|
395
|
-
return periods;
|
|
186
|
+
return getPeriods({
|
|
187
|
+
periodType: 'FYOCT',
|
|
188
|
+
config,
|
|
189
|
+
fnFilter,
|
|
190
|
+
periodSettings
|
|
191
|
+
});
|
|
396
192
|
};
|
|
397
193
|
};
|
|
398
194
|
|
|
399
|
-
const getFinancialNovemberPeriodType = (
|
|
195
|
+
const getFinancialNovemberPeriodType = (fnFilter, periodSettings) => {
|
|
400
196
|
return config => {
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
for (let i = 0; i < 10; i++) {
|
|
409
|
-
const period = {};
|
|
410
|
-
period.endDate = formatYyyyMmDd(date);
|
|
411
|
-
date.setYear(date.getFullYear() - 1);
|
|
412
|
-
date.setDate(date.getDate() + 1);
|
|
413
|
-
period.startDate = formatYyyyMmDd(date);
|
|
414
|
-
const yearStart = date.getFullYear();
|
|
415
|
-
const yearEnd = date.getFullYear() + 1;
|
|
416
|
-
period.name = "".concat(getMonthName(10), " ").concat(yearStart, " - ").concat(getMonthName(9), " ").concat(yearEnd);
|
|
417
|
-
period.id = "".concat(date.getFullYear(), "Nov");
|
|
418
|
-
periods.push(period);
|
|
419
|
-
date.setDate(date.getDate() - 1);
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
periods = isFilter ? fnFilter(periods) : periods;
|
|
423
|
-
periods = isReverse ? periods : periods.reverse(); // FinancialNovember periods are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.
|
|
424
|
-
|
|
425
|
-
return periods;
|
|
197
|
+
return getPeriods({
|
|
198
|
+
periodType: 'FYNOV',
|
|
199
|
+
config,
|
|
200
|
+
fnFilter,
|
|
201
|
+
periodSettings
|
|
202
|
+
});
|
|
426
203
|
};
|
|
427
204
|
};
|
|
428
205
|
|
|
429
|
-
const getFinancialJulyPeriodType = (
|
|
206
|
+
const getFinancialJulyPeriodType = (fnFilter, periodSettings) => {
|
|
430
207
|
return config => {
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
for (let i = 0; i < 10; i++) {
|
|
439
|
-
const period = {};
|
|
440
|
-
period.endDate = formatYyyyMmDd(date);
|
|
441
|
-
date.setYear(date.getFullYear() - 1);
|
|
442
|
-
date.setDate(date.getDate() + 1);
|
|
443
|
-
period.startDate = formatYyyyMmDd(date);
|
|
444
|
-
const yearStart = date.getFullYear();
|
|
445
|
-
const yearEnd = date.getFullYear() + 1;
|
|
446
|
-
period.name = "".concat(getMonthName(6), " ").concat(yearStart, " - ").concat(getMonthName(5), " ").concat(yearEnd);
|
|
447
|
-
period.id = "".concat(date.getFullYear(), "July");
|
|
448
|
-
periods.push(period);
|
|
449
|
-
date.setDate(date.getDate() - 1);
|
|
450
|
-
}
|
|
451
|
-
|
|
452
|
-
periods = isFilter ? fnFilter(periods) : periods;
|
|
453
|
-
periods = isReverse ? periods : periods.reverse(); // FinancialJuly periods are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.
|
|
454
|
-
|
|
455
|
-
return periods;
|
|
208
|
+
return getPeriods({
|
|
209
|
+
periodType: 'FYJUL',
|
|
210
|
+
config,
|
|
211
|
+
fnFilter,
|
|
212
|
+
periodSettings
|
|
213
|
+
});
|
|
456
214
|
};
|
|
457
215
|
};
|
|
458
216
|
|
|
459
|
-
const getFinancialAprilPeriodType = (
|
|
217
|
+
const getFinancialAprilPeriodType = (fnFilter, periodSettings) => {
|
|
460
218
|
return config => {
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
for (let i = 0; i < 10; i++) {
|
|
469
|
-
const period = {};
|
|
470
|
-
period.endDate = formatYyyyMmDd(date);
|
|
471
|
-
date.setYear(date.getFullYear() - 1);
|
|
472
|
-
date.setDate(date.getDate() + 1);
|
|
473
|
-
period.startDate = formatYyyyMmDd(date);
|
|
474
|
-
const yearStart = date.getFullYear();
|
|
475
|
-
const yearEnd = date.getFullYear() + 1;
|
|
476
|
-
period.name = "".concat(getMonthName(3), " ").concat(yearStart, " - ").concat(getMonthName(2), " ").concat(yearEnd);
|
|
477
|
-
period.id = "".concat(date.getFullYear(), "April");
|
|
478
|
-
periods.push(period);
|
|
479
|
-
date.setDate(date.getDate() - 1);
|
|
480
|
-
}
|
|
481
|
-
|
|
482
|
-
periods = isFilter ? fnFilter(periods) : periods;
|
|
483
|
-
periods = isReverse ? periods : periods.reverse(); // FinancialApril periods are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.
|
|
484
|
-
|
|
485
|
-
return periods;
|
|
219
|
+
return getPeriods({
|
|
220
|
+
periodType: 'FYAPR',
|
|
221
|
+
config,
|
|
222
|
+
fnFilter,
|
|
223
|
+
periodSettings
|
|
224
|
+
});
|
|
486
225
|
};
|
|
487
226
|
};
|
|
488
227
|
|
|
489
|
-
const formatYyyyMmDd = date => {
|
|
490
|
-
const y = date.getFullYear();
|
|
491
|
-
let m = String(date.getMonth() + 1);
|
|
492
|
-
let d = String(date.getDate());
|
|
493
|
-
m = m.length < 2 ? "0".concat(m) : m;
|
|
494
|
-
d = d.length < 2 ? "0".concat(d) : d;
|
|
495
|
-
return "".concat(y, "-").concat(m, "-").concat(d);
|
|
496
|
-
};
|
|
497
|
-
|
|
498
228
|
const filterFuturePeriods = periods => {
|
|
499
229
|
const array = [];
|
|
500
230
|
const now = new Date(Date.now());
|
|
@@ -508,92 +238,91 @@ const filterFuturePeriods = periods => {
|
|
|
508
238
|
return array;
|
|
509
239
|
};
|
|
510
240
|
|
|
511
|
-
const getOptions =
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
}, {
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
},
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
}, {
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
}, {
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
}, {
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
}, {
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
}, {
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
}, {
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
}, {
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
}, {
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
}, {
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
}, {
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
}
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
const getFixedPeriodsOptionsById = id => getOptions().find(option => option.id === id);
|
|
241
|
+
const getOptions = periodSettings => {
|
|
242
|
+
return [{
|
|
243
|
+
id: _index2.DAILY,
|
|
244
|
+
getPeriods: getDailyPeriodType(filterFuturePeriods, periodSettings),
|
|
245
|
+
name: _index.default.t('Daily')
|
|
246
|
+
}, {
|
|
247
|
+
id: _index2.WEEKLY,
|
|
248
|
+
getPeriods: getWeeklyPeriodType({
|
|
249
|
+
startDay: 1
|
|
250
|
+
}, filterFuturePeriods, periodSettings),
|
|
251
|
+
name: _index.default.t('Weekly')
|
|
252
|
+
}, {
|
|
253
|
+
id: _index2.WEEKLYWED,
|
|
254
|
+
getPeriods: getWeeklyPeriodType({
|
|
255
|
+
startDay: 3
|
|
256
|
+
}, filterFuturePeriods, periodSettings),
|
|
257
|
+
name: _index.default.t('Weekly (Start Wednesday)')
|
|
258
|
+
}, {
|
|
259
|
+
id: _index2.WEEKLYTHU,
|
|
260
|
+
getPeriods: getWeeklyPeriodType({
|
|
261
|
+
startDay: 4
|
|
262
|
+
}, filterFuturePeriods, periodSettings),
|
|
263
|
+
name: _index.default.t('Weekly (Start Thursday)')
|
|
264
|
+
}, {
|
|
265
|
+
id: _index2.WEEKLYSAT,
|
|
266
|
+
getPeriods: getWeeklyPeriodType({
|
|
267
|
+
startDay: 6
|
|
268
|
+
}, filterFuturePeriods, periodSettings),
|
|
269
|
+
name: _index.default.t('Weekly (Start Saturday)')
|
|
270
|
+
}, {
|
|
271
|
+
id: _index2.WEEKLYSUN,
|
|
272
|
+
getPeriods: getWeeklyPeriodType({
|
|
273
|
+
startDay: 7
|
|
274
|
+
}, filterFuturePeriods, periodSettings),
|
|
275
|
+
name: _index.default.t('Weekly (Start Sunday)')
|
|
276
|
+
}, {
|
|
277
|
+
id: _index2.BIWEEKLY,
|
|
278
|
+
getPeriods: getBiWeeklyPeriodType(filterFuturePeriods, periodSettings),
|
|
279
|
+
name: _index.default.t('Bi-weekly')
|
|
280
|
+
}, {
|
|
281
|
+
id: _index2.MONTHLY,
|
|
282
|
+
getPeriods: getMonthlyPeriodType(filterFuturePeriods, periodSettings),
|
|
283
|
+
name: _index.default.t('Monthly')
|
|
284
|
+
}, {
|
|
285
|
+
id: _index2.BIMONTHLY,
|
|
286
|
+
getPeriods: getBiMonthlyPeriodType(filterFuturePeriods, periodSettings),
|
|
287
|
+
name: _index.default.t('Bi-monthly')
|
|
288
|
+
}, {
|
|
289
|
+
id: _index2.QUARTERLY,
|
|
290
|
+
getPeriods: getQuarterlyPeriodType(filterFuturePeriods, periodSettings),
|
|
291
|
+
name: _index.default.t('Quarterly')
|
|
292
|
+
}, {
|
|
293
|
+
id: _index2.SIXMONTHLY,
|
|
294
|
+
getPeriods: getSixMonthlyPeriodType(filterFuturePeriods, periodSettings),
|
|
295
|
+
name: _index.default.t('Six-monthly')
|
|
296
|
+
}, {
|
|
297
|
+
id: _index2.SIXMONTHLYAPR,
|
|
298
|
+
getPeriods: getSixMonthlyAprilPeriodType(filterFuturePeriods, periodSettings),
|
|
299
|
+
name: _index.default.t('Six-monthly April')
|
|
300
|
+
}, {
|
|
301
|
+
id: _index2.YEARLY,
|
|
302
|
+
getPeriods: getYearlyPeriodType(filterFuturePeriods, periodSettings),
|
|
303
|
+
name: _index.default.t('Yearly')
|
|
304
|
+
}, {
|
|
305
|
+
id: _index2.FYNOV,
|
|
306
|
+
getPeriods: getFinancialNovemberPeriodType(filterFuturePeriods, periodSettings),
|
|
307
|
+
name: _index.default.t('Financial year (Start November)')
|
|
308
|
+
}, {
|
|
309
|
+
id: _index2.FYOCT,
|
|
310
|
+
getPeriods: getFinancialOctoberPeriodType(filterFuturePeriods, periodSettings),
|
|
311
|
+
name: _index.default.t('Financial year (Start October)')
|
|
312
|
+
}, {
|
|
313
|
+
id: _index2.FYJUL,
|
|
314
|
+
getPeriods: getFinancialJulyPeriodType(filterFuturePeriods, periodSettings),
|
|
315
|
+
name: _index.default.t('Financial year (Start July)')
|
|
316
|
+
}, {
|
|
317
|
+
id: _index2.FYAPR,
|
|
318
|
+
getPeriods: getFinancialAprilPeriodType(filterFuturePeriods, periodSettings),
|
|
319
|
+
name: _index.default.t('Financial year (Start April)')
|
|
320
|
+
}];
|
|
321
|
+
};
|
|
322
|
+
|
|
323
|
+
const getFixedPeriodsOptionsById = (id, periodSettings) => {
|
|
324
|
+
return getOptions(periodSettings).find(option => option.id === id);
|
|
325
|
+
};
|
|
597
326
|
|
|
598
327
|
exports.getFixedPeriodsOptionsById = getFixedPeriodsOptionsById;
|
|
599
328
|
|