@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.
Files changed (80) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/build/cjs/__demo__/OpenFileDialog.stories.js +39 -6
  3. package/build/cjs/components/FileMenu/FileMenu.js +6 -0
  4. package/build/cjs/components/OpenFileDialog/CustomSelectOption.js +18 -4
  5. package/build/cjs/components/OpenFileDialog/FileList.js +5 -5
  6. package/build/cjs/components/OpenFileDialog/OpenFileDialog.js +26 -21
  7. package/build/cjs/components/OpenFileDialog/VisTypeFilter.js +17 -16
  8. package/build/cjs/components/OpenFileDialog/utils.js +33 -74
  9. package/build/cjs/index.js +22 -4
  10. package/build/cjs/locales/ar/translations.json +2 -0
  11. package/build/cjs/locales/ar_EG/translations.json +2 -0
  12. package/build/cjs/locales/ar_IQ/translations.json +2 -0
  13. package/build/cjs/locales/ckb/translations.json +2 -0
  14. package/build/cjs/locales/cs/translations.json +2 -0
  15. package/build/cjs/locales/da/translations.json +2 -0
  16. package/build/cjs/locales/en/translations.json +3 -21
  17. package/build/cjs/locales/es/translations.json +2 -0
  18. package/build/cjs/locales/fr/translations.json +2 -0
  19. package/build/cjs/locales/id/translations.json +2 -0
  20. package/build/cjs/locales/km/translations.json +2 -0
  21. package/build/cjs/locales/lo/translations.json +2 -0
  22. package/build/cjs/locales/my/translations.json +2 -0
  23. package/build/cjs/locales/nb/translations.json +2 -0
  24. package/build/cjs/locales/nl/translations.json +2 -0
  25. package/build/cjs/locales/prs/translations.json +2 -0
  26. package/build/cjs/locales/ps/translations.json +2 -0
  27. package/build/cjs/locales/pt/translations.json +2 -0
  28. package/build/cjs/locales/pt_BR/translations.json +2 -0
  29. package/build/cjs/locales/ru/translations.json +2 -0
  30. package/build/cjs/locales/sv/translations.json +2 -0
  31. package/build/cjs/locales/tet/translations.json +2 -0
  32. package/build/cjs/locales/tg/translations.json +2 -0
  33. package/build/cjs/locales/uk/translations.json +2 -0
  34. package/build/cjs/locales/ur/translations.json +2 -0
  35. package/build/cjs/locales/uz/translations.json +2 -0
  36. package/build/cjs/locales/uz_Latn/translations.json +2 -0
  37. package/build/cjs/locales/vi/translations.json +2 -0
  38. package/build/cjs/locales/zh/translations.json +2 -0
  39. package/build/cjs/locales/zh_CN/translations.json +2 -0
  40. package/build/cjs/modules/visTypes.js +12 -21
  41. package/build/es/__demo__/OpenFileDialog.stories.js +38 -6
  42. package/build/es/components/FileMenu/FileMenu.js +6 -0
  43. package/build/es/components/OpenFileDialog/CustomSelectOption.js +17 -4
  44. package/build/es/components/OpenFileDialog/FileList.js +5 -5
  45. package/build/es/components/OpenFileDialog/OpenFileDialog.js +27 -23
  46. package/build/es/components/OpenFileDialog/VisTypeFilter.js +18 -14
  47. package/build/es/components/OpenFileDialog/utils.js +32 -71
  48. package/build/es/index.js +2 -2
  49. package/build/es/locales/ar/translations.json +2 -0
  50. package/build/es/locales/ar_EG/translations.json +2 -0
  51. package/build/es/locales/ar_IQ/translations.json +2 -0
  52. package/build/es/locales/ckb/translations.json +2 -0
  53. package/build/es/locales/cs/translations.json +2 -0
  54. package/build/es/locales/da/translations.json +2 -0
  55. package/build/es/locales/en/translations.json +3 -21
  56. package/build/es/locales/es/translations.json +2 -0
  57. package/build/es/locales/fr/translations.json +2 -0
  58. package/build/es/locales/id/translations.json +2 -0
  59. package/build/es/locales/km/translations.json +2 -0
  60. package/build/es/locales/lo/translations.json +2 -0
  61. package/build/es/locales/my/translations.json +2 -0
  62. package/build/es/locales/nb/translations.json +2 -0
  63. package/build/es/locales/nl/translations.json +2 -0
  64. package/build/es/locales/prs/translations.json +2 -0
  65. package/build/es/locales/ps/translations.json +2 -0
  66. package/build/es/locales/pt/translations.json +2 -0
  67. package/build/es/locales/pt_BR/translations.json +2 -0
  68. package/build/es/locales/ru/translations.json +2 -0
  69. package/build/es/locales/sv/translations.json +2 -0
  70. package/build/es/locales/tet/translations.json +2 -0
  71. package/build/es/locales/tg/translations.json +2 -0
  72. package/build/es/locales/uk/translations.json +2 -0
  73. package/build/es/locales/ur/translations.json +2 -0
  74. package/build/es/locales/uz/translations.json +2 -0
  75. package/build/es/locales/uz_Latn/translations.json +2 -0
  76. package/build/es/locales/vi/translations.json +2 -0
  77. package/build/es/locales/zh/translations.json +2 -0
  78. package/build/es/locales/zh_CN/translations.json +2 -0
  79. package/build/es/modules/visTypes.js +9 -19
  80. 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, AO_TYPE_VISUALIZATION, AO_TYPE_EVENT_REPORT, AO_TYPE_EVENT_VISUALIZATION, AOTypeMap } from './utils.js';
14
- import { VisTypeFilter, VIS_TYPE_ALL, VIS_TYPE_CHARTS } from './VisTypeFilter.js';
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: VIS_TYPE_ALL
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
- switch (filters.visType) {
86
- case VIS_TYPE_ALL:
87
- break;
88
+ if (filters.visType) {
89
+ switch (filters.visType) {
90
+ case VIS_TYPE_GROUP_ALL:
91
+ break;
88
92
 
89
- case VIS_TYPE_CHARTS:
90
- queryFilters.push('type:!eq:PIVOT_TABLE');
91
- break;
93
+ case VIS_TYPE_GROUP_CHARTS:
94
+ queryFilters.push('type:!eq:PIVOT_TABLE');
95
+ break;
92
96
 
93
- default:
94
- queryFilters.push("type:eq:".concat(filters.visType));
95
- break;
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 (type === AO_TYPE_VISUALIZATION) {
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
- })), type === AO_TYPE_VISUALIZATION && /*#__PURE__*/React.createElement("div", {
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 { Divider, SingleSelect, SingleSelectOption, colors } from '@dhis2/ui';
2
+ import { SingleSelect, colors } from '@dhis2/ui';
3
3
  import PropTypes from 'prop-types';
4
4
  import React from 'react';
5
- import { visTypeDisplayNames } from '../../modules/visTypes.js';
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
- }, /*#__PURE__*/React.createElement(SingleSelectOption, {
22
- label: i18n.t('All types'),
23
- value: VIS_TYPE_ALL
24
- }), /*#__PURE__*/React.createElement(SingleSelectOption, {
25
- label: i18n.t('All charts'),
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
- label: label,
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
- export const getTranslatedString = (type, key) => {
25
- let texts = {
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
- switch (type) {
36
- case 'visualization':
37
- {
38
- texts = {
39
- modalTitle: i18n.t('Open a visualization'),
40
- loadingText: i18n.t('Loading visualizations'),
41
- errorTitle: i18n.t("Couldn't load visualizations"),
42
- errorText: i18n.t('There was a problem loading visualizations. Try again or contact your system administrator.'),
43
- noDataText: i18n.t('No visualizations found. Click New visualization to get started.'),
44
- noFilteredDataText: i18n.t("No visualizations found. Try adjusting your search or filter options to find what you're looking for."),
45
- newButtonLabel: i18n.t('New visualization')
46
- };
47
- break;
48
- }
49
-
50
- case 'map':
51
- {
52
- texts = {
53
- modalTitle: i18n.t('Open a map'),
54
- loadingText: i18n.t('Loading maps'),
55
- errorTitle: i18n.t("Couldn't load maps"),
56
- errorText: i18n.t('There was a problem loading maps. Try again or contact your system administrator.'),
57
- noDataText: i18n.t('No maps found. Click New map to get started.'),
58
- noFilteredDataText: i18n.t("No maps found. Try adjusting your search or filter options to find what you're looking for."),
59
- newButtonLabel: i18n.t('New map')
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
- return texts[key];
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, visTypeDisplayNames, visTypeDescriptions, visTypeIcons, getDisplayNameByVisType, defaultVisType, isStacked, isMultiType, isYearOverYear, isDualAxisType, isSingleValue, isTwoCategoryChartType, isLegendSetType, isColumnBasedType, isVerticalType } from './modules/visTypes.js'; // Modules: layoutTypes
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": "",
@@ -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": "",
@@ -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": "",
@@ -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": "",
20
22
  "All types": "",
21
23
  "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",
@@ -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": "",
20
22
  "All types": "",
21
23
  "Totals only": "",
@@ -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
- "View data and indicators in a manipulatable table.": "View data and indicators in a manipulatable table.",
322
- "Compare sizes of related elements vertically. Recommend period as filter.": "Compare sizes of related elements vertically. Recommend period as filter.",
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",
@@ -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": "",
@@ -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": "",
@@ -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": "",
@@ -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": "",
20
22
  "All types": "",
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": "",
20
22
  "All types": "",
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": "",
20
22
  "All types": "",
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": "Tipo de dados",
20
22
  "All types": "Todos os 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": "",
20
22
  "All types": "",
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": "",
@@ -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": "",
20
22
  "All types": "",
21
23
  "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": "",
@@ -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": "",
20
22
  "All types": "",
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": "",
@@ -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": "",
20
22
  "All types": "",
21
23
  "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": "",