@dhis2/analytics 22.0.0 → 23.1.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 +26 -0
- package/build/cjs/__demo__/OpenFileDialog.stories.js +39 -6
- package/build/cjs/components/FileMenu/FileMenu.js +6 -0
- package/build/cjs/components/OpenFileDialog/CustomSelectOption.js +18 -4
- package/build/cjs/components/OpenFileDialog/FileList.js +5 -5
- package/build/cjs/components/OpenFileDialog/OpenFileDialog.js +26 -21
- package/build/cjs/components/OpenFileDialog/VisTypeFilter.js +17 -16
- package/build/cjs/components/OpenFileDialog/utils.js +33 -74
- package/build/cjs/index.js +22 -4
- package/build/cjs/locales/ar/translations.json +2 -0
- package/build/cjs/locales/ar_EG/translations.json +2 -0
- package/build/cjs/locales/ar_IQ/translations.json +2 -0
- package/build/cjs/locales/ckb/translations.json +2 -0
- package/build/cjs/locales/cs/translations.json +2 -0
- package/build/cjs/locales/da/translations.json +2 -0
- package/build/cjs/locales/en/translations.json +3 -21
- package/build/cjs/locales/es/translations.json +2 -0
- package/build/cjs/locales/fr/translations.json +2 -0
- package/build/cjs/locales/id/translations.json +2 -0
- package/build/cjs/locales/km/translations.json +2 -0
- package/build/cjs/locales/lo/translations.json +2 -0
- package/build/cjs/locales/my/translations.json +2 -0
- package/build/cjs/locales/nb/translations.json +2 -0
- package/build/cjs/locales/nl/translations.json +2 -0
- package/build/cjs/locales/prs/translations.json +2 -0
- package/build/cjs/locales/ps/translations.json +2 -0
- package/build/cjs/locales/pt/translations.json +2 -0
- package/build/cjs/locales/pt_BR/translations.json +2 -0
- package/build/cjs/locales/ru/translations.json +2 -0
- package/build/cjs/locales/sv/translations.json +2 -0
- package/build/cjs/locales/tet/translations.json +2 -0
- package/build/cjs/locales/tg/translations.json +2 -0
- package/build/cjs/locales/uk/translations.json +2 -0
- package/build/cjs/locales/ur/translations.json +2 -0
- package/build/cjs/locales/uz/translations.json +2 -0
- package/build/cjs/locales/uz_Latn/translations.json +2 -0
- package/build/cjs/locales/vi/translations.json +2 -0
- package/build/cjs/locales/zh/translations.json +2 -0
- package/build/cjs/locales/zh_CN/translations.json +2 -0
- package/build/cjs/modules/visTypes.js +12 -21
- package/build/es/__demo__/OpenFileDialog.stories.js +38 -6
- package/build/es/components/FileMenu/FileMenu.js +6 -0
- package/build/es/components/OpenFileDialog/CustomSelectOption.js +17 -4
- package/build/es/components/OpenFileDialog/FileList.js +5 -5
- package/build/es/components/OpenFileDialog/OpenFileDialog.js +27 -23
- package/build/es/components/OpenFileDialog/VisTypeFilter.js +18 -14
- package/build/es/components/OpenFileDialog/utils.js +32 -71
- package/build/es/index.js +2 -2
- package/build/es/locales/ar/translations.json +2 -0
- package/build/es/locales/ar_EG/translations.json +2 -0
- package/build/es/locales/ar_IQ/translations.json +2 -0
- package/build/es/locales/ckb/translations.json +2 -0
- package/build/es/locales/cs/translations.json +2 -0
- package/build/es/locales/da/translations.json +2 -0
- package/build/es/locales/en/translations.json +3 -21
- package/build/es/locales/es/translations.json +2 -0
- package/build/es/locales/fr/translations.json +2 -0
- package/build/es/locales/id/translations.json +2 -0
- package/build/es/locales/km/translations.json +2 -0
- package/build/es/locales/lo/translations.json +2 -0
- package/build/es/locales/my/translations.json +2 -0
- package/build/es/locales/nb/translations.json +2 -0
- package/build/es/locales/nl/translations.json +2 -0
- package/build/es/locales/prs/translations.json +2 -0
- package/build/es/locales/ps/translations.json +2 -0
- package/build/es/locales/pt/translations.json +2 -0
- package/build/es/locales/pt_BR/translations.json +2 -0
- package/build/es/locales/ru/translations.json +2 -0
- package/build/es/locales/sv/translations.json +2 -0
- package/build/es/locales/tet/translations.json +2 -0
- package/build/es/locales/tg/translations.json +2 -0
- package/build/es/locales/uk/translations.json +2 -0
- package/build/es/locales/ur/translations.json +2 -0
- package/build/es/locales/uz/translations.json +2 -0
- package/build/es/locales/uz_Latn/translations.json +2 -0
- package/build/es/locales/vi/translations.json +2 -0
- package/build/es/locales/zh/translations.json +2 -0
- package/build/es/locales/zh_CN/translations.json +2 -0
- package/build/es/modules/visTypes.js +9 -19
- package/package.json +1 -1
|
@@ -5,13 +5,14 @@ import { Box, Modal, ModalTitle, ModalContent, DataTable, DataTableHead, DataTab
|
|
|
5
5
|
import isEqual from 'lodash/isEqual';
|
|
6
6
|
import PropTypes from 'prop-types';
|
|
7
7
|
import React, { useEffect, useMemo, useState } from 'react';
|
|
8
|
+
import { VIS_TYPE_GROUP_ALL, VIS_TYPE_GROUP_CHARTS } from '../../modules/visTypes.js';
|
|
8
9
|
import { CreatedByFilter, CREATED_BY_ALL, CREATED_BY_ALL_BUT_CURRENT_USER, CREATED_BY_CURRENT_USER } from './CreatedByFilter.js';
|
|
9
10
|
import { FileList } from './FileList.js';
|
|
10
11
|
import { NameFilter } from './NameFilter.js';
|
|
11
12
|
import { styles } from './OpenFileDialog.styles.js';
|
|
12
13
|
import { PaginationControls } from './PaginationControls.js';
|
|
13
|
-
import { getTranslatedString,
|
|
14
|
-
import { VisTypeFilter
|
|
14
|
+
import { getTranslatedString, AOTypeMap } from './utils.js';
|
|
15
|
+
import { VisTypeFilter } from './VisTypeFilter.js';
|
|
15
16
|
|
|
16
17
|
const getQuery = type => ({
|
|
17
18
|
files: {
|
|
@@ -42,6 +43,8 @@ const getQuery = type => ({
|
|
|
42
43
|
export const OpenFileDialog = ({
|
|
43
44
|
type,
|
|
44
45
|
open,
|
|
46
|
+
filterVisTypes,
|
|
47
|
+
defaultFilterVisType,
|
|
45
48
|
onClose,
|
|
46
49
|
onFileSelect,
|
|
47
50
|
onNew,
|
|
@@ -51,7 +54,7 @@ export const OpenFileDialog = ({
|
|
|
51
54
|
const defaultFilters = {
|
|
52
55
|
searchTerm: '',
|
|
53
56
|
createdBy: CREATED_BY_ALL,
|
|
54
|
-
visType:
|
|
57
|
+
visType: defaultFilterVisType
|
|
55
58
|
};
|
|
56
59
|
const [{
|
|
57
60
|
sortField,
|
|
@@ -82,26 +85,23 @@ export const OpenFileDialog = ({
|
|
|
82
85
|
break;
|
|
83
86
|
}
|
|
84
87
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
+
if (filters.visType) {
|
|
89
|
+
switch (filters.visType) {
|
|
90
|
+
case VIS_TYPE_GROUP_ALL:
|
|
91
|
+
break;
|
|
88
92
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
93
|
+
case VIS_TYPE_GROUP_CHARTS:
|
|
94
|
+
queryFilters.push('type:!eq:PIVOT_TABLE');
|
|
95
|
+
break;
|
|
92
96
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
97
|
+
default:
|
|
98
|
+
queryFilters.push("type:eq:".concat(filters.visType));
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
96
101
|
}
|
|
97
102
|
|
|
98
103
|
if (filters.searchTerm) {
|
|
99
104
|
queryFilters.push("name:ilike:".concat(filters.searchTerm));
|
|
100
|
-
} // for ER 2.38 only show line list ER types
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
if (type === AO_TYPE_EVENT_REPORT || type === AO_TYPE_EVENT_VISUALIZATION) {
|
|
104
|
-
queryFilters.push('dataType:eq:EVENTS');
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
return queryFilters;
|
|
@@ -127,7 +127,8 @@ export const OpenFileDialog = ({
|
|
|
127
127
|
refetch({
|
|
128
128
|
page,
|
|
129
129
|
sortField,
|
|
130
|
-
sortDirection
|
|
130
|
+
sortDirection,
|
|
131
|
+
filters: formatFilters()
|
|
131
132
|
});
|
|
132
133
|
}
|
|
133
134
|
}, [open, page, sortField, sortDirection]);
|
|
@@ -157,7 +158,7 @@ export const OpenFileDialog = ({
|
|
|
157
158
|
width: '110px'
|
|
158
159
|
}];
|
|
159
160
|
|
|
160
|
-
if (
|
|
161
|
+
if (filterVisTypes !== null && filterVisTypes !== void 0 && filterVisTypes.length) {
|
|
161
162
|
headers.splice(1, 0, {
|
|
162
163
|
field: 'type',
|
|
163
164
|
label: i18n.t('Type'),
|
|
@@ -190,9 +191,10 @@ export const OpenFileDialog = ({
|
|
|
190
191
|
searchTerm: value
|
|
191
192
|
}), 200));
|
|
192
193
|
}
|
|
193
|
-
})),
|
|
194
|
+
})), (filterVisTypes === null || filterVisTypes === void 0 ? void 0 : filterVisTypes.length) && /*#__PURE__*/React.createElement("div", {
|
|
194
195
|
className: "jsx-".concat(styles.__hash) + " " + "type-field-container"
|
|
195
196
|
}, /*#__PURE__*/React.createElement(VisTypeFilter, {
|
|
197
|
+
visTypes: filterVisTypes,
|
|
196
198
|
selected: filters.visType,
|
|
197
199
|
onChange: value => setFilters({ ...filters,
|
|
198
200
|
visType: value
|
|
@@ -261,9 +263,9 @@ export const OpenFileDialog = ({
|
|
|
261
263
|
onClose();
|
|
262
264
|
}
|
|
263
265
|
}, getTranslatedString(type, 'newButtonLabel'))))))))), (data === null || data === void 0 ? void 0 : data.files[AOTypeMap[type].apiEndpoint].length) > 0 && /*#__PURE__*/React.createElement(FileList, {
|
|
264
|
-
type: type,
|
|
265
266
|
data: data.files[AOTypeMap[type].apiEndpoint],
|
|
266
|
-
onSelect: onFileSelect
|
|
267
|
+
onSelect: onFileSelect,
|
|
268
|
+
showVisTypeColumn: Boolean(filterVisTypes === null || filterVisTypes === void 0 ? void 0 : filterVisTypes.length)
|
|
267
269
|
}))), (data === null || data === void 0 ? void 0 : data.files[AOTypeMap[type].apiEndpoint].length) > 0 && /*#__PURE__*/React.createElement(DataTableToolbar, {
|
|
268
270
|
position: "bottom"
|
|
269
271
|
}, /*#__PURE__*/React.createElement("div", {
|
|
@@ -282,6 +284,8 @@ OpenFileDialog.propTypes = {
|
|
|
282
284
|
type: PropTypes.oneOf(Object.keys(AOTypeMap)).isRequired,
|
|
283
285
|
onClose: PropTypes.func.isRequired,
|
|
284
286
|
onFileSelect: PropTypes.func.isRequired,
|
|
285
|
-
onNew: PropTypes.func.isRequired
|
|
287
|
+
onNew: PropTypes.func.isRequired,
|
|
288
|
+
defaultFilterVisType: PropTypes.string,
|
|
289
|
+
filterVisTypes: PropTypes.array
|
|
286
290
|
};
|
|
287
291
|
export default OpenFileDialog;
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import i18n from '@dhis2/d2-i18n';
|
|
2
|
-
import {
|
|
2
|
+
import { SingleSelect, colors } from '@dhis2/ui';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import React from 'react';
|
|
5
|
-
import {
|
|
5
|
+
import { getDisplayNameByVisType, visTypeIcons } from '../../modules/visTypes.js';
|
|
6
6
|
import { VisTypeIcon } from '../VisTypeIcon.js';
|
|
7
7
|
import { CustomSelectOption } from './CustomSelectOption.js';
|
|
8
|
-
export const VIS_TYPE_ALL = 'all';
|
|
9
|
-
export const VIS_TYPE_CHARTS = 'charts';
|
|
10
8
|
export const VisTypeFilter = ({
|
|
9
|
+
visTypes,
|
|
11
10
|
selected,
|
|
12
11
|
onChange
|
|
13
12
|
}) => /*#__PURE__*/React.createElement(SingleSelect, {
|
|
@@ -18,24 +17,29 @@ export const VisTypeFilter = ({
|
|
|
18
17
|
prefix: i18n.t('Type'),
|
|
19
18
|
dense: true,
|
|
20
19
|
maxHeight: "400px"
|
|
21
|
-
},
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
value: VIS_TYPE_CHARTS
|
|
27
|
-
}), /*#__PURE__*/React.createElement(Divider, null), Object.entries(visTypeDisplayNames).map(([type, label]) => /*#__PURE__*/React.createElement(CustomSelectOption, {
|
|
20
|
+
}, visTypes === null || visTypes === void 0 ? void 0 : visTypes.map(({
|
|
21
|
+
type,
|
|
22
|
+
disabled,
|
|
23
|
+
insertDivider
|
|
24
|
+
}) => /*#__PURE__*/React.createElement(CustomSelectOption, {
|
|
28
25
|
key: type,
|
|
29
|
-
|
|
26
|
+
disabled: disabled,
|
|
27
|
+
label: getDisplayNameByVisType(type),
|
|
28
|
+
insertDivider: insertDivider,
|
|
30
29
|
value: type,
|
|
31
|
-
icon: /*#__PURE__*/React.createElement(VisTypeIcon, {
|
|
30
|
+
icon: visTypeIcons[type] ? /*#__PURE__*/React.createElement(VisTypeIcon, {
|
|
32
31
|
type: type,
|
|
33
32
|
useSmall: true,
|
|
34
33
|
color: colors.grey600
|
|
35
|
-
})
|
|
34
|
+
}) : undefined
|
|
36
35
|
})));
|
|
37
36
|
VisTypeFilter.propTypes = {
|
|
38
37
|
selected: PropTypes.string,
|
|
38
|
+
visTypes: PropTypes.arrayOf(PropTypes.shape({
|
|
39
|
+
disabled: PropTypes.bool,
|
|
40
|
+
insertDivider: PropTypes.bool,
|
|
41
|
+
type: PropTypes.string
|
|
42
|
+
})),
|
|
39
43
|
onChange: PropTypes.func
|
|
40
44
|
};
|
|
41
45
|
export default VisTypeFilter;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import i18n from '@dhis2/d2-i18n';
|
|
2
2
|
export const AO_TYPE_VISUALIZATION = 'visualization';
|
|
3
3
|
export const AO_TYPE_MAP = 'map';
|
|
4
|
-
export const AO_TYPE_EVENT_CHART = 'eventChart';
|
|
5
|
-
export const AO_TYPE_EVENT_REPORT = 'eventReport';
|
|
6
4
|
export const AO_TYPE_EVENT_VISUALIZATION = 'eventVisualization';
|
|
7
5
|
export const AOTypeMap = {
|
|
8
6
|
[AO_TYPE_VISUALIZATION]: {
|
|
@@ -11,18 +9,13 @@ export const AOTypeMap = {
|
|
|
11
9
|
[AO_TYPE_MAP]: {
|
|
12
10
|
apiEndpoint: 'maps'
|
|
13
11
|
},
|
|
14
|
-
[AO_TYPE_EVENT_CHART]: {
|
|
15
|
-
apiEndpoint: 'eventCharts'
|
|
16
|
-
},
|
|
17
|
-
[AO_TYPE_EVENT_REPORT]: {
|
|
18
|
-
apiEndpoint: 'eventReports'
|
|
19
|
-
},
|
|
20
12
|
[AO_TYPE_EVENT_VISUALIZATION]: {
|
|
21
13
|
apiEndpoint: 'eventVisualizations'
|
|
22
14
|
}
|
|
23
15
|
};
|
|
24
|
-
|
|
25
|
-
|
|
16
|
+
const NO_TYPE = 'NO_TYPE';
|
|
17
|
+
const texts = {
|
|
18
|
+
[NO_TYPE]: {
|
|
26
19
|
modalTitle: i18n.t('Open'),
|
|
27
20
|
loadingText: i18n.t('Loading'),
|
|
28
21
|
errorTitle: i18n.t("Couldn't load items"),
|
|
@@ -30,65 +23,33 @@ export const getTranslatedString = (type, key) => {
|
|
|
30
23
|
noDataText: i18n.t('No items found. Create a new to get started.'),
|
|
31
24
|
noFilteredDataText: i18n.t("No items found. Try adjusting your search or filter options to find what you're looking for."),
|
|
32
25
|
newButtonLabel: i18n.t('Create new')
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
};
|
|
61
|
-
break;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
case 'eventReport':
|
|
65
|
-
{
|
|
66
|
-
texts = {
|
|
67
|
-
modalTitle: i18n.t('Open an event report'),
|
|
68
|
-
loadingText: i18n.t('Loading event reports'),
|
|
69
|
-
errorTitle: i18n.t("Couldn't load event reports"),
|
|
70
|
-
errorText: i18n.t('There was a problem loading event reports. Try again or contact your system administrator.'),
|
|
71
|
-
noDataText: i18n.t('No event reports found. Click New event report to get started.'),
|
|
72
|
-
noFilteredDataText: i18n.t("No event reports found. Try adjusting your search or filter options to find what you're looking for."),
|
|
73
|
-
newButtonLabel: i18n.t('New event report')
|
|
74
|
-
};
|
|
75
|
-
break;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
case 'eventVisualization':
|
|
79
|
-
{
|
|
80
|
-
texts = {
|
|
81
|
-
modalTitle: i18n.t('Open an event visualization'),
|
|
82
|
-
loadingText: i18n.t('Loading event visualizations'),
|
|
83
|
-
errorTitle: i18n.t("Couldn't load event visualizations"),
|
|
84
|
-
errorText: i18n.t('There was a problem loading event visualizations. Try again or contact your system administrator.'),
|
|
85
|
-
noDataText: i18n.t('No event visualizations found. Click New event visualization to get started.'),
|
|
86
|
-
noFilteredDataText: i18n.t("No event visualizations found. Try adjusting your search or filter options to find what you're looking for."),
|
|
87
|
-
newButtonLabel: i18n.t('New event visualization')
|
|
88
|
-
};
|
|
89
|
-
break;
|
|
90
|
-
}
|
|
26
|
+
},
|
|
27
|
+
[AO_TYPE_VISUALIZATION]: {
|
|
28
|
+
modalTitle: i18n.t('Open a visualization'),
|
|
29
|
+
loadingText: i18n.t('Loading visualizations'),
|
|
30
|
+
errorTitle: i18n.t("Couldn't load visualizations"),
|
|
31
|
+
errorText: i18n.t('There was a problem loading visualizations. Try again or contact your system administrator.'),
|
|
32
|
+
noDataText: i18n.t('No visualizations found. Click New visualization to get started.'),
|
|
33
|
+
noFilteredDataText: i18n.t("No visualizations found. Try adjusting your search or filter options to find what you're looking for."),
|
|
34
|
+
newButtonLabel: i18n.t('New visualization')
|
|
35
|
+
},
|
|
36
|
+
[AO_TYPE_MAP]: {
|
|
37
|
+
modalTitle: i18n.t('Open a map'),
|
|
38
|
+
loadingText: i18n.t('Loading maps'),
|
|
39
|
+
errorTitle: i18n.t("Couldn't load maps"),
|
|
40
|
+
errorText: i18n.t('There was a problem loading maps. Try again or contact your system administrator.'),
|
|
41
|
+
noDataText: i18n.t('No maps found. Click New map to get started.'),
|
|
42
|
+
noFilteredDataText: i18n.t("No maps found. Try adjusting your search or filter options to find what you're looking for."),
|
|
43
|
+
newButtonLabel: i18n.t('New map')
|
|
44
|
+
},
|
|
45
|
+
[AO_TYPE_EVENT_VISUALIZATION]: {
|
|
46
|
+
modalTitle: i18n.t('Open an event visualization'),
|
|
47
|
+
loadingText: i18n.t('Loading event visualizations'),
|
|
48
|
+
errorTitle: i18n.t("Couldn't load event visualizations"),
|
|
49
|
+
errorText: i18n.t('There was a problem loading event visualizations. Try again or contact your system administrator.'),
|
|
50
|
+
noDataText: i18n.t('No event visualizations found. Click New event visualization to get started.'),
|
|
51
|
+
noFilteredDataText: i18n.t("No event visualizations found. Try adjusting your search or filter options to find what you're looking for."),
|
|
52
|
+
newButtonLabel: i18n.t('New event visualization')
|
|
91
53
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
};
|
|
54
|
+
};
|
|
55
|
+
export const getTranslatedString = (type, key) => (texts[type] || texts[NO_TYPE])[key];
|
package/build/es/index.js
CHANGED
|
@@ -17,7 +17,7 @@ export { default as AboutAOUnit } from './components/AboutAOUnit/AboutAOUnit.js'
|
|
|
17
17
|
export { CachedDataQueryProvider, useCachedDataQuery } from './components/CachedDataQueryProvider.js'; // Api
|
|
18
18
|
|
|
19
19
|
export { default as Analytics } from './api/analytics/Analytics.js';
|
|
20
|
-
export { apiFetchDimensions, apiFetchRecommendedIds } from './api/dimensions.js';
|
|
20
|
+
export { apiFetchDimensions, apiFetchRecommendedIds, apiFetchItemsByDimension } from './api/dimensions.js';
|
|
21
21
|
export { apiFetchOrganisationUnitLevels, apiFetchOrganisationUnitRoots, apiFetchOrganisationUnit } from './api/organisationUnits.js'; // Modules: axis
|
|
22
22
|
|
|
23
23
|
export { getAxisName, getAxisNameByLayoutType, hasCustomAxes } from './modules/axis.js'; // Modules: predefined dimensions
|
|
@@ -69,7 +69,7 @@ export { itemIsValid } from './modules/layout/itemIsValid.js'; // Modules: visTy
|
|
|
69
69
|
|
|
70
70
|
export { getLayoutTypeByVisType } from './modules/visTypeToLayoutType.js'; // Modules: visTypes
|
|
71
71
|
|
|
72
|
-
export { VIS_TYPE_COLUMN, VIS_TYPE_STACKED_COLUMN, VIS_TYPE_BAR, VIS_TYPE_STACKED_BAR, VIS_TYPE_LINE, VIS_TYPE_AREA, VIS_TYPE_STACKED_AREA, VIS_TYPE_PIE, VIS_TYPE_RADAR, VIS_TYPE_GAUGE, VIS_TYPE_BUBBLE, VIS_TYPE_YEAR_OVER_YEAR_LINE, VIS_TYPE_YEAR_OVER_YEAR_COLUMN, VIS_TYPE_SINGLE_VALUE, VIS_TYPE_PIVOT_TABLE, VIS_TYPE_SCATTER,
|
|
72
|
+
export { VIS_TYPE_GROUP_ALL, VIS_TYPE_GROUP_CHARTS, VIS_TYPE_COLUMN, VIS_TYPE_STACKED_COLUMN, VIS_TYPE_BAR, VIS_TYPE_STACKED_BAR, VIS_TYPE_LINE, VIS_TYPE_AREA, VIS_TYPE_STACKED_AREA, VIS_TYPE_PIE, VIS_TYPE_RADAR, VIS_TYPE_GAUGE, VIS_TYPE_BUBBLE, VIS_TYPE_YEAR_OVER_YEAR_LINE, VIS_TYPE_YEAR_OVER_YEAR_COLUMN, VIS_TYPE_SINGLE_VALUE, VIS_TYPE_PIVOT_TABLE, VIS_TYPE_SCATTER, VIS_TYPE_LINE_LIST, visTypeDisplayNames, visTypeIcons, getDisplayNameByVisType, defaultVisType, isStacked, isMultiType, isYearOverYear, isDualAxisType, isSingleValue, isTwoCategoryChartType, isLegendSetType, isColumnBasedType, isVerticalType } from './modules/visTypes.js'; // Modules: layoutTypes
|
|
73
73
|
|
|
74
74
|
export { LAYOUT_TYPE_DEFAULT, LAYOUT_TYPE_PIE, LAYOUT_TYPE_SINGLE_VALUE, LAYOUT_TYPE_YEAR_OVER_YEAR, LAYOUT_TYPE_PIVOT_TABLE, LAYOUT_TYPE_SCATTER } from './modules/layoutTypes.js'; // Modules: layoutUiRules
|
|
75
75
|
|
|
@@ -20,6 +20,8 @@
|
|
|
20
20
|
"Unsubscribe": "",
|
|
21
21
|
"Subscribe to get updates about new interpretations.": "",
|
|
22
22
|
"Subscribe": "",
|
|
23
|
+
"This app could not retrieve required data.": "",
|
|
24
|
+
"Network error": "",
|
|
23
25
|
"Data Type": "نوع البيانات",
|
|
24
26
|
"All types": "جميع الأنواع",
|
|
25
27
|
"Totals only": "",
|
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
"Unsubscribe": "Odhlásit odběr",
|
|
19
19
|
"Subscribe to get updates about new interpretations.": "Přihlaste se k odběru novinek o nových interpretacích.",
|
|
20
20
|
"Subscribe": "Odebírat",
|
|
21
|
+
"This app could not retrieve required data.": "",
|
|
22
|
+
"Network error": "",
|
|
21
23
|
"Data Type": "Typ dat",
|
|
22
24
|
"All types": "Všechny typy",
|
|
23
25
|
"Totals only": "Pouze součty",
|
|
@@ -83,13 +83,13 @@
|
|
|
83
83
|
"Anyone": "Anyone",
|
|
84
84
|
"Only you": "Only you",
|
|
85
85
|
"Others": "Others",
|
|
86
|
+
"Not supported by this app yet": "Not supported by this app yet",
|
|
86
87
|
"Filter by name": "Filter by name",
|
|
87
88
|
"Created": "Created",
|
|
88
89
|
"Last updated": "Last updated",
|
|
89
90
|
"Type": "Type",
|
|
90
91
|
"Clear filters": "Clear filters",
|
|
91
92
|
"{{firstItemIndex}}-{{lastItemIndex}} of {{totalNumberOfItems}}": "{{firstItemIndex}}-{{lastItemIndex}} of {{totalNumberOfItems}}",
|
|
92
|
-
"All charts": "All charts",
|
|
93
93
|
"Open": "Open",
|
|
94
94
|
"Couldn't load items": "Couldn't load items",
|
|
95
95
|
"There was a problem loading items. Try again or contact your system administrator.": "There was a problem loading items. Try again or contact your system administrator.",
|
|
@@ -110,13 +110,6 @@
|
|
|
110
110
|
"No maps found. Click New map to get started.": "No maps found. Click New map to get started.",
|
|
111
111
|
"No maps found. Try adjusting your search or filter options to find what you're looking for.": "No maps found. Try adjusting your search or filter options to find what you're looking for.",
|
|
112
112
|
"New map": "New map",
|
|
113
|
-
"Open an event report": "Open an event report",
|
|
114
|
-
"Loading event reports": "Loading event reports",
|
|
115
|
-
"Couldn't load event reports": "Couldn't load event reports",
|
|
116
|
-
"There was a problem loading event reports. Try again or contact your system administrator.": "There was a problem loading event reports. Try again or contact your system administrator.",
|
|
117
|
-
"No event reports found. Click New event report to get started.": "No event reports found. Click New event report to get started.",
|
|
118
|
-
"No event reports found. Try adjusting your search or filter options to find what you're looking for.": "No event reports found. Try adjusting your search or filter options to find what you're looking for.",
|
|
119
|
-
"New event report": "New event report",
|
|
120
113
|
"Open an event visualization": "Open an event visualization",
|
|
121
114
|
"Loading event visualizations": "Loading event visualizations",
|
|
122
115
|
"Couldn't load event visualizations": "Couldn't load event visualizations",
|
|
@@ -318,19 +311,8 @@
|
|
|
318
311
|
"Year over year (column)": "Year over year (column)",
|
|
319
312
|
"Single value": "Single value",
|
|
320
313
|
"Scatter": "Scatter",
|
|
321
|
-
"
|
|
322
|
-
"
|
|
323
|
-
"Compare parts of a whole against related elements vertically. Recommend data or org. unit as series.": "Compare parts of a whole against related elements vertically. Recommend data or org. unit as series.",
|
|
324
|
-
"Compare sizes of related elements horizontally. Recommend period as filter.": "Compare sizes of related elements horizontally. Recommend period as filter.",
|
|
325
|
-
"Compare parts of a whole against related elements horizontally. Recommend data or org. unit as series.": "Compare parts of a whole against related elements horizontally. Recommend data or org. unit as series.",
|
|
326
|
-
"Track or compare changes over time. Recommend period as category.": "Track or compare changes over time. Recommend period as category.",
|
|
327
|
-
"Track or compare parts of a whole over time. Recommend data as series and period as category.": "Track or compare parts of a whole over time. Recommend data as series and period as category.",
|
|
328
|
-
"Compare parts of a whole at a single point in time. Recommend period as filter.": "Compare parts of a whole at a single point in time. Recommend period as filter.",
|
|
329
|
-
"Compare several items against multiple variables.": "Compare several items against multiple variables.",
|
|
330
|
-
"Compare a percentage indicator against a 100% scale. Recommend period as filter.": "Compare a percentage indicator against a 100% scale. Recommend period as filter.",
|
|
331
|
-
"Compare changes over time between multiple time periods.": "Compare changes over time between multiple time periods.",
|
|
332
|
-
"Display a single value. Recommend relative period to show latest data.": "Display a single value. Recommend relative period to show latest data.",
|
|
333
|
-
"View the relationship between two data items at a place or time. Recommended for finding outliers.": "View the relationship between two data items at a place or time. Recommended for finding outliers.",
|
|
314
|
+
"Line list": "Line list",
|
|
315
|
+
"All charts": "All charts",
|
|
334
316
|
"{{seriesName}} (trend)": "{{seriesName}} (trend)",
|
|
335
317
|
"Trend": "Trend",
|
|
336
318
|
"No legend for this series": "No legend for this series",
|
|
@@ -16,6 +16,8 @@
|
|
|
16
16
|
"Unsubscribe": "",
|
|
17
17
|
"Subscribe to get updates about new interpretations.": "",
|
|
18
18
|
"Subscribe": "",
|
|
19
|
+
"This app could not retrieve required data.": "",
|
|
20
|
+
"Network error": "",
|
|
19
21
|
"Data Type": "Tipo de datos",
|
|
20
22
|
"All types": "Todos los tipos",
|
|
21
23
|
"Totals only": "",
|
|
@@ -16,6 +16,8 @@
|
|
|
16
16
|
"Unsubscribe": "",
|
|
17
17
|
"Subscribe to get updates about new interpretations.": "",
|
|
18
18
|
"Subscribe": "",
|
|
19
|
+
"This app could not retrieve required data.": "",
|
|
20
|
+
"Network error": "",
|
|
19
21
|
"Data Type": "Type de données",
|
|
20
22
|
"All types": "Tous les types",
|
|
21
23
|
"Totals only": "Totaux uniquement",
|
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
"Unsubscribe": "",
|
|
16
16
|
"Subscribe to get updates about new interpretations.": "",
|
|
17
17
|
"Subscribe": "",
|
|
18
|
+
"This app could not retrieve required data.": "",
|
|
19
|
+
"Network error": "",
|
|
18
20
|
"Data Type": "Tipe Data",
|
|
19
21
|
"All types": "Semua jenis",
|
|
20
22
|
"Totals only": "Total saja",
|
|
@@ -16,6 +16,8 @@
|
|
|
16
16
|
"Unsubscribe": "Avslutt abonnementet",
|
|
17
17
|
"Subscribe to get updates about new interpretations.": "Abonner for å få oppdateringer om nye tolkninger.",
|
|
18
18
|
"Subscribe": "Abonner",
|
|
19
|
+
"This app could not retrieve required data.": "",
|
|
20
|
+
"Network error": "",
|
|
19
21
|
"Data Type": "Datatype",
|
|
20
22
|
"All types": "Alle typer",
|
|
21
23
|
"Totals only": "Kun totaler",
|
|
@@ -16,6 +16,8 @@
|
|
|
16
16
|
"Unsubscribe": "",
|
|
17
17
|
"Subscribe to get updates about new interpretations.": "",
|
|
18
18
|
"Subscribe": "",
|
|
19
|
+
"This app could not retrieve required data.": "",
|
|
20
|
+
"Network error": "",
|
|
19
21
|
"Data Type": "Tipo de dados",
|
|
20
22
|
"All types": "Todos os tipos",
|
|
21
23
|
"Totals only": "",
|
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
"Unsubscribe": "",
|
|
19
19
|
"Subscribe to get updates about new interpretations.": "",
|
|
20
20
|
"Subscribe": "",
|
|
21
|
+
"This app could not retrieve required data.": "",
|
|
22
|
+
"Network error": "",
|
|
21
23
|
"Data Type": "Тип данных",
|
|
22
24
|
"All types": "Все типы",
|
|
23
25
|
"Totals only": "",
|
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
"Unsubscribe": "",
|
|
16
16
|
"Subscribe to get updates about new interpretations.": "",
|
|
17
17
|
"Subscribe": "",
|
|
18
|
+
"This app could not retrieve required data.": "",
|
|
19
|
+
"Network error": "",
|
|
18
20
|
"Data Type": "Маълумот тури",
|
|
19
21
|
"All types": "Барча турлари",
|
|
20
22
|
"Totals only": "",
|