@dhis2/analytics 24.8.0 → 24.9.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/CHANGELOG.md +41 -1
- package/build/cjs/components/PeriodDimension/PeriodDimension.js +31 -1
- package/build/cjs/components/PeriodDimension/PeriodTransfer.js +20 -6
- package/build/cjs/components/PeriodDimension/__tests__/PeriodDimension.spec.js +13 -0
- package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap +6 -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/PeriodDimension.js +29 -1
- package/build/es/components/PeriodDimension/PeriodTransfer.js +19 -6
- package/build/es/components/PeriodDimension/__tests__/PeriodDimension.spec.js +13 -0
- package/build/es/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap +6 -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
|
@@ -182,20 +182,6 @@
|
|
|
182
182
|
"Fixed periods": "Fixed periods",
|
|
183
183
|
"Selected Periods": "Selected Periods",
|
|
184
184
|
"No periods selected": "No periods selected",
|
|
185
|
-
"January": "January",
|
|
186
|
-
"February": "February",
|
|
187
|
-
"March": "March",
|
|
188
|
-
"April": "April",
|
|
189
|
-
"May": "May",
|
|
190
|
-
"June": "June",
|
|
191
|
-
"July": "July",
|
|
192
|
-
"August": "August",
|
|
193
|
-
"September": "September",
|
|
194
|
-
"October": "October",
|
|
195
|
-
"November": "November",
|
|
196
|
-
"December": "December",
|
|
197
|
-
"Week {{weekNumber}}": "Week {{weekNumber}}",
|
|
198
|
-
"Bi-Week {{biWeekNumber}}": "Bi-Week {{biWeekNumber}}",
|
|
199
185
|
"Daily": "Daily",
|
|
200
186
|
"Weekly": "Weekly",
|
|
201
187
|
"Weekly (Start Wednesday)": "Weekly (Start Wednesday)",
|
|
@@ -1,7 +1,16 @@
|
|
|
1
|
+
import { useConfig, useDataQuery } from '@dhis2/app-runtime';
|
|
1
2
|
import PropTypes from 'prop-types';
|
|
2
3
|
import React from 'react';
|
|
3
4
|
import { DIMENSION_ID_PERIOD } from '../../modules/predefinedDimensions.js';
|
|
4
5
|
import PeriodTransfer from './PeriodTransfer.js';
|
|
6
|
+
const userSettingsQuery = {
|
|
7
|
+
userSettings: {
|
|
8
|
+
resource: 'userSettings',
|
|
9
|
+
params: {
|
|
10
|
+
key: ['keyUiLocale']
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
};
|
|
5
14
|
|
|
6
15
|
const PeriodDimension = _ref => {
|
|
7
16
|
let {
|
|
@@ -10,6 +19,24 @@ const PeriodDimension = _ref => {
|
|
|
10
19
|
rightFooter,
|
|
11
20
|
excludedPeriodTypes
|
|
12
21
|
} = _ref;
|
|
22
|
+
const {
|
|
23
|
+
systemInfo
|
|
24
|
+
} = useConfig();
|
|
25
|
+
const result = useDataQuery(userSettingsQuery);
|
|
26
|
+
const {
|
|
27
|
+
calendar = 'gregory'
|
|
28
|
+
} = systemInfo;
|
|
29
|
+
const {
|
|
30
|
+
data: {
|
|
31
|
+
userSettings: {
|
|
32
|
+
keyUiLocale: locale
|
|
33
|
+
} = {}
|
|
34
|
+
} = {}
|
|
35
|
+
} = result;
|
|
36
|
+
const periodsSettings = {
|
|
37
|
+
calendar,
|
|
38
|
+
locale
|
|
39
|
+
};
|
|
13
40
|
|
|
14
41
|
const selectPeriods = periods => {
|
|
15
42
|
onSelect({
|
|
@@ -23,7 +50,8 @@ const PeriodDimension = _ref => {
|
|
|
23
50
|
initialSelectedPeriods: selectedPeriods,
|
|
24
51
|
rightFooter: rightFooter,
|
|
25
52
|
dataTest: 'period-dimension',
|
|
26
|
-
excludedPeriodTypes: excludedPeriodTypes
|
|
53
|
+
excludedPeriodTypes: excludedPeriodTypes,
|
|
54
|
+
periodsSettings: periodsSettings
|
|
27
55
|
});
|
|
28
56
|
};
|
|
29
57
|
|
|
@@ -2,6 +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 { getNowInCalendar } from '@dhis2/multi-calendar-dates';
|
|
5
6
|
import { TabBar, Tab, Transfer } from '@dhis2/ui';
|
|
6
7
|
import PropTypes from 'prop-types';
|
|
7
8
|
import React, { useState } from 'react';
|
|
@@ -23,11 +24,15 @@ const PeriodTransfer = _ref => {
|
|
|
23
24
|
dataTest,
|
|
24
25
|
initialSelectedPeriods,
|
|
25
26
|
rightFooter,
|
|
26
|
-
excludedPeriodTypes
|
|
27
|
+
excludedPeriodTypes,
|
|
28
|
+
periodsSettings
|
|
27
29
|
} = _ref;
|
|
28
30
|
const defaultRelativePeriodType = excludedPeriodTypes.includes(MONTHLY) ? getRelativePeriodsOptionsById(QUARTERLY) : getRelativePeriodsOptionsById(MONTHLY);
|
|
29
|
-
const defaultFixedPeriodType = excludedPeriodTypes.includes(MONTHLY) ? getFixedPeriodsOptionsById(QUARTERLY) : getFixedPeriodsOptionsById(MONTHLY);
|
|
30
|
-
const
|
|
31
|
+
const defaultFixedPeriodType = excludedPeriodTypes.includes(MONTHLY) ? getFixedPeriodsOptionsById(QUARTERLY, periodsSettings) : getFixedPeriodsOptionsById(MONTHLY, periodsSettings);
|
|
32
|
+
const now = 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)
|
|
33
|
+
// 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
|
|
34
|
+
|
|
35
|
+
const defaultFixedPeriodYear = now.eraYear || now.year;
|
|
31
36
|
|
|
32
37
|
const fixedPeriodConfig = year => ({
|
|
33
38
|
offset: year - defaultFixedPeriodYear,
|
|
@@ -49,7 +54,7 @@ const PeriodTransfer = _ref => {
|
|
|
49
54
|
const onIsRelativeClick = state => {
|
|
50
55
|
if (state !== isRelative) {
|
|
51
56
|
setIsRelative(state);
|
|
52
|
-
setAllPeriods(state ? getRelativePeriodsOptionsById(relativeFilter.periodType).getPeriods() : getFixedPeriodsOptionsById(fixedFilter.periodType).getPeriods(fixedPeriodConfig(Number(fixedFilter.year))));
|
|
57
|
+
setAllPeriods(state ? getRelativePeriodsOptionsById(relativeFilter.periodType).getPeriods() : getFixedPeriodsOptionsById(fixedFilter.periodType, periodsSettings).getPeriods(fixedPeriodConfig(Number(fixedFilter.year))));
|
|
53
58
|
}
|
|
54
59
|
};
|
|
55
60
|
|
|
@@ -102,7 +107,7 @@ const PeriodTransfer = _ref => {
|
|
|
102
107
|
|
|
103
108
|
const onSelectFixedPeriods = filter => {
|
|
104
109
|
setFixedFilter(filter);
|
|
105
|
-
setAllPeriods(getFixedPeriodsOptionsById(filter.periodType).getPeriods(fixedPeriodConfig(Number(filter.year))));
|
|
110
|
+
setAllPeriods(getFixedPeriodsOptionsById(filter.periodType, periodsSettings).getPeriods(fixedPeriodConfig(Number(filter.year)), periodsSettings));
|
|
106
111
|
};
|
|
107
112
|
|
|
108
113
|
const renderEmptySelection = () => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("p", {
|
|
@@ -152,7 +157,11 @@ const PeriodTransfer = _ref => {
|
|
|
152
157
|
|
|
153
158
|
PeriodTransfer.defaultProps = {
|
|
154
159
|
initialSelectedPeriods: [],
|
|
155
|
-
excludedPeriodTypes: []
|
|
160
|
+
excludedPeriodTypes: [],
|
|
161
|
+
periodsSettings: {
|
|
162
|
+
calendar: 'gregory',
|
|
163
|
+
locale: 'en'
|
|
164
|
+
}
|
|
156
165
|
};
|
|
157
166
|
PeriodTransfer.propTypes = {
|
|
158
167
|
onSelect: PropTypes.func.isRequired,
|
|
@@ -162,6 +171,10 @@ PeriodTransfer.propTypes = {
|
|
|
162
171
|
id: PropTypes.string,
|
|
163
172
|
name: PropTypes.string
|
|
164
173
|
})),
|
|
174
|
+
periodsSettings: PropTypes.shape({
|
|
175
|
+
calendar: PropTypes.string,
|
|
176
|
+
locale: PropTypes.string
|
|
177
|
+
}),
|
|
165
178
|
rightFooter: PropTypes.node
|
|
166
179
|
};
|
|
167
180
|
export default PeriodTransfer;
|
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
import { shallow } from 'enzyme';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import PeriodDimension from '../PeriodDimension.js';
|
|
4
|
+
jest.mock('@dhis2/app-runtime', () => ({
|
|
5
|
+
useConfig: () => ({
|
|
6
|
+
systemInfo: {}
|
|
7
|
+
}),
|
|
8
|
+
useDataQuery: () => ({
|
|
9
|
+
data: {
|
|
10
|
+
userSettings: {
|
|
11
|
+
keyUiLocale: 'en'
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
})
|
|
15
|
+
}));
|
|
16
|
+
afterEach(jest.clearAllMocks);
|
|
4
17
|
describe('The Period Dimension component', () => {
|
|
5
18
|
let props;
|
|
6
19
|
let shallowPeriodDimension;
|
package/build/es/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap
CHANGED
|
@@ -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
|
`;
|