@dhis2/analytics 24.5.0-alpha.2 → 24.5.0-alpha.3

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 CHANGED
@@ -1,3 +1,10 @@
1
+ # [24.5.0-alpha.3](https://github.com/dhis2/analytics/compare/v24.5.0-alpha.2...v24.5.0-alpha.3) (2023-02-23)
2
+
3
+
4
+ ### Features
5
+
6
+ * localise fixed periods according to user settings ([c640c90](https://github.com/dhis2/analytics/commit/c640c90ce2d1944a14706507284af43c7480fa2a))
7
+
1
8
  # [24.5.0-alpha.2](https://github.com/dhis2/analytics/compare/v24.5.0-alpha.1...v24.5.0-alpha.2) (2023-02-14)
2
9
 
3
10
 
@@ -45,6 +45,15 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
45
45
 
46
46
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
47
47
 
48
+ const userSettingsQuery = {
49
+ userSettings: {
50
+ resource: 'userSettings',
51
+ params: {
52
+ key: ['keyUiLocale']
53
+ }
54
+ }
55
+ };
56
+
48
57
  const PeriodTransfer = _ref => {
49
58
  let {
50
59
  onSelect,
@@ -56,11 +65,23 @@ const PeriodTransfer = _ref => {
56
65
  const {
57
66
  systemInfo
58
67
  } = (0, _appRuntime.useConfig)();
68
+ const result = (0, _appRuntime.useDataQuery)(userSettingsQuery);
59
69
  const {
60
70
  calendar = 'gregory'
61
71
  } = systemInfo;
72
+ const {
73
+ data: {
74
+ userSettings: {
75
+ keyUiLocale: locale
76
+ } = {}
77
+ } = {}
78
+ } = result;
79
+ const periodsSettings = {
80
+ calendar,
81
+ locale
82
+ };
62
83
  const defaultRelativePeriodType = excludedPeriodTypes.includes(_index2.MONTHLY) ? (0, _relativePeriods.getRelativePeriodsOptionsById)(_index2.QUARTERLY) : (0, _relativePeriods.getRelativePeriodsOptionsById)(_index2.MONTHLY);
63
- const defaultFixedPeriodType = excludedPeriodTypes.includes(_index2.MONTHLY) ? (0, _fixedPeriods.getFixedPeriodsOptionsById)(_index2.QUARTERLY, calendar) : (0, _fixedPeriods.getFixedPeriodsOptionsById)(_index2.MONTHLY, calendar);
84
+ const defaultFixedPeriodType = excludedPeriodTypes.includes(_index2.MONTHLY) ? (0, _fixedPeriods.getFixedPeriodsOptionsById)(_index2.QUARTERLY, periodsSettings) : (0, _fixedPeriods.getFixedPeriodsOptionsById)(_index2.MONTHLY, periodsSettings);
64
85
  const now = (0, _multiCalendarDates.getNowInCalendar)(calendar); // use ".eraYear" rather than ".year" because in Ethiopian calendar, eraYear is what our users expect to see (for other calendars, it doesn't matter)
65
86
  // there is still a pending decision in Temporal regarding which era to use by default: https://github.com/js-temporal/temporal-polyfill/blob/9350ee7dd0d29f329fc097debf923a517c32f813/lib/calendar.ts#L1964
66
87
 
@@ -86,7 +107,7 @@ const PeriodTransfer = _ref => {
86
107
  const onIsRelativeClick = state => {
87
108
  if (state !== isRelative) {
88
109
  setIsRelative(state);
89
- setAllPeriods(state ? (0, _relativePeriods.getRelativePeriodsOptionsById)(relativeFilter.periodType).getPeriods() : (0, _fixedPeriods.getFixedPeriodsOptionsById)(fixedFilter.periodType, calendar).getPeriods(fixedPeriodConfig(Number(fixedFilter.year))));
110
+ setAllPeriods(state ? (0, _relativePeriods.getRelativePeriodsOptionsById)(relativeFilter.periodType).getPeriods() : (0, _fixedPeriods.getFixedPeriodsOptionsById)(fixedFilter.periodType, periodsSettings).getPeriods(fixedPeriodConfig(Number(fixedFilter.year))));
90
111
  }
91
112
  };
92
113
 
@@ -139,7 +160,7 @@ const PeriodTransfer = _ref => {
139
160
 
140
161
  const onSelectFixedPeriods = filter => {
141
162
  setFixedFilter(filter);
142
- setAllPeriods((0, _fixedPeriods.getFixedPeriodsOptionsById)(filter.periodType, calendar).getPeriods(fixedPeriodConfig(Number(filter.year)), calendar));
163
+ setAllPeriods((0, _fixedPeriods.getFixedPeriodsOptionsById)(filter.periodType, periodsSettings).getPeriods(fixedPeriodConfig(Number(filter.year)), periodsSettings));
143
164
  };
144
165
 
145
166
  const renderEmptySelection = () => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("p", {
@@ -11,8 +11,16 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
11
11
  jest.mock('@dhis2/app-runtime', () => ({
12
12
  useConfig: () => ({
13
13
  systemInfo: {}
14
+ }),
15
+ useDataQuery: () => ({
16
+ data: {
17
+ userSettings: {
18
+ keyUiLocale: 'en'
19
+ }
20
+ }
14
21
  })
15
22
  }));
23
+ afterEach(jest.clearAllMocks);
16
24
  describe('The Period Selector component', () => {
17
25
  let props;
18
26
  let shallowPeriodTransfer;
@@ -56,18 +56,22 @@ const getPeriods = _ref => {
56
56
  periodType,
57
57
  config,
58
58
  fnFilter,
59
- calendar
59
+ periodSettings = {}
60
60
  } = _ref;
61
61
  const offset = parseInt(config.offset, 10);
62
62
  const isFilter = config.filterFuturePeriods;
63
63
  const isReverse = periodType.match(/^FY|YEARLY/) ? true : config.reversePeriods;
64
+ const {
65
+ calendar = 'gregory',
66
+ locale = 'en'
67
+ } = periodSettings;
64
68
  const now = (0, _multiCalendarDates.getNowInCalendar)(calendar);
65
69
  const year = (now.eraYear || now.year) + offset;
66
70
  const params = {
67
71
  periodType,
68
72
  year,
69
73
  calendar,
70
- locale: 'en',
74
+ locale,
71
75
  startingDay: config.startDay
72
76
  };
73
77
  let periods = (0, _multiCalendarDates.generateFixedPeriods)(params);
@@ -76,18 +80,18 @@ const getPeriods = _ref => {
76
80
  return periods;
77
81
  };
78
82
 
79
- const getDailyPeriodType = (fnFilter, calendar) => {
83
+ const getDailyPeriodType = (fnFilter, periodSettings) => {
80
84
  return config => {
81
85
  return getPeriods({
82
86
  periodType: 'DAILY',
83
87
  config,
84
88
  fnFilter,
85
- calendar
89
+ periodSettings
86
90
  });
87
91
  };
88
92
  };
89
93
 
90
- const getWeeklyPeriodType = (weekObj, fnFilter, calendar) => {
94
+ const getWeeklyPeriodType = (weekObj, fnFilter, periodSettings) => {
91
95
  return config => {
92
96
  return getPeriods({
93
97
  periodType: 'WEEKLY',
@@ -95,128 +99,128 @@ const getWeeklyPeriodType = (weekObj, fnFilter, calendar) => {
95
99
  startDay: weekObj.startDay
96
100
  },
97
101
  fnFilter,
98
- calendar
102
+ periodSettings
99
103
  });
100
104
  };
101
105
  };
102
106
 
103
- const getBiWeeklyPeriodType = (fnFilter, calendar) => {
107
+ const getBiWeeklyPeriodType = (fnFilter, periodSettings) => {
104
108
  return config => {
105
109
  return getPeriods({
106
110
  periodType: 'BIWEEKLY',
107
111
  config,
108
112
  fnFilter,
109
- calendar
113
+ periodSettings
110
114
  });
111
115
  };
112
116
  };
113
117
 
114
- const getMonthlyPeriodType = (fnFilter, calendar) => {
118
+ const getMonthlyPeriodType = (fnFilter, periodSettings) => {
115
119
  return config => {
116
120
  return getPeriods({
117
121
  periodType: 'MONTHLY',
118
122
  config,
119
123
  fnFilter,
120
- calendar
124
+ periodSettings
121
125
  });
122
126
  };
123
127
  };
124
128
 
125
- const getBiMonthlyPeriodType = (fnFilter, calendar) => {
129
+ const getBiMonthlyPeriodType = (fnFilter, periodSettings) => {
126
130
  return config => {
127
131
  return getPeriods({
128
132
  periodType: 'BIMONTHLY',
129
133
  config,
130
134
  fnFilter,
131
- calendar
135
+ periodSettings
132
136
  });
133
137
  };
134
138
  };
135
139
 
136
- const getQuarterlyPeriodType = (fnFilter, calendar) => {
140
+ const getQuarterlyPeriodType = (fnFilter, periodSettings) => {
137
141
  return config => {
138
142
  return getPeriods({
139
143
  periodType: 'QUARTERLY',
140
144
  config,
141
145
  fnFilter,
142
- calendar
146
+ periodSettings
143
147
  });
144
148
  };
145
149
  };
146
150
 
147
- const getSixMonthlyPeriodType = (fnFilter, calendar) => {
151
+ const getSixMonthlyPeriodType = (fnFilter, periodSettings) => {
148
152
  return config => {
149
153
  return getPeriods({
150
154
  periodType: 'SIXMONTHLY',
151
155
  config,
152
156
  fnFilter,
153
- calendar
157
+ periodSettings
154
158
  });
155
159
  };
156
160
  };
157
161
 
158
- const getSixMonthlyAprilPeriodType = (fnFilter, calendar) => {
162
+ const getSixMonthlyAprilPeriodType = (fnFilter, periodSettings) => {
159
163
  return config => {
160
164
  return getPeriods({
161
165
  periodType: 'SIXMONTHLYAPR',
162
166
  config,
163
167
  fnFilter,
164
- calendar
168
+ periodSettings
165
169
  });
166
170
  };
167
171
  };
168
172
 
169
- const getYearlyPeriodType = (fnFilter, calendar) => {
173
+ const getYearlyPeriodType = (fnFilter, periodSettings) => {
170
174
  return config => {
171
175
  return getPeriods({
172
176
  periodType: 'YEARLY',
173
177
  config,
174
178
  fnFilter,
175
- calendar
179
+ periodSettings
176
180
  });
177
181
  };
178
182
  };
179
183
 
180
- const getFinancialOctoberPeriodType = (fnFilter, calendar) => {
184
+ const getFinancialOctoberPeriodType = (fnFilter, periodSettings) => {
181
185
  return config => {
182
186
  return getPeriods({
183
187
  periodType: 'FYOCT',
184
188
  config,
185
189
  fnFilter,
186
- calendar
190
+ periodSettings
187
191
  });
188
192
  };
189
193
  };
190
194
 
191
- const getFinancialNovemberPeriodType = (fnFilter, calendar) => {
195
+ const getFinancialNovemberPeriodType = (fnFilter, periodSettings) => {
192
196
  return config => {
193
197
  return getPeriods({
194
198
  periodType: 'FYNOV',
195
199
  config,
196
200
  fnFilter,
197
- calendar
201
+ periodSettings
198
202
  });
199
203
  };
200
204
  };
201
205
 
202
- const getFinancialJulyPeriodType = (fnFilter, calendar) => {
206
+ const getFinancialJulyPeriodType = (fnFilter, periodSettings) => {
203
207
  return config => {
204
208
  return getPeriods({
205
209
  periodType: 'FYJUL',
206
210
  config,
207
211
  fnFilter,
208
- calendar
212
+ periodSettings
209
213
  });
210
214
  };
211
215
  };
212
216
 
213
- const getFinancialAprilPeriodType = (fnFilter, calendar) => {
217
+ const getFinancialAprilPeriodType = (fnFilter, periodSettings) => {
214
218
  return config => {
215
219
  return getPeriods({
216
220
  periodType: 'FYAPR',
217
221
  config,
218
222
  fnFilter,
219
- calendar
223
+ periodSettings
220
224
  });
221
225
  };
222
226
  };
@@ -234,92 +238,90 @@ const filterFuturePeriods = periods => {
234
238
  return array;
235
239
  };
236
240
 
237
- const getOptions = function () {
238
- let calendar = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'gregory';
241
+ const getOptions = periodSettings => {
239
242
  return [{
240
243
  id: _index2.DAILY,
241
- getPeriods: getDailyPeriodType(filterFuturePeriods, calendar),
244
+ getPeriods: getDailyPeriodType(filterFuturePeriods, periodSettings),
242
245
  name: _index.default.t('Daily')
243
246
  }, {
244
247
  id: _index2.WEEKLY,
245
248
  getPeriods: getWeeklyPeriodType({
246
249
  startDay: 1
247
- }, filterFuturePeriods, calendar),
250
+ }, filterFuturePeriods, periodSettings),
248
251
  name: _index.default.t('Weekly')
249
252
  }, {
250
253
  id: _index2.WEEKLYWED,
251
254
  getPeriods: getWeeklyPeriodType({
252
255
  startDay: 3
253
- }, filterFuturePeriods, calendar),
256
+ }, filterFuturePeriods, periodSettings),
254
257
  name: _index.default.t('Weekly (Start Wednesday)')
255
258
  }, {
256
259
  id: _index2.WEEKLYTHU,
257
260
  getPeriods: getWeeklyPeriodType({
258
261
  startDay: 4
259
- }, filterFuturePeriods, calendar),
262
+ }, filterFuturePeriods, periodSettings),
260
263
  name: _index.default.t('Weekly (Start Thursday)')
261
264
  }, {
262
265
  id: _index2.WEEKLYSAT,
263
266
  getPeriods: getWeeklyPeriodType({
264
267
  startDay: 6
265
- }, filterFuturePeriods, calendar),
268
+ }, filterFuturePeriods, periodSettings),
266
269
  name: _index.default.t('Weekly (Start Saturday)')
267
270
  }, {
268
271
  id: _index2.WEEKLYSUN,
269
272
  getPeriods: getWeeklyPeriodType({
270
273
  startDay: 7
271
- }, filterFuturePeriods, calendar),
274
+ }, filterFuturePeriods, periodSettings),
272
275
  name: _index.default.t('Weekly (Start Sunday)')
273
276
  }, {
274
277
  id: _index2.BIWEEKLY,
275
- getPeriods: getBiWeeklyPeriodType(filterFuturePeriods, calendar),
278
+ getPeriods: getBiWeeklyPeriodType(filterFuturePeriods, periodSettings),
276
279
  name: _index.default.t('Bi-weekly')
277
280
  }, {
278
281
  id: _index2.MONTHLY,
279
- getPeriods: getMonthlyPeriodType(filterFuturePeriods, calendar),
282
+ getPeriods: getMonthlyPeriodType(filterFuturePeriods, periodSettings),
280
283
  name: _index.default.t('Monthly')
281
284
  }, {
282
285
  id: _index2.BIMONTHLY,
283
- getPeriods: getBiMonthlyPeriodType(filterFuturePeriods, calendar),
286
+ getPeriods: getBiMonthlyPeriodType(filterFuturePeriods, periodSettings),
284
287
  name: _index.default.t('Bi-monthly')
285
288
  }, {
286
289
  id: _index2.QUARTERLY,
287
- getPeriods: getQuarterlyPeriodType(filterFuturePeriods, calendar),
290
+ getPeriods: getQuarterlyPeriodType(filterFuturePeriods, periodSettings),
288
291
  name: _index.default.t('Quarterly')
289
292
  }, {
290
293
  id: _index2.SIXMONTHLY,
291
- getPeriods: getSixMonthlyPeriodType(filterFuturePeriods, calendar),
294
+ getPeriods: getSixMonthlyPeriodType(filterFuturePeriods, periodSettings),
292
295
  name: _index.default.t('Six-monthly')
293
296
  }, {
294
297
  id: _index2.SIXMONTHLYAPR,
295
- getPeriods: getSixMonthlyAprilPeriodType(filterFuturePeriods, calendar),
298
+ getPeriods: getSixMonthlyAprilPeriodType(filterFuturePeriods, periodSettings),
296
299
  name: _index.default.t('Six-monthly April')
297
300
  }, {
298
301
  id: _index2.YEARLY,
299
- getPeriods: getYearlyPeriodType(filterFuturePeriods, calendar),
302
+ getPeriods: getYearlyPeriodType(filterFuturePeriods, periodSettings),
300
303
  name: _index.default.t('Yearly')
301
304
  }, {
302
305
  id: _index2.FYNOV,
303
- getPeriods: getFinancialNovemberPeriodType(filterFuturePeriods, calendar),
306
+ getPeriods: getFinancialNovemberPeriodType(filterFuturePeriods, periodSettings),
304
307
  name: _index.default.t('Financial year (Start November)')
305
308
  }, {
306
309
  id: _index2.FYOCT,
307
- getPeriods: getFinancialOctoberPeriodType(filterFuturePeriods, calendar),
310
+ getPeriods: getFinancialOctoberPeriodType(filterFuturePeriods, periodSettings),
308
311
  name: _index.default.t('Financial year (Start October)')
309
312
  }, {
310
313
  id: _index2.FYJUL,
311
- getPeriods: getFinancialJulyPeriodType(filterFuturePeriods, calendar),
314
+ getPeriods: getFinancialJulyPeriodType(filterFuturePeriods, periodSettings),
312
315
  name: _index.default.t('Financial year (Start July)')
313
316
  }, {
314
317
  id: _index2.FYAPR,
315
- getPeriods: getFinancialAprilPeriodType(filterFuturePeriods, calendar),
318
+ getPeriods: getFinancialAprilPeriodType(filterFuturePeriods, periodSettings),
316
319
  name: _index.default.t('Financial year (Start April)')
317
320
  }];
318
321
  };
319
322
 
320
- const getFixedPeriodsOptionsById = function (id) {
321
- let calendar = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'gregory';
322
- return getOptions(calendar).find(option => option.id === id);
323
+ const getFixedPeriodsOptionsById = (id, periodSettings) => {
324
+ return getOptions(periodSettings).find(option => option.id === id);
323
325
  };
324
326
 
325
327
  exports.getFixedPeriodsOptionsById = getFixedPeriodsOptionsById;
@@ -2,7 +2,7 @@ import _JSXStyle from "styled-jsx/style";
2
2
 
3
3
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
4
4
 
5
- import { useConfig } from '@dhis2/app-runtime';
5
+ import { useConfig, useDataQuery } from '@dhis2/app-runtime';
6
6
  import { getNowInCalendar } from '@dhis2/multi-calendar-dates';
7
7
  import { TabBar, Tab, Transfer } from '@dhis2/ui';
8
8
  import PropTypes from 'prop-types';
@@ -18,6 +18,14 @@ import RelativePeriodFilter from './RelativePeriodFilter.js';
18
18
  import { getFixedPeriodsOptionsById } from './utils/fixedPeriods.js';
19
19
  import { MONTHLY, QUARTERLY } from './utils/index.js';
20
20
  import { getRelativePeriodsOptionsById } from './utils/relativePeriods.js';
21
+ const userSettingsQuery = {
22
+ userSettings: {
23
+ resource: 'userSettings',
24
+ params: {
25
+ key: ['keyUiLocale']
26
+ }
27
+ }
28
+ };
21
29
 
22
30
  const PeriodTransfer = _ref => {
23
31
  let {
@@ -30,11 +38,23 @@ const PeriodTransfer = _ref => {
30
38
  const {
31
39
  systemInfo
32
40
  } = useConfig();
41
+ const result = useDataQuery(userSettingsQuery);
33
42
  const {
34
43
  calendar = 'gregory'
35
44
  } = systemInfo;
45
+ const {
46
+ data: {
47
+ userSettings: {
48
+ keyUiLocale: locale
49
+ } = {}
50
+ } = {}
51
+ } = result;
52
+ const periodsSettings = {
53
+ calendar,
54
+ locale
55
+ };
36
56
  const defaultRelativePeriodType = excludedPeriodTypes.includes(MONTHLY) ? getRelativePeriodsOptionsById(QUARTERLY) : getRelativePeriodsOptionsById(MONTHLY);
37
- const defaultFixedPeriodType = excludedPeriodTypes.includes(MONTHLY) ? getFixedPeriodsOptionsById(QUARTERLY, calendar) : getFixedPeriodsOptionsById(MONTHLY, calendar);
57
+ const defaultFixedPeriodType = excludedPeriodTypes.includes(MONTHLY) ? getFixedPeriodsOptionsById(QUARTERLY, periodsSettings) : getFixedPeriodsOptionsById(MONTHLY, periodsSettings);
38
58
  const now = getNowInCalendar(calendar); // use ".eraYear" rather than ".year" because in Ethiopian calendar, eraYear is what our users expect to see (for other calendars, it doesn't matter)
39
59
  // there is still a pending decision in Temporal regarding which era to use by default: https://github.com/js-temporal/temporal-polyfill/blob/9350ee7dd0d29f329fc097debf923a517c32f813/lib/calendar.ts#L1964
40
60
 
@@ -60,7 +80,7 @@ const PeriodTransfer = _ref => {
60
80
  const onIsRelativeClick = state => {
61
81
  if (state !== isRelative) {
62
82
  setIsRelative(state);
63
- setAllPeriods(state ? getRelativePeriodsOptionsById(relativeFilter.periodType).getPeriods() : getFixedPeriodsOptionsById(fixedFilter.periodType, calendar).getPeriods(fixedPeriodConfig(Number(fixedFilter.year))));
83
+ setAllPeriods(state ? getRelativePeriodsOptionsById(relativeFilter.periodType).getPeriods() : getFixedPeriodsOptionsById(fixedFilter.periodType, periodsSettings).getPeriods(fixedPeriodConfig(Number(fixedFilter.year))));
64
84
  }
65
85
  };
66
86
 
@@ -113,7 +133,7 @@ const PeriodTransfer = _ref => {
113
133
 
114
134
  const onSelectFixedPeriods = filter => {
115
135
  setFixedFilter(filter);
116
- setAllPeriods(getFixedPeriodsOptionsById(filter.periodType, calendar).getPeriods(fixedPeriodConfig(Number(filter.year)), calendar));
136
+ setAllPeriods(getFixedPeriodsOptionsById(filter.periodType, periodsSettings).getPeriods(fixedPeriodConfig(Number(filter.year)), periodsSettings));
117
137
  };
118
138
 
119
139
  const renderEmptySelection = () => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("p", {
@@ -4,8 +4,16 @@ import PeriodTransfer from '../PeriodTransfer.js';
4
4
  jest.mock('@dhis2/app-runtime', () => ({
5
5
  useConfig: () => ({
6
6
  systemInfo: {}
7
+ }),
8
+ useDataQuery: () => ({
9
+ data: {
10
+ userSettings: {
11
+ keyUiLocale: 'en'
12
+ }
13
+ }
7
14
  })
8
15
  }));
16
+ afterEach(jest.clearAllMocks);
9
17
  describe('The Period Selector component', () => {
10
18
  let props;
11
19
  let shallowPeriodTransfer;
@@ -44,18 +44,22 @@ const getPeriods = _ref => {
44
44
  periodType,
45
45
  config,
46
46
  fnFilter,
47
- calendar
47
+ periodSettings = {}
48
48
  } = _ref;
49
49
  const offset = parseInt(config.offset, 10);
50
50
  const isFilter = config.filterFuturePeriods;
51
51
  const isReverse = periodType.match(/^FY|YEARLY/) ? true : config.reversePeriods;
52
+ const {
53
+ calendar = 'gregory',
54
+ locale = 'en'
55
+ } = periodSettings;
52
56
  const now = getNowInCalendar(calendar);
53
57
  const year = (now.eraYear || now.year) + offset;
54
58
  const params = {
55
59
  periodType,
56
60
  year,
57
61
  calendar,
58
- locale: 'en',
62
+ locale,
59
63
  startingDay: config.startDay
60
64
  };
61
65
  let periods = generateFixedPeriods(params);
@@ -64,18 +68,18 @@ const getPeriods = _ref => {
64
68
  return periods;
65
69
  };
66
70
 
67
- const getDailyPeriodType = (fnFilter, calendar) => {
71
+ const getDailyPeriodType = (fnFilter, periodSettings) => {
68
72
  return config => {
69
73
  return getPeriods({
70
74
  periodType: 'DAILY',
71
75
  config,
72
76
  fnFilter,
73
- calendar
77
+ periodSettings
74
78
  });
75
79
  };
76
80
  };
77
81
 
78
- const getWeeklyPeriodType = (weekObj, fnFilter, calendar) => {
82
+ const getWeeklyPeriodType = (weekObj, fnFilter, periodSettings) => {
79
83
  return config => {
80
84
  return getPeriods({
81
85
  periodType: 'WEEKLY',
@@ -83,128 +87,128 @@ const getWeeklyPeriodType = (weekObj, fnFilter, calendar) => {
83
87
  startDay: weekObj.startDay
84
88
  },
85
89
  fnFilter,
86
- calendar
90
+ periodSettings
87
91
  });
88
92
  };
89
93
  };
90
94
 
91
- const getBiWeeklyPeriodType = (fnFilter, calendar) => {
95
+ const getBiWeeklyPeriodType = (fnFilter, periodSettings) => {
92
96
  return config => {
93
97
  return getPeriods({
94
98
  periodType: 'BIWEEKLY',
95
99
  config,
96
100
  fnFilter,
97
- calendar
101
+ periodSettings
98
102
  });
99
103
  };
100
104
  };
101
105
 
102
- const getMonthlyPeriodType = (fnFilter, calendar) => {
106
+ const getMonthlyPeriodType = (fnFilter, periodSettings) => {
103
107
  return config => {
104
108
  return getPeriods({
105
109
  periodType: 'MONTHLY',
106
110
  config,
107
111
  fnFilter,
108
- calendar
112
+ periodSettings
109
113
  });
110
114
  };
111
115
  };
112
116
 
113
- const getBiMonthlyPeriodType = (fnFilter, calendar) => {
117
+ const getBiMonthlyPeriodType = (fnFilter, periodSettings) => {
114
118
  return config => {
115
119
  return getPeriods({
116
120
  periodType: 'BIMONTHLY',
117
121
  config,
118
122
  fnFilter,
119
- calendar
123
+ periodSettings
120
124
  });
121
125
  };
122
126
  };
123
127
 
124
- const getQuarterlyPeriodType = (fnFilter, calendar) => {
128
+ const getQuarterlyPeriodType = (fnFilter, periodSettings) => {
125
129
  return config => {
126
130
  return getPeriods({
127
131
  periodType: 'QUARTERLY',
128
132
  config,
129
133
  fnFilter,
130
- calendar
134
+ periodSettings
131
135
  });
132
136
  };
133
137
  };
134
138
 
135
- const getSixMonthlyPeriodType = (fnFilter, calendar) => {
139
+ const getSixMonthlyPeriodType = (fnFilter, periodSettings) => {
136
140
  return config => {
137
141
  return getPeriods({
138
142
  periodType: 'SIXMONTHLY',
139
143
  config,
140
144
  fnFilter,
141
- calendar
145
+ periodSettings
142
146
  });
143
147
  };
144
148
  };
145
149
 
146
- const getSixMonthlyAprilPeriodType = (fnFilter, calendar) => {
150
+ const getSixMonthlyAprilPeriodType = (fnFilter, periodSettings) => {
147
151
  return config => {
148
152
  return getPeriods({
149
153
  periodType: 'SIXMONTHLYAPR',
150
154
  config,
151
155
  fnFilter,
152
- calendar
156
+ periodSettings
153
157
  });
154
158
  };
155
159
  };
156
160
 
157
- const getYearlyPeriodType = (fnFilter, calendar) => {
161
+ const getYearlyPeriodType = (fnFilter, periodSettings) => {
158
162
  return config => {
159
163
  return getPeriods({
160
164
  periodType: 'YEARLY',
161
165
  config,
162
166
  fnFilter,
163
- calendar
167
+ periodSettings
164
168
  });
165
169
  };
166
170
  };
167
171
 
168
- const getFinancialOctoberPeriodType = (fnFilter, calendar) => {
172
+ const getFinancialOctoberPeriodType = (fnFilter, periodSettings) => {
169
173
  return config => {
170
174
  return getPeriods({
171
175
  periodType: 'FYOCT',
172
176
  config,
173
177
  fnFilter,
174
- calendar
178
+ periodSettings
175
179
  });
176
180
  };
177
181
  };
178
182
 
179
- const getFinancialNovemberPeriodType = (fnFilter, calendar) => {
183
+ const getFinancialNovemberPeriodType = (fnFilter, periodSettings) => {
180
184
  return config => {
181
185
  return getPeriods({
182
186
  periodType: 'FYNOV',
183
187
  config,
184
188
  fnFilter,
185
- calendar
189
+ periodSettings
186
190
  });
187
191
  };
188
192
  };
189
193
 
190
- const getFinancialJulyPeriodType = (fnFilter, calendar) => {
194
+ const getFinancialJulyPeriodType = (fnFilter, periodSettings) => {
191
195
  return config => {
192
196
  return getPeriods({
193
197
  periodType: 'FYJUL',
194
198
  config,
195
199
  fnFilter,
196
- calendar
200
+ periodSettings
197
201
  });
198
202
  };
199
203
  };
200
204
 
201
- const getFinancialAprilPeriodType = (fnFilter, calendar) => {
205
+ const getFinancialAprilPeriodType = (fnFilter, periodSettings) => {
202
206
  return config => {
203
207
  return getPeriods({
204
208
  periodType: 'FYAPR',
205
209
  config,
206
210
  fnFilter,
207
- calendar
211
+ periodSettings
208
212
  });
209
213
  };
210
214
  };
@@ -222,92 +226,90 @@ const filterFuturePeriods = periods => {
222
226
  return array;
223
227
  };
224
228
 
225
- const getOptions = function () {
226
- let calendar = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'gregory';
229
+ const getOptions = periodSettings => {
227
230
  return [{
228
231
  id: DAILY,
229
- getPeriods: getDailyPeriodType(filterFuturePeriods, calendar),
232
+ getPeriods: getDailyPeriodType(filterFuturePeriods, periodSettings),
230
233
  name: i18n.t('Daily')
231
234
  }, {
232
235
  id: WEEKLY,
233
236
  getPeriods: getWeeklyPeriodType({
234
237
  startDay: 1
235
- }, filterFuturePeriods, calendar),
238
+ }, filterFuturePeriods, periodSettings),
236
239
  name: i18n.t('Weekly')
237
240
  }, {
238
241
  id: WEEKLYWED,
239
242
  getPeriods: getWeeklyPeriodType({
240
243
  startDay: 3
241
- }, filterFuturePeriods, calendar),
244
+ }, filterFuturePeriods, periodSettings),
242
245
  name: i18n.t('Weekly (Start Wednesday)')
243
246
  }, {
244
247
  id: WEEKLYTHU,
245
248
  getPeriods: getWeeklyPeriodType({
246
249
  startDay: 4
247
- }, filterFuturePeriods, calendar),
250
+ }, filterFuturePeriods, periodSettings),
248
251
  name: i18n.t('Weekly (Start Thursday)')
249
252
  }, {
250
253
  id: WEEKLYSAT,
251
254
  getPeriods: getWeeklyPeriodType({
252
255
  startDay: 6
253
- }, filterFuturePeriods, calendar),
256
+ }, filterFuturePeriods, periodSettings),
254
257
  name: i18n.t('Weekly (Start Saturday)')
255
258
  }, {
256
259
  id: WEEKLYSUN,
257
260
  getPeriods: getWeeklyPeriodType({
258
261
  startDay: 7
259
- }, filterFuturePeriods, calendar),
262
+ }, filterFuturePeriods, periodSettings),
260
263
  name: i18n.t('Weekly (Start Sunday)')
261
264
  }, {
262
265
  id: BIWEEKLY,
263
- getPeriods: getBiWeeklyPeriodType(filterFuturePeriods, calendar),
266
+ getPeriods: getBiWeeklyPeriodType(filterFuturePeriods, periodSettings),
264
267
  name: i18n.t('Bi-weekly')
265
268
  }, {
266
269
  id: MONTHLY,
267
- getPeriods: getMonthlyPeriodType(filterFuturePeriods, calendar),
270
+ getPeriods: getMonthlyPeriodType(filterFuturePeriods, periodSettings),
268
271
  name: i18n.t('Monthly')
269
272
  }, {
270
273
  id: BIMONTHLY,
271
- getPeriods: getBiMonthlyPeriodType(filterFuturePeriods, calendar),
274
+ getPeriods: getBiMonthlyPeriodType(filterFuturePeriods, periodSettings),
272
275
  name: i18n.t('Bi-monthly')
273
276
  }, {
274
277
  id: QUARTERLY,
275
- getPeriods: getQuarterlyPeriodType(filterFuturePeriods, calendar),
278
+ getPeriods: getQuarterlyPeriodType(filterFuturePeriods, periodSettings),
276
279
  name: i18n.t('Quarterly')
277
280
  }, {
278
281
  id: SIXMONTHLY,
279
- getPeriods: getSixMonthlyPeriodType(filterFuturePeriods, calendar),
282
+ getPeriods: getSixMonthlyPeriodType(filterFuturePeriods, periodSettings),
280
283
  name: i18n.t('Six-monthly')
281
284
  }, {
282
285
  id: SIXMONTHLYAPR,
283
- getPeriods: getSixMonthlyAprilPeriodType(filterFuturePeriods, calendar),
286
+ getPeriods: getSixMonthlyAprilPeriodType(filterFuturePeriods, periodSettings),
284
287
  name: i18n.t('Six-monthly April')
285
288
  }, {
286
289
  id: YEARLY,
287
- getPeriods: getYearlyPeriodType(filterFuturePeriods, calendar),
290
+ getPeriods: getYearlyPeriodType(filterFuturePeriods, periodSettings),
288
291
  name: i18n.t('Yearly')
289
292
  }, {
290
293
  id: FYNOV,
291
- getPeriods: getFinancialNovemberPeriodType(filterFuturePeriods, calendar),
294
+ getPeriods: getFinancialNovemberPeriodType(filterFuturePeriods, periodSettings),
292
295
  name: i18n.t('Financial year (Start November)')
293
296
  }, {
294
297
  id: FYOCT,
295
- getPeriods: getFinancialOctoberPeriodType(filterFuturePeriods, calendar),
298
+ getPeriods: getFinancialOctoberPeriodType(filterFuturePeriods, periodSettings),
296
299
  name: i18n.t('Financial year (Start October)')
297
300
  }, {
298
301
  id: FYJUL,
299
- getPeriods: getFinancialJulyPeriodType(filterFuturePeriods, calendar),
302
+ getPeriods: getFinancialJulyPeriodType(filterFuturePeriods, periodSettings),
300
303
  name: i18n.t('Financial year (Start July)')
301
304
  }, {
302
305
  id: FYAPR,
303
- getPeriods: getFinancialAprilPeriodType(filterFuturePeriods, calendar),
306
+ getPeriods: getFinancialAprilPeriodType(filterFuturePeriods, periodSettings),
304
307
  name: i18n.t('Financial year (Start April)')
305
308
  }];
306
309
  };
307
310
 
308
- export const getFixedPeriodsOptionsById = function (id) {
309
- let calendar = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'gregory';
310
- return getOptions(calendar).find(option => option.id === id);
311
+ export const getFixedPeriodsOptionsById = (id, periodSettings) => {
312
+ return getOptions(periodSettings).find(option => option.id === id);
311
313
  };
312
314
  export const getFixedPeriodsOptions = () => getOptions();
313
315
  export const getYearOffsetFromNow = yearStr => parseInt(yearStr) - new Date(Date.now()).getFullYear();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dhis2/analytics",
3
- "version": "24.5.0-alpha.2",
3
+ "version": "24.5.0-alpha.3",
4
4
  "main": "./build/cjs/index.js",
5
5
  "module": "./build/es/index.js",
6
6
  "exports": {
@@ -48,11 +48,6 @@
48
48
  "styled-jsx": "^4.0.1",
49
49
  "typeface-roboto": "^0.0.75"
50
50
  },
51
- "jest": {
52
- "transformIgnorePatterns": [
53
- "/!node_modules\\/multi-calendar-dates/"
54
- ]
55
- },
56
51
  "peerDependencies": {
57
52
  "@dhis2/app-runtime": "^3",
58
53
  "@dhis2/d2-i18n": "^1.1",
@@ -64,7 +59,7 @@
64
59
  },
65
60
  "dependencies": {
66
61
  "@dhis2/d2-ui-rich-text": "^7.4.0",
67
- "@dhis2/multi-calendar-dates": "1.0.0-alpha.18",
62
+ "@dhis2/multi-calendar-dates": "1.0.0",
68
63
  "classnames": "^2.3.1",
69
64
  "d2-utilizr": "^0.2.16",
70
65
  "d3-color": "^1.2.3",