@dhis2/analytics 24.5.0 → 24.7.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 CHANGED
@@ -1,9 +1,23 @@
1
- # [24.5.0](https://github.com/dhis2/analytics/compare/v24.4.2...v24.5.0) (2023-02-02)
1
+ # [24.7.0](https://github.com/dhis2/analytics/compare/v24.6.0...v24.7.0) (2023-02-15)
2
2
 
3
3
 
4
4
  ### Features
5
5
 
6
- * use multi-calendar-dates library to generate fixed periods ([acc3801](https://github.com/dhis2/analytics/commit/acc380156092f888cfa55f70b4bade1c6516d034))
6
+ * new props for customising OrgUnitDimension DHIS2-14744 ([#1427](https://github.com/dhis2/analytics/issues/1427)) ([ae2f886](https://github.com/dhis2/analytics/commit/ae2f886167a487271bf42c2f4c694e45ea4b25b3))
7
+
8
+ # [24.6.0](https://github.com/dhis2/analytics/compare/v24.5.0...v24.6.0) (2023-02-13)
9
+
10
+
11
+ ### Features
12
+
13
+ * single value background color change based upon legend (DHIS2-13702) ([#1402](https://github.com/dhis2/analytics/issues/1402)) ([ad437c6](https://github.com/dhis2/analytics/commit/ad437c6a1fcbcb71cee7b6945c6bc83ed2bc3bb3))
14
+
15
+ # [24.5.0](https://github.com/dhis2/analytics/compare/v24.4.2...v24.5.0) (2023-02-06)
16
+
17
+
18
+ ### Features
19
+
20
+ * [reverted] use multi-calendar-dates library to generate fixed periods ([acc3801](https://github.com/dhis2/analytics/commit/acc380156092f888cfa55f70b4bade1c6516d034)). This work was added to "next" release channel, but was reverted afterwards because of the restrictions "next" channel puts on what can be released from master afterwards. It will be added to "alpha" channel instead until it's ready for the main channel.
7
21
 
8
22
  ## [24.4.2](https://github.com/dhis2/analytics/compare/v24.4.1...v24.4.2) (2023-01-25)
9
23
 
@@ -15,7 +15,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
15
15
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
16
 
17
17
  const Wrapper = story => /*#__PURE__*/_react2.default.createElement(_appRuntime.DataProvider, {
18
- baseUrl: "http://localhost:8080/",
18
+ baseUrl: "https://debug.dhis2.org/analytics-dev/",
19
19
  apiVersion: ""
20
20
  }, story());
21
21
 
@@ -101,4 +101,43 @@ const defaultRootOrgUnits = ['ImspTQPwCqd']; // Sierra Leone
101
101
  roots: ['O6uvpzGd5pu', 'fdc6uOvgoji'] // Bo + Bombali
102
102
 
103
103
  });
104
+ });
105
+ (0, _react.storiesOf)('OrgUnitDimension', module).addDecorator(Wrapper).add('Without level selector', () => {
106
+ const [selected, setSelected] = (0, _react2.useState)([]);
107
+ return /*#__PURE__*/_react2.default.createElement(_OrgUnitDimension.default, {
108
+ hideLevelSelect: true,
109
+ selected: selected,
110
+ onSelect: response => setSelected(response.items),
111
+ roots: defaultRootOrgUnits
112
+ });
113
+ });
114
+ (0, _react.storiesOf)('OrgUnitDimension', module).addDecorator(Wrapper).add('Without group selector', () => {
115
+ const [selected, setSelected] = (0, _react2.useState)([]);
116
+ return /*#__PURE__*/_react2.default.createElement(_OrgUnitDimension.default, {
117
+ hideGroupSelect: true,
118
+ selected: selected,
119
+ onSelect: response => setSelected(response.items),
120
+ roots: defaultRootOrgUnits
121
+ });
122
+ });
123
+ (0, _react.storiesOf)('OrgUnitDimension', module).addDecorator(Wrapper).add('Without level and group selector', () => {
124
+ const [selected, setSelected] = (0, _react2.useState)([]);
125
+ return /*#__PURE__*/_react2.default.createElement(_OrgUnitDimension.default, {
126
+ hideLevelSelect: true,
127
+ hideGroupSelect: true,
128
+ selected: selected,
129
+ onSelect: response => setSelected(response.items),
130
+ roots: defaultRootOrgUnits
131
+ });
132
+ });
133
+ (0, _react.storiesOf)('OrgUnitDimension', module).addDecorator(Wrapper).add('Without level and group selector, with warning text', () => {
134
+ const [selected, setSelected] = (0, _react2.useState)([]);
135
+ return /*#__PURE__*/_react2.default.createElement(_OrgUnitDimension.default, {
136
+ hideLevelSelect: true,
137
+ hideGroupSelect: true,
138
+ selected: selected,
139
+ onSelect: response => setSelected(response.items),
140
+ roots: defaultRootOrgUnits,
141
+ warning: 'No org. units selected'
142
+ });
104
143
  });
@@ -41,7 +41,10 @@ const OrgUnitDimension = _ref => {
41
41
  let {
42
42
  roots,
43
43
  selected,
44
- onSelect
44
+ onSelect,
45
+ hideGroupSelect,
46
+ hideLevelSelect,
47
+ warning
45
48
  } = _ref;
46
49
  const [ouLevels, setOuLevels] = (0, _react.useState)([]);
47
50
  const [ouGroups, setOuGroups] = (0, _react.useState)([]);
@@ -94,9 +97,9 @@ const OrgUnitDimension = _ref => {
94
97
  setOuGroups(result);
95
98
  };
96
99
 
97
- doFetchOuLevels();
98
- doFetchOuGroups();
99
- }, [dataEngine]);
100
+ !hideLevelSelect && doFetchOuLevels();
101
+ !hideGroupSelect && doFetchOuGroups();
102
+ }, [dataEngine, hideLevelSelect, hideGroupSelect]);
100
103
 
101
104
  const onLevelChange = ids => {
102
105
  const items = ids.map(id => ({
@@ -227,9 +230,10 @@ const OrgUnitDimension = _ref => {
227
230
  dataTest: 'org-unit-tree'
228
231
  })), /*#__PURE__*/_react.default.createElement("div", {
229
232
  className: "jsx-".concat(_OrgUnitDimensionStyle.default.__hash) + " " + ((0, _classnames.default)('selectsWrapper', {
230
- disabled: selected.some(item => DYNAMIC_ORG_UNITS.includes(item.id))
233
+ disabled: selected.some(item => DYNAMIC_ORG_UNITS.includes(item.id)),
234
+ hidden: hideLevelSelect && hideGroupSelect
231
235
  }) || "")
232
- }, /*#__PURE__*/_react.default.createElement(_ui.MultiSelect, {
236
+ }, !hideLevelSelect && /*#__PURE__*/_react.default.createElement(_ui.MultiSelect, {
233
237
  selected: ouLevels.length ? selected.filter(item => _index2.ouIdHelper.hasLevelPrefix(item.id)).map(item => _index2.ouIdHelper.removePrefix(item.id)) : [],
234
238
  onChange: _ref5 => {
235
239
  let {
@@ -246,7 +250,7 @@ const OrgUnitDimension = _ref => {
246
250
  value: level.id,
247
251
  label: level.displayName,
248
252
  dataTest: "org-unit-level-select-option-".concat(level.id)
249
- }))), /*#__PURE__*/_react.default.createElement(_ui.MultiSelect, {
253
+ }))), !hideGroupSelect && /*#__PURE__*/_react.default.createElement(_ui.MultiSelect, {
250
254
  selected: ouGroups.length ? selected.filter(item => _index2.ouIdHelper.hasGroupPrefix(item.id)).map(item => _index2.ouIdHelper.removePrefix(item.id)) : [],
251
255
  onChange: _ref6 => {
252
256
  let {
@@ -265,7 +269,13 @@ const OrgUnitDimension = _ref => {
265
269
  dataTest: "org-unit-group-select-option-".concat(group.id)
266
270
  })))), /*#__PURE__*/_react.default.createElement("div", {
267
271
  className: "jsx-".concat(_OrgUnitDimensionStyle.default.__hash) + " " + "summaryWrapper"
268
- }, /*#__PURE__*/_react.default.createElement("span", {
272
+ }, warning ? /*#__PURE__*/_react.default.createElement("div", {
273
+ className: "jsx-".concat(_OrgUnitDimensionStyle.default.__hash) + " " + "warningWrapper"
274
+ }, /*#__PURE__*/_react.default.createElement(_ui.IconWarningFilled16, {
275
+ color: _ui.colors.red500
276
+ }), /*#__PURE__*/_react.default.createElement("span", {
277
+ className: "jsx-".concat(_OrgUnitDimensionStyle.default.__hash) + " " + "warningText"
278
+ }, warning)) : /*#__PURE__*/_react.default.createElement("span", {
269
279
  className: "jsx-".concat(_OrgUnitDimensionStyle.default.__hash) + " " + "summaryText"
270
280
  }, getSummary()), /*#__PURE__*/_react.default.createElement("div", {
271
281
  className: "jsx-".concat(_OrgUnitDimensionStyle.default.__hash) + " " + "deselectButton"
@@ -279,13 +289,20 @@ const OrgUnitDimension = _ref => {
279
289
  }, _OrgUnitDimensionStyle.default));
280
290
  };
281
291
 
292
+ OrgUnitDimension.defaultProps = {
293
+ hideGroupSelect: false,
294
+ hideLevelSelect: false
295
+ };
282
296
  OrgUnitDimension.propTypes = {
297
+ hideGroupSelect: _propTypes.default.bool,
298
+ hideLevelSelect: _propTypes.default.bool,
283
299
  roots: _propTypes.default.arrayOf(_propTypes.default.string),
284
300
  selected: _propTypes.default.arrayOf(_propTypes.default.shape({
285
301
  id: _propTypes.default.string.isRequired,
286
302
  name: _propTypes.default.string.isRequired,
287
303
  path: _propTypes.default.string
288
304
  })),
305
+ warning: _propTypes.default.string,
289
306
  onSelect: _propTypes.default.func
290
307
  };
291
308
  var _default = OrgUnitDimension;
@@ -7,7 +7,7 @@ exports.default = void 0;
7
7
 
8
8
  var _ui = require("@dhis2/ui");
9
9
 
10
- const _defaultExport = [".container.jsx-3879278432{height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}", ".orgUnitTreeWrapper.jsx-3879278432{height:382px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;overflow:auto;}", ".orgUnitTreeWrapper.jsx-3879278432>*{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}", ".disabled.jsx-3879278432{cursor:not-allowed;opacity:0.5;}", ".disabled.jsx-3879278432>*{pointer-events:none;}", ".userOrgUnitsWrapper.jsx-3879278432{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background:".concat(_ui.colors.grey200, ";padding:").concat(_ui.spacers.dp8, " ").concat(_ui.spacers.dp8, " ").concat(_ui.spacers.dp8, " ").concat(_ui.spacers.dp24, ";margin-bottom:").concat(_ui.spacers.dp12, ";}"), ".userOrgUnitsWrapper.jsx-3879278432>*{margin-right:".concat(_ui.spacers.dp48, ";}"), ".selectsWrapper.jsx-3879278432{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;gap:".concat(_ui.spacers.dp8, ";margin-top:").concat(_ui.spacers.dp12, ";}"), ".selectsWrapper.jsx-3879278432>*{width:50%;}", ".summaryWrapper.jsx-3879278432{margin-top:".concat(_ui.spacers.dp8, ";}"), ".summaryText.jsx-3879278432{font-size:14px;line-height:18px;color:".concat(_ui.colors.grey700, ";}"), ".deselectButton.jsx-3879278432{display:inline-block;margin-left:".concat(_ui.spacers.dp8, ";}")];
11
- _defaultExport.__hash = "3879278432";
10
+ const _defaultExport = [".container.jsx-2348205733{height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}", ".orgUnitTreeWrapper.jsx-2348205733{height:382px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;overflow:auto;}", ".orgUnitTreeWrapper.jsx-2348205733>*{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}", ".disabled.jsx-2348205733{cursor:not-allowed;opacity:0.5;}", ".disabled.jsx-2348205733>*{pointer-events:none;}", ".userOrgUnitsWrapper.jsx-2348205733{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background:".concat(_ui.colors.grey200, ";padding:").concat(_ui.spacers.dp8, " ").concat(_ui.spacers.dp8, " ").concat(_ui.spacers.dp8, " ").concat(_ui.spacers.dp24, ";margin-bottom:").concat(_ui.spacers.dp12, ";}"), ".userOrgUnitsWrapper.jsx-2348205733>*{margin-right:".concat(_ui.spacers.dp48, ";}"), ".selectsWrapper.jsx-2348205733{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;gap:".concat(_ui.spacers.dp8, ";margin-top:").concat(_ui.spacers.dp12, ";}"), ".selectsWrapper.hidden.jsx-2348205733{display:none;}", ".selectsWrapper.jsx-2348205733>*{width:50%;}", ".summaryWrapper.jsx-2348205733{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:".concat(_ui.spacers.dp8, ";}"), ".warningWrapper.jsx-2348205733{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}", ".warningText.jsx-2348205733{margin-left:".concat(_ui.spacers.dp8, ";font-size:14px;line-height:18px;color:").concat(_ui.colors.red600, ";}"), ".summaryText.jsx-2348205733{font-size:14px;line-height:18px;color:".concat(_ui.colors.grey700, ";}"), ".deselectButton.jsx-2348205733{display:inline-block;margin-left:".concat(_ui.spacers.dp8, ";}")];
11
+ _defaultExport.__hash = "2348205733";
12
12
  var _default = _defaultExport;
13
13
  exports.default = _default;
@@ -7,10 +7,6 @@ exports.default = void 0;
7
7
 
8
8
  var _style = _interopRequireDefault(require("styled-jsx/style"));
9
9
 
10
- var _appRuntime = require("@dhis2/app-runtime");
11
-
12
- var _multiCalendarDates = require("@dhis2/multi-calendar-dates");
13
-
14
10
  var _ui = require("@dhis2/ui");
15
11
 
16
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
@@ -53,17 +49,9 @@ const PeriodTransfer = _ref => {
53
49
  rightFooter,
54
50
  excludedPeriodTypes
55
51
  } = _ref;
56
- const {
57
- systemInfo = {}
58
- } = (0, _appRuntime.useConfig)();
59
- const {
60
- calendar = 'gregory'
61
- } = systemInfo;
62
52
  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); // use ".eraYear" rather than ".year" because in Ethiopian calendar, eraYear is what our users expect to see (for other calendars, it doesn't matter)
64
- // 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
65
-
66
- const defaultFixedPeriodYear = (0, _multiCalendarDates.getNowInCalendar)(calendar).eraYear;
53
+ const defaultFixedPeriodType = excludedPeriodTypes.includes(_index2.MONTHLY) ? (0, _fixedPeriods.getFixedPeriodsOptionsById)(_index2.QUARTERLY) : (0, _fixedPeriods.getFixedPeriodsOptionsById)(_index2.MONTHLY);
54
+ const defaultFixedPeriodYear = new Date().getFullYear();
67
55
 
68
56
  const fixedPeriodConfig = year => ({
69
57
  offset: year - defaultFixedPeriodYear,
@@ -85,7 +73,7 @@ const PeriodTransfer = _ref => {
85
73
  const onIsRelativeClick = state => {
86
74
  if (state !== isRelative) {
87
75
  setIsRelative(state);
88
- setAllPeriods(state ? (0, _relativePeriods.getRelativePeriodsOptionsById)(relativeFilter.periodType).getPeriods() : (0, _fixedPeriods.getFixedPeriodsOptionsById)(fixedFilter.periodType, calendar).getPeriods(fixedPeriodConfig(Number(fixedFilter.year))));
76
+ setAllPeriods(state ? (0, _relativePeriods.getRelativePeriodsOptionsById)(relativeFilter.periodType).getPeriods() : (0, _fixedPeriods.getFixedPeriodsOptionsById)(fixedFilter.periodType).getPeriods(fixedPeriodConfig(Number(fixedFilter.year))));
89
77
  }
90
78
  };
91
79
 
@@ -138,7 +126,7 @@ const PeriodTransfer = _ref => {
138
126
 
139
127
  const onSelectFixedPeriods = filter => {
140
128
  setFixedFilter(filter);
141
- setAllPeriods((0, _fixedPeriods.getFixedPeriodsOptionsById)(filter.periodType, calendar).getPeriods(fixedPeriodConfig(Number(filter.year)), calendar));
129
+ setAllPeriods((0, _fixedPeriods.getFixedPeriodsOptionsById)(filter.periodType).getPeriods(fixedPeriodConfig(Number(filter.year))));
142
130
  };
143
131
 
144
132
  const renderEmptySelection = () => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("p", {