@dhis2/analytics 21.8.2 → 21.9.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 CHANGED
@@ -1,3 +1,17 @@
1
+ ## [21.9.1](https://github.com/dhis2/analytics/compare/v21.9.0...v21.9.1) (2023-10-05)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * avoid undefined in totals DHIS2-14511 ([#1552](https://github.com/dhis2/analytics/issues/1552)) ([#1585](https://github.com/dhis2/analytics/issues/1585)) ([f2c1fd1](https://github.com/dhis2/analytics/commit/f2c1fd1807af875e0af0f49bc2027862863ade35))
7
+
8
+ # [21.9.0](https://github.com/dhis2/analytics/compare/v21.8.2...v21.9.0) (2023-03-02)
9
+
10
+
11
+ ### Features
12
+
13
+ * merge multi-calendar support from alpha to master ([#1434](https://github.com/dhis2/analytics/issues/1434)) ([9bacb7c](https://github.com/dhis2/analytics/commit/9bacb7c7d6592516bb64d735cfb1a7b2ef6a5e94))
14
+
1
15
  ## [21.8.2](https://github.com/dhis2/analytics/compare/v21.8.1...v21.8.2) (2022-09-29)
2
16
 
3
17
 
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
+ var _appRuntime = require("@dhis2/app-runtime");
9
+
8
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
11
 
10
12
  var _react = _interopRequireDefault(require("react"));
@@ -15,12 +17,40 @@ var _PeriodTransfer = _interopRequireDefault(require("./PeriodTransfer.js"));
15
17
 
16
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
19
 
20
+ const userSettingsQuery = {
21
+ userSettings: {
22
+ resource: 'userSettings',
23
+ params: {
24
+ key: ['keyUiLocale']
25
+ }
26
+ }
27
+ };
28
+
18
29
  const PeriodDimension = ({
19
30
  onSelect,
20
31
  selectedPeriods,
21
32
  rightFooter,
22
33
  excludedPeriodTypes
23
34
  }) => {
35
+ const {
36
+ systemInfo
37
+ } = (0, _appRuntime.useConfig)();
38
+ const result = (0, _appRuntime.useDataQuery)(userSettingsQuery);
39
+ const {
40
+ calendar = 'gregory'
41
+ } = systemInfo;
42
+ const {
43
+ data: {
44
+ userSettings: {
45
+ keyUiLocale: locale
46
+ } = {}
47
+ } = {}
48
+ } = result;
49
+ const periodsSettings = {
50
+ calendar,
51
+ locale
52
+ };
53
+
24
54
  const selectPeriods = periods => {
25
55
  onSelect({
26
56
  dimensionId: _predefinedDimensions.DIMENSION_ID_PERIOD,
@@ -33,7 +63,8 @@ const PeriodDimension = ({
33
63
  initialSelectedPeriods: selectedPeriods,
34
64
  rightFooter: rightFooter,
35
65
  dataTest: 'period-dimension',
36
- excludedPeriodTypes: excludedPeriodTypes
66
+ excludedPeriodTypes: excludedPeriodTypes,
67
+ periodsSettings: periodsSettings
37
68
  });
38
69
  };
39
70
 
@@ -7,6 +7,8 @@ exports.default = void 0;
7
7
 
8
8
  var _style = _interopRequireDefault(require("styled-jsx/style"));
9
9
 
10
+ var _multiCalendarDates = require("@dhis2/multi-calendar-dates");
11
+
10
12
  var _ui = require("@dhis2/ui");
11
13
 
12
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
@@ -46,11 +48,15 @@ const PeriodTransfer = ({
46
48
  dataTest,
47
49
  initialSelectedPeriods,
48
50
  rightFooter,
49
- excludedPeriodTypes
51
+ excludedPeriodTypes,
52
+ periodsSettings
50
53
  }) => {
51
54
  const defaultRelativePeriodType = excludedPeriodTypes.includes(_index2.MONTHLY) ? (0, _relativePeriods.getRelativePeriodsOptionsById)(_index2.QUARTERLY) : (0, _relativePeriods.getRelativePeriodsOptionsById)(_index2.MONTHLY);
52
- const defaultFixedPeriodType = excludedPeriodTypes.includes(_index2.MONTHLY) ? (0, _fixedPeriods.getFixedPeriodsOptionsById)(_index2.QUARTERLY) : (0, _fixedPeriods.getFixedPeriodsOptionsById)(_index2.MONTHLY);
53
- const defaultFixedPeriodYear = new Date().getFullYear();
55
+ const defaultFixedPeriodType = excludedPeriodTypes.includes(_index2.MONTHLY) ? (0, _fixedPeriods.getFixedPeriodsOptionsById)(_index2.QUARTERLY, periodsSettings) : (0, _fixedPeriods.getFixedPeriodsOptionsById)(_index2.MONTHLY, periodsSettings);
56
+ const now = (0, _multiCalendarDates.getNowInCalendar)(periodsSettings.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)
57
+ // 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
58
+
59
+ const defaultFixedPeriodYear = now.eraYear || now.year;
54
60
 
55
61
  const fixedPeriodConfig = year => ({
56
62
  offset: year - defaultFixedPeriodYear,
@@ -72,7 +78,7 @@ const PeriodTransfer = ({
72
78
  const onIsRelativeClick = state => {
73
79
  if (state !== isRelative) {
74
80
  setIsRelative(state);
75
- setAllPeriods(state ? (0, _relativePeriods.getRelativePeriodsOptionsById)(relativeFilter.periodType).getPeriods() : (0, _fixedPeriods.getFixedPeriodsOptionsById)(fixedFilter.periodType).getPeriods(fixedPeriodConfig(Number(fixedFilter.year))));
81
+ setAllPeriods(state ? (0, _relativePeriods.getRelativePeriodsOptionsById)(relativeFilter.periodType).getPeriods() : (0, _fixedPeriods.getFixedPeriodsOptionsById)(fixedFilter.periodType, periodsSettings).getPeriods(fixedPeriodConfig(Number(fixedFilter.year))));
76
82
  }
77
83
  };
78
84
 
@@ -125,7 +131,7 @@ const PeriodTransfer = ({
125
131
 
126
132
  const onSelectFixedPeriods = filter => {
127
133
  setFixedFilter(filter);
128
- setAllPeriods((0, _fixedPeriods.getFixedPeriodsOptionsById)(filter.periodType).getPeriods(fixedPeriodConfig(Number(filter.year))));
134
+ setAllPeriods((0, _fixedPeriods.getFixedPeriodsOptionsById)(filter.periodType, periodsSettings).getPeriods(fixedPeriodConfig(Number(filter.year)), periodsSettings));
129
135
  };
130
136
 
131
137
  const renderEmptySelection = () => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("p", {
@@ -171,7 +177,11 @@ const PeriodTransfer = ({
171
177
 
172
178
  PeriodTransfer.defaultProps = {
173
179
  initialSelectedPeriods: [],
174
- excludedPeriodTypes: []
180
+ excludedPeriodTypes: [],
181
+ periodsSettings: {
182
+ calendar: 'gregory',
183
+ locale: 'en'
184
+ }
175
185
  };
176
186
  PeriodTransfer.propTypes = {
177
187
  onSelect: _propTypes.default.func.isRequired,
@@ -181,6 +191,10 @@ PeriodTransfer.propTypes = {
181
191
  id: _propTypes.default.string,
182
192
  name: _propTypes.default.string
183
193
  })),
194
+ periodsSettings: _propTypes.default.shape({
195
+ calendar: _propTypes.default.string,
196
+ locale: _propTypes.default.string
197
+ }),
184
198
  rightFooter: _propTypes.default.node
185
199
  };
186
200
  var _default = PeriodTransfer;
@@ -8,6 +8,19 @@ var _PeriodDimension = _interopRequireDefault(require("../PeriodDimension.js"));
8
8
 
9
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
10
 
11
+ jest.mock('@dhis2/app-runtime', () => ({
12
+ useConfig: () => ({
13
+ systemInfo: {}
14
+ }),
15
+ useDataQuery: () => ({
16
+ data: {
17
+ userSettings: {
18
+ keyUiLocale: 'en'
19
+ }
20
+ }
21
+ })
22
+ }));
23
+ afterEach(jest.clearAllMocks);
11
24
  describe('The Period Dimension component', () => {
12
25
  let props;
13
26
  let shallowPeriodDimension;
@@ -6,6 +6,12 @@ exports[`The Period Dimension component matches the snapshot 1`] = `
6
6
  excludedPeriodTypes={Array []}
7
7
  initialSelectedPeriods={Array []}
8
8
  onSelect={[Function]}
9
+ periodsSettings={
10
+ Object {
11
+ "calendar": "gregory",
12
+ "locale": "en",
13
+ }
14
+ }
9
15
  rightFooter={<React.Fragment />}
10
16
  />
11
17
  `;