@dhis2/analytics 28.0.1 → 28.0.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/build/cjs/__demo__/DataDimension.stories.js +2 -2
- package/build/cjs/__demo__/OpenFileDialog.stories.js +2 -2
- package/build/cjs/__demo__/OrgUnitDimension.stories.js +2 -2
- package/build/cjs/__demo__/PeriodDimension.stories.js +2 -2
- package/build/cjs/components/TranslationDialog/TranslationModal/TranslationModal.js +1 -1
- package/build/cjs/components/TranslationDialog/TranslationModal/__tests__/TranslationModal.spec.js +52 -0
- package/build/cjs/index.js +29 -0
- package/build/cjs/modules/hideEmptyRowItems.js +10 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/getTrimmedConfig.js +5 -4
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/index.js +2 -1
- package/build/es/__demo__/DataDimension.stories.js +2 -2
- package/build/es/__demo__/OpenFileDialog.stories.js +2 -2
- package/build/es/__demo__/OrgUnitDimension.stories.js +2 -2
- package/build/es/__demo__/PeriodDimension.stories.js +2 -2
- package/build/es/components/TranslationDialog/TranslationModal/TranslationModal.js +1 -1
- package/build/es/components/TranslationDialog/TranslationModal/__tests__/TranslationModal.spec.js +49 -0
- package/build/es/index.js +4 -0
- package/build/es/modules/hideEmptyRowItems.js +4 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/getTrimmedConfig.js +5 -4
- package/build/es/visualizations/config/adapters/dhis_highcharts/index.js +2 -1
- package/package.json +1 -1
|
@@ -19,8 +19,8 @@ const Wrapper = story => /*#__PURE__*/_react.default.createElement(_appServiceCo
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
}, /*#__PURE__*/_react.default.createElement(_appRuntime.DataProvider, {
|
|
22
|
-
baseUrl: "https://test.e2e.dhis2.org/
|
|
23
|
-
apiVersion: "
|
|
22
|
+
baseUrl: "https://test.e2e.dhis2.org/anly-42",
|
|
23
|
+
apiVersion: "42"
|
|
24
24
|
}, story()));
|
|
25
25
|
var _default = exports.default = {
|
|
26
26
|
title: 'DataDimension',
|
|
@@ -10,8 +10,8 @@ var _OpenFileDialog = require("../components/OpenFileDialog/OpenFileDialog.js");
|
|
|
10
10
|
var _visTypes = require("../modules/visTypes.js");
|
|
11
11
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
12
|
const Wrapper = story => /*#__PURE__*/_react.default.createElement(_appRuntime.DataProvider, {
|
|
13
|
-
baseUrl: "https://test.e2e.dhis2.org/
|
|
14
|
-
apiVersion: "
|
|
13
|
+
baseUrl: "https://test.e2e.dhis2.org/anly-42/",
|
|
14
|
+
apiVersion: "42"
|
|
15
15
|
}, story());
|
|
16
16
|
const user = {
|
|
17
17
|
displayName: 'John Traore',
|
|
@@ -11,8 +11,8 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
11
11
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
12
12
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
13
|
const Wrapper = story => /*#__PURE__*/_react.default.createElement(_appRuntime.DataProvider, {
|
|
14
|
-
baseUrl: "https://test.e2e.dhis2.org/
|
|
15
|
-
apiVersion: "
|
|
14
|
+
baseUrl: "https://test.e2e.dhis2.org/anly-42/",
|
|
15
|
+
apiVersion: "42"
|
|
16
16
|
}, story());
|
|
17
17
|
const defaultRootOrgUnits = ['ImspTQPwCqd']; // Sierra Leone
|
|
18
18
|
var _default = exports.default = {
|
|
@@ -15,8 +15,8 @@ const Wrapper = story => /*#__PURE__*/_react.default.createElement(_appServiceCo
|
|
|
15
15
|
systemInfo: {}
|
|
16
16
|
}
|
|
17
17
|
}, /*#__PURE__*/_react.default.createElement(_appRuntime.DataProvider, {
|
|
18
|
-
baseUrl: "https://test.e2e.dhis2.org/
|
|
19
|
-
apiVersion: "
|
|
18
|
+
baseUrl: "https://test.e2e.dhis2.org/anly-42/",
|
|
19
|
+
apiVersion: "42"
|
|
20
20
|
}, story()));
|
|
21
21
|
const selectedPeriods = [{
|
|
22
22
|
id: 'LAST_12_MONTHS',
|
|
@@ -23,7 +23,7 @@ const TranslationModal = _ref => {
|
|
|
23
23
|
} = _ref;
|
|
24
24
|
const [translations, setTranslations] = (0, _react.useState)([]);
|
|
25
25
|
const endpointPath = new URL(objectToTranslate.href).pathname;
|
|
26
|
-
const endpointPathMatch = endpointPath.match(/api
|
|
26
|
+
const endpointPathMatch = endpointPath.match(/api\/(?:\d+\/)?(?<resource>.+)/);
|
|
27
27
|
const resource = endpointPathMatch !== null && endpointPathMatch !== void 0 && endpointPathMatch.groups ? endpointPathMatch.groups.resource : null;
|
|
28
28
|
const {
|
|
29
29
|
translationsData,
|
package/build/cjs/components/TranslationDialog/TranslationModal/__tests__/TranslationModal.spec.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _ui = require("@dhis2/ui");
|
|
4
|
+
var _enzyme = require("enzyme");
|
|
5
|
+
var _react = _interopRequireDefault(require("react"));
|
|
6
|
+
var _TranslationModal = require("../TranslationModal.js");
|
|
7
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
+
const mockUseTranslationResults = jest.fn(() => ({
|
|
9
|
+
translationsData: undefined,
|
|
10
|
+
fetching: false
|
|
11
|
+
}));
|
|
12
|
+
jest.mock('../useTranslationsResults.js', () => ({
|
|
13
|
+
useTranslationsResults: args => mockUseTranslationResults(args)
|
|
14
|
+
}));
|
|
15
|
+
describe('The Translation Dialog component', () => {
|
|
16
|
+
let shallowTranslationModal;
|
|
17
|
+
let props;
|
|
18
|
+
const onClose = jest.fn();
|
|
19
|
+
const onTranslationSaved = jest.fn();
|
|
20
|
+
const getTranslationModalComponent = props => {
|
|
21
|
+
if (!shallowTranslationModal) {
|
|
22
|
+
shallowTranslationModal = (0, _enzyme.shallow)(/*#__PURE__*/_react.default.createElement(_TranslationModal.TranslationModal, props));
|
|
23
|
+
}
|
|
24
|
+
return shallowTranslationModal;
|
|
25
|
+
};
|
|
26
|
+
beforeEach(() => {
|
|
27
|
+
shallowTranslationModal = undefined;
|
|
28
|
+
props = {
|
|
29
|
+
fieldsToTranslate: ['name', 'description'],
|
|
30
|
+
objectToTranslate: {
|
|
31
|
+
name: 'Test object',
|
|
32
|
+
href: 'https://dhis2.tld/path/api/visualization/object-id'
|
|
33
|
+
},
|
|
34
|
+
onClose,
|
|
35
|
+
onTranslationSaved
|
|
36
|
+
};
|
|
37
|
+
});
|
|
38
|
+
it('renders a Modal component', () => {
|
|
39
|
+
expect(getTranslationModalComponent(props).find(_ui.Modal)).toHaveLength(1);
|
|
40
|
+
});
|
|
41
|
+
it("renders a ModalTitle containing the object's name", () => {
|
|
42
|
+
expect(getTranslationModalComponent(props).find(_ui.ModalTitle).childAt(0).text()).toEqual(`Translate: ${props.objectToTranslate.name}`);
|
|
43
|
+
});
|
|
44
|
+
test.each(['https://dhis2.tld/path/api/visualization/object-id', 'https://dhis2.tld/path/api/42/visualization/object-id'])('uses the correct resource for the translation endpoint', href => {
|
|
45
|
+
props.objectToTranslate.href = href;
|
|
46
|
+
getTranslationModalComponent(props);
|
|
47
|
+
expect(mockUseTranslationResults).toHaveBeenCalled();
|
|
48
|
+
expect(mockUseTranslationResults).toHaveBeenCalledWith({
|
|
49
|
+
resource: 'visualization/object-id'
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
});
|
package/build/cjs/index.js
CHANGED
|
@@ -215,6 +215,10 @@ var _exportNames = {
|
|
|
215
215
|
LEGEND_DISPLAY_STYLE_FILL: true,
|
|
216
216
|
LEGEND_DISPLAY_STYLE_TEXT: true,
|
|
217
217
|
getColorByValueFromLegendSet: true,
|
|
218
|
+
HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST: true,
|
|
219
|
+
HIDE_EMPTY_ROW_ITEMS_AFTER_LAST: true,
|
|
220
|
+
HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST_AFTER_LAST: true,
|
|
221
|
+
HIDE_EMPTY_ROW_ITEMS_ALL: true,
|
|
218
222
|
formatValue: true,
|
|
219
223
|
COLOR_SET_DEFAULT: true,
|
|
220
224
|
COLOR_SET_BASIC: true,
|
|
@@ -713,6 +717,30 @@ Object.defineProperty(exports, "FixedPeriodSelect", {
|
|
|
713
717
|
return _FixedPeriodSelect.default;
|
|
714
718
|
}
|
|
715
719
|
});
|
|
720
|
+
Object.defineProperty(exports, "HIDE_EMPTY_ROW_ITEMS_AFTER_LAST", {
|
|
721
|
+
enumerable: true,
|
|
722
|
+
get: function () {
|
|
723
|
+
return _hideEmptyRowItems.HIDE_EMPTY_ROW_ITEMS_AFTER_LAST;
|
|
724
|
+
}
|
|
725
|
+
});
|
|
726
|
+
Object.defineProperty(exports, "HIDE_EMPTY_ROW_ITEMS_ALL", {
|
|
727
|
+
enumerable: true,
|
|
728
|
+
get: function () {
|
|
729
|
+
return _hideEmptyRowItems.HIDE_EMPTY_ROW_ITEMS_ALL;
|
|
730
|
+
}
|
|
731
|
+
});
|
|
732
|
+
Object.defineProperty(exports, "HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST", {
|
|
733
|
+
enumerable: true,
|
|
734
|
+
get: function () {
|
|
735
|
+
return _hideEmptyRowItems.HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST;
|
|
736
|
+
}
|
|
737
|
+
});
|
|
738
|
+
Object.defineProperty(exports, "HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST_AFTER_LAST", {
|
|
739
|
+
enumerable: true,
|
|
740
|
+
get: function () {
|
|
741
|
+
return _hideEmptyRowItems.HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST_AFTER_LAST;
|
|
742
|
+
}
|
|
743
|
+
});
|
|
716
744
|
Object.defineProperty(exports, "ITEM", {
|
|
717
745
|
enumerable: true,
|
|
718
746
|
get: function () {
|
|
@@ -1951,6 +1979,7 @@ var _index10 = require("./modules/layoutUiRules/index.js");
|
|
|
1951
1979
|
var _index11 = require("./visualizations/index.js");
|
|
1952
1980
|
var _fontStyle = require("./modules/fontStyle.js");
|
|
1953
1981
|
var _legends = require("./modules/legends.js");
|
|
1982
|
+
var _hideEmptyRowItems = require("./modules/hideEmptyRowItems.js");
|
|
1954
1983
|
var _renderValue = require("./modules/renderValue.js");
|
|
1955
1984
|
var _colorSets = require("./visualizations/util/colors/colorSets.js");
|
|
1956
1985
|
var _index12 = require("./components/PeriodDimension/utils/index.js");
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST_AFTER_LAST = exports.HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST = exports.HIDE_EMPTY_ROW_ITEMS_ALL = exports.HIDE_EMPTY_ROW_ITEMS_AFTER_LAST = void 0;
|
|
7
|
+
const HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST = exports.HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST = 'BEFORE_FIRST';
|
|
8
|
+
const HIDE_EMPTY_ROW_ITEMS_AFTER_LAST = exports.HIDE_EMPTY_ROW_ITEMS_AFTER_LAST = 'AFTER_LAST';
|
|
9
|
+
const HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST_AFTER_LAST = exports.HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST_AFTER_LAST = 'BEFORE_FIRST_AFTER_LAST';
|
|
10
|
+
const HIDE_EMPTY_ROW_ITEMS_ALL = exports.HIDE_EMPTY_ROW_ITEMS_ALL = 'ALL';
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = _default;
|
|
7
7
|
var _arrayContains = _interopRequireDefault(require("d2-utilizr/lib/arrayContains"));
|
|
8
8
|
var _arrayUnique = _interopRequireDefault(require("d2-utilizr/lib/arrayUnique"));
|
|
9
|
+
var _hideEmptyRowItems = require("../../../../modules/hideEmptyRowItems.js");
|
|
9
10
|
var _visTypes = require("../../../../modules/visTypes.js");
|
|
10
11
|
var _getTwoCategorySplitSerieData = _interopRequireDefault(require("./getTwoCategorySplitSerieData.js"));
|
|
11
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -60,16 +61,16 @@ function getFirstLastValueIndexes(series) {
|
|
|
60
61
|
function cleanData(data, emptySeriesIndexes, firstValueIndex, lastValueIndex, hideEmptyRowItems) {
|
|
61
62
|
let cleanedData;
|
|
62
63
|
switch (hideEmptyRowItems) {
|
|
63
|
-
case
|
|
64
|
+
case _hideEmptyRowItems.HIDE_EMPTY_ROW_ITEMS_ALL:
|
|
64
65
|
cleanedData = arrayCleanUndefined(data.map((value, index) => (0, _arrayContains.default)(emptySeriesIndexes, index) ? undefined : value));
|
|
65
66
|
break;
|
|
66
|
-
case
|
|
67
|
+
case _hideEmptyRowItems.HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST:
|
|
67
68
|
cleanedData = data.slice(firstValueIndex);
|
|
68
69
|
break;
|
|
69
|
-
case
|
|
70
|
+
case _hideEmptyRowItems.HIDE_EMPTY_ROW_ITEMS_AFTER_LAST:
|
|
70
71
|
cleanedData = data.slice(0, lastValueIndex + 1);
|
|
71
72
|
break;
|
|
72
|
-
case
|
|
73
|
+
case _hideEmptyRowItems.HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST_AFTER_LAST:
|
|
73
74
|
cleanedData = data.slice(firstValueIndex, lastValueIndex + 1);
|
|
74
75
|
break;
|
|
75
76
|
default:
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = _default;
|
|
7
7
|
var _isString = _interopRequireDefault(require("d2-utilizr/lib/isString"));
|
|
8
8
|
var _objectClean = _interopRequireDefault(require("d2-utilizr/lib/objectClean"));
|
|
9
|
+
var _hideEmptyRowItems = require("../../../../modules/hideEmptyRowItems.js");
|
|
9
10
|
var _legends = require("../../../../modules/legends.js");
|
|
10
11
|
var _index = require("../../../../modules/outliers/index.js");
|
|
11
12
|
var _visTypes = require("../../../../modules/visTypes.js");
|
|
@@ -144,7 +145,7 @@ function _default(_ref) {
|
|
|
144
145
|
}
|
|
145
146
|
|
|
146
147
|
// hide empty categories
|
|
147
|
-
if (_layout.hideEmptyRowItems
|
|
148
|
+
if (_layout.hideEmptyRowItems && [_hideEmptyRowItems.HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST, _hideEmptyRowItems.HIDE_EMPTY_ROW_ITEMS_AFTER_LAST, _hideEmptyRowItems.HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST_AFTER_LAST, _hideEmptyRowItems.HIDE_EMPTY_ROW_ITEMS_ALL].includes(_layout.hideEmptyRowItems)) {
|
|
148
149
|
config = (0, _getTrimmedConfig.default)(config, _layout);
|
|
149
150
|
}
|
|
150
151
|
|
|
@@ -10,8 +10,8 @@ const Wrapper = story => /*#__PURE__*/React.createElement(ConfigProvider, {
|
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
}, /*#__PURE__*/React.createElement(DataProvider, {
|
|
13
|
-
baseUrl: "https://test.e2e.dhis2.org/
|
|
14
|
-
apiVersion: "
|
|
13
|
+
baseUrl: "https://test.e2e.dhis2.org/anly-42",
|
|
14
|
+
apiVersion: "42"
|
|
15
15
|
}, story()));
|
|
16
16
|
export default {
|
|
17
17
|
title: 'DataDimension',
|
|
@@ -3,8 +3,8 @@ import React from 'react';
|
|
|
3
3
|
import { OpenFileDialog } from '../components/OpenFileDialog/OpenFileDialog.js';
|
|
4
4
|
import { VIS_TYPE_GROUP_ALL, VIS_TYPE_GROUP_CHARTS, VIS_TYPE_PIVOT_TABLE, VIS_TYPE_COLUMN, VIS_TYPE_BAR, VIS_TYPE_LINE_LIST } from '../modules/visTypes.js';
|
|
5
5
|
const Wrapper = story => /*#__PURE__*/React.createElement(DataProvider, {
|
|
6
|
-
baseUrl: "https://test.e2e.dhis2.org/
|
|
7
|
-
apiVersion: "
|
|
6
|
+
baseUrl: "https://test.e2e.dhis2.org/anly-42/",
|
|
7
|
+
apiVersion: "42"
|
|
8
8
|
}, story());
|
|
9
9
|
const user = {
|
|
10
10
|
displayName: 'John Traore',
|
|
@@ -2,8 +2,8 @@ import { DataProvider } from '@dhis2/app-runtime';
|
|
|
2
2
|
import React, { useState } from 'react';
|
|
3
3
|
import OrgUnitDimension from '../components/OrgUnitDimension/OrgUnitDimension.js';
|
|
4
4
|
const Wrapper = story => /*#__PURE__*/React.createElement(DataProvider, {
|
|
5
|
-
baseUrl: "https://test.e2e.dhis2.org/
|
|
6
|
-
apiVersion: "
|
|
5
|
+
baseUrl: "https://test.e2e.dhis2.org/anly-42/",
|
|
6
|
+
apiVersion: "42"
|
|
7
7
|
}, story());
|
|
8
8
|
const defaultRootOrgUnits = ['ImspTQPwCqd']; // Sierra Leone
|
|
9
9
|
|
|
@@ -8,8 +8,8 @@ const Wrapper = story => /*#__PURE__*/React.createElement(ConfigProvider, {
|
|
|
8
8
|
systemInfo: {}
|
|
9
9
|
}
|
|
10
10
|
}, /*#__PURE__*/React.createElement(DataProvider, {
|
|
11
|
-
baseUrl: "https://test.e2e.dhis2.org/
|
|
12
|
-
apiVersion: "
|
|
11
|
+
baseUrl: "https://test.e2e.dhis2.org/anly-42/",
|
|
12
|
+
apiVersion: "42"
|
|
13
13
|
}, story()));
|
|
14
14
|
const selectedPeriods = [{
|
|
15
15
|
id: 'LAST_12_MONTHS',
|
|
@@ -14,7 +14,7 @@ export const TranslationModal = _ref => {
|
|
|
14
14
|
} = _ref;
|
|
15
15
|
const [translations, setTranslations] = useState([]);
|
|
16
16
|
const endpointPath = new URL(objectToTranslate.href).pathname;
|
|
17
|
-
const endpointPathMatch = endpointPath.match(/api
|
|
17
|
+
const endpointPathMatch = endpointPath.match(/api\/(?:\d+\/)?(?<resource>.+)/);
|
|
18
18
|
const resource = endpointPathMatch !== null && endpointPathMatch !== void 0 && endpointPathMatch.groups ? endpointPathMatch.groups.resource : null;
|
|
19
19
|
const {
|
|
20
20
|
translationsData,
|
package/build/es/components/TranslationDialog/TranslationModal/__tests__/TranslationModal.spec.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ModalTitle, Modal } from '@dhis2/ui';
|
|
2
|
+
import { shallow } from 'enzyme';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { TranslationModal } from '../TranslationModal.js';
|
|
5
|
+
const mockUseTranslationResults = jest.fn(() => ({
|
|
6
|
+
translationsData: undefined,
|
|
7
|
+
fetching: false
|
|
8
|
+
}));
|
|
9
|
+
jest.mock('../useTranslationsResults.js', () => ({
|
|
10
|
+
useTranslationsResults: args => mockUseTranslationResults(args)
|
|
11
|
+
}));
|
|
12
|
+
describe('The Translation Dialog component', () => {
|
|
13
|
+
let shallowTranslationModal;
|
|
14
|
+
let props;
|
|
15
|
+
const onClose = jest.fn();
|
|
16
|
+
const onTranslationSaved = jest.fn();
|
|
17
|
+
const getTranslationModalComponent = props => {
|
|
18
|
+
if (!shallowTranslationModal) {
|
|
19
|
+
shallowTranslationModal = shallow(/*#__PURE__*/React.createElement(TranslationModal, props));
|
|
20
|
+
}
|
|
21
|
+
return shallowTranslationModal;
|
|
22
|
+
};
|
|
23
|
+
beforeEach(() => {
|
|
24
|
+
shallowTranslationModal = undefined;
|
|
25
|
+
props = {
|
|
26
|
+
fieldsToTranslate: ['name', 'description'],
|
|
27
|
+
objectToTranslate: {
|
|
28
|
+
name: 'Test object',
|
|
29
|
+
href: 'https://dhis2.tld/path/api/visualization/object-id'
|
|
30
|
+
},
|
|
31
|
+
onClose,
|
|
32
|
+
onTranslationSaved
|
|
33
|
+
};
|
|
34
|
+
});
|
|
35
|
+
it('renders a Modal component', () => {
|
|
36
|
+
expect(getTranslationModalComponent(props).find(Modal)).toHaveLength(1);
|
|
37
|
+
});
|
|
38
|
+
it("renders a ModalTitle containing the object's name", () => {
|
|
39
|
+
expect(getTranslationModalComponent(props).find(ModalTitle).childAt(0).text()).toEqual(`Translate: ${props.objectToTranslate.name}`);
|
|
40
|
+
});
|
|
41
|
+
test.each(['https://dhis2.tld/path/api/visualization/object-id', 'https://dhis2.tld/path/api/42/visualization/object-id'])('uses the correct resource for the translation endpoint', href => {
|
|
42
|
+
props.objectToTranslate.href = href;
|
|
43
|
+
getTranslationModalComponent(props);
|
|
44
|
+
expect(mockUseTranslationResults).toHaveBeenCalled();
|
|
45
|
+
expect(mockUseTranslationResults).toHaveBeenCalledWith({
|
|
46
|
+
resource: 'visualization/object-id'
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
});
|
package/build/es/index.js
CHANGED
|
@@ -121,6 +121,10 @@ export { FONT_STYLE_VISUALIZATION_TITLE, FONT_STYLE_VISUALIZATION_SUBTITLE, FONT
|
|
|
121
121
|
|
|
122
122
|
export { LEGEND_DISPLAY_STRATEGY_BY_DATA_ITEM, LEGEND_DISPLAY_STRATEGY_FIXED, LEGEND_DISPLAY_STYLE_FILL, LEGEND_DISPLAY_STYLE_TEXT, getColorByValueFromLegendSet } from './modules/legends.js';
|
|
123
123
|
|
|
124
|
+
// Modules: hideEmptyRowItems
|
|
125
|
+
|
|
126
|
+
export { HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST, HIDE_EMPTY_ROW_ITEMS_AFTER_LAST, HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST_AFTER_LAST, HIDE_EMPTY_ROW_ITEMS_ALL } from './modules/hideEmptyRowItems.js';
|
|
127
|
+
|
|
124
128
|
// Modules: general
|
|
125
129
|
|
|
126
130
|
export { renderValue as formatValue } from './modules/renderValue.js';
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import arrayContains from 'd2-utilizr/lib/arrayContains';
|
|
2
2
|
import arrayUnique from 'd2-utilizr/lib/arrayUnique';
|
|
3
|
+
import { HIDE_EMPTY_ROW_ITEMS_AFTER_LAST, HIDE_EMPTY_ROW_ITEMS_ALL, HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST, HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST_AFTER_LAST } from '../../../../modules/hideEmptyRowItems.js';
|
|
3
4
|
import { isTwoCategoryChartType } from '../../../../modules/visTypes.js';
|
|
4
5
|
import getTwoCategorySplitSerieData from './getTwoCategorySplitSerieData.js';
|
|
5
6
|
function arrayCleanUndefined(array) {
|
|
@@ -53,16 +54,16 @@ function getFirstLastValueIndexes(series) {
|
|
|
53
54
|
function cleanData(data, emptySeriesIndexes, firstValueIndex, lastValueIndex, hideEmptyRowItems) {
|
|
54
55
|
let cleanedData;
|
|
55
56
|
switch (hideEmptyRowItems) {
|
|
56
|
-
case
|
|
57
|
+
case HIDE_EMPTY_ROW_ITEMS_ALL:
|
|
57
58
|
cleanedData = arrayCleanUndefined(data.map((value, index) => arrayContains(emptySeriesIndexes, index) ? undefined : value));
|
|
58
59
|
break;
|
|
59
|
-
case
|
|
60
|
+
case HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST:
|
|
60
61
|
cleanedData = data.slice(firstValueIndex);
|
|
61
62
|
break;
|
|
62
|
-
case
|
|
63
|
+
case HIDE_EMPTY_ROW_ITEMS_AFTER_LAST:
|
|
63
64
|
cleanedData = data.slice(0, lastValueIndex + 1);
|
|
64
65
|
break;
|
|
65
|
-
case
|
|
66
|
+
case HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST_AFTER_LAST:
|
|
66
67
|
cleanedData = data.slice(firstValueIndex, lastValueIndex + 1);
|
|
67
68
|
break;
|
|
68
69
|
default:
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import isString from 'd2-utilizr/lib/isString';
|
|
2
2
|
import objectClean from 'd2-utilizr/lib/objectClean';
|
|
3
|
+
import { HIDE_EMPTY_ROW_ITEMS_AFTER_LAST, HIDE_EMPTY_ROW_ITEMS_ALL, HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST, HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST_AFTER_LAST } from '../../../../modules/hideEmptyRowItems.js';
|
|
3
4
|
import { LEGEND_DISPLAY_STRATEGY_BY_DATA_ITEM, LEGEND_DISPLAY_STRATEGY_FIXED } from '../../../../modules/legends.js';
|
|
4
5
|
import { getOutlierHelper } from '../../../../modules/outliers/index.js';
|
|
5
6
|
import { isStacked, isLegendSetType, VIS_TYPE_SCATTER, VIS_TYPE_GAUGE, VIS_TYPE_LINE } from '../../../../modules/visTypes.js';
|
|
@@ -135,7 +136,7 @@ export default function (_ref) {
|
|
|
135
136
|
}
|
|
136
137
|
|
|
137
138
|
// hide empty categories
|
|
138
|
-
if (_layout.hideEmptyRowItems
|
|
139
|
+
if (_layout.hideEmptyRowItems && [HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST, HIDE_EMPTY_ROW_ITEMS_AFTER_LAST, HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST_AFTER_LAST, HIDE_EMPTY_ROW_ITEMS_ALL].includes(_layout.hideEmptyRowItems)) {
|
|
139
140
|
config = getTrimmedConfig(config, _layout);
|
|
140
141
|
}
|
|
141
142
|
|