@dhis2/analytics 26.4.1 → 26.6.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/build/cjs/__fixtures__/fixtures.js +1 -0
- package/build/cjs/__fixtures__/json/api/analytics/outlierDetection.json +213 -0
- package/build/cjs/api/analytics/Analytics.js +7 -0
- package/build/cjs/api/analytics/AnalyticsAggregate.js +27 -1
- package/build/cjs/api/analytics/AnalyticsBase.js +32 -13
- package/build/cjs/api/analytics/AnalyticsRequest.js +33 -10
- package/build/cjs/api/analytics/AnalyticsRequestBase.js +12 -6
- package/build/cjs/api/analytics/AnalyticsRequestPropertiesMixin.js +19 -0
- package/build/cjs/api/analytics/AnalyticsResponse.js +42 -39
- package/build/cjs/api/analytics/AnalyticsTrackedEntities.js +31 -0
- package/build/cjs/api/analytics/__tests__/Analytics.spec.js +5 -0
- package/build/cjs/api/analytics/__tests__/AnalyticsAggregate.spec.js +29 -0
- package/build/cjs/api/analytics/__tests__/AnalyticsBase.spec.js +36 -2
- package/build/cjs/api/analytics/utils.js +21 -2
- package/build/cjs/components/DataDimension/DataDimension.js +31 -7
- package/build/cjs/components/DataDimension/DataTypeSelector.js +29 -8
- package/build/cjs/components/DataDimension/GroupSelector.js +7 -7
- package/build/cjs/components/DataDimension/ItemSelector.js +79 -61
- package/build/cjs/components/PeriodDimension/PeriodDimension.js +5 -2
- package/build/cjs/components/PeriodDimension/PeriodTransfer.js +64 -31
- package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap +1 -1
- package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/PeriodSelector.spec.js.snap +1 -12
- package/build/cjs/components/VisTypeIcon.js +6 -1
- package/build/cjs/index.js +43 -1
- package/build/cjs/locales/en/translations.json +5 -1
- package/build/cjs/modules/__tests__/getAdaptedUiLayoutByType.spec.js +15 -0
- package/build/cjs/modules/axis.js +4 -0
- package/build/cjs/modules/getAdaptedUiLayoutByType.js +9 -0
- package/build/cjs/modules/layout/axisGetDimensionIds.js +1 -1
- package/build/cjs/modules/layout/dimension.js +9 -2
- package/build/cjs/modules/layout/dimensionCreate.js +3 -0
- package/build/cjs/modules/layout/dimensionGetId.js +9 -3
- package/build/cjs/modules/layout/layoutFilterDimensions.js +1 -1
- package/build/cjs/modules/layout/layoutGetAxisIdDimensionIdsObject.js +1 -1
- package/build/cjs/modules/layout/layoutGetDimensionIdItemIdsObject.js +1 -1
- package/build/cjs/modules/layout/layoutHasDynamicDimension.js +1 -1
- package/build/cjs/modules/layoutTypes.js +4 -2
- package/build/cjs/modules/layoutUiRules/__tests__/rules.spec.js +13 -1
- package/build/cjs/modules/layoutUiRules/index.js +12 -0
- package/build/cjs/modules/layoutUiRules/rules.js +22 -2
- package/build/cjs/modules/layoutUiRules/rulesHelper.js +4 -2
- package/build/cjs/modules/layoutUiRules/rulesUtils.js +7 -2
- package/build/cjs/modules/visTypeToLayoutType.js +2 -1
- package/build/cjs/modules/visTypes.js +9 -3
- package/build/es/__fixtures__/fixtures.js +1 -0
- package/build/es/__fixtures__/json/api/analytics/outlierDetection.json +213 -0
- package/build/es/api/analytics/Analytics.js +7 -0
- package/build/es/api/analytics/AnalyticsAggregate.js +27 -1
- package/build/es/api/analytics/AnalyticsBase.js +31 -13
- package/build/es/api/analytics/AnalyticsRequest.js +33 -10
- package/build/es/api/analytics/AnalyticsRequestBase.js +12 -6
- package/build/es/api/analytics/AnalyticsRequestPropertiesMixin.js +19 -0
- package/build/es/api/analytics/AnalyticsResponse.js +42 -39
- package/build/es/api/analytics/AnalyticsTrackedEntities.js +24 -0
- package/build/es/api/analytics/__tests__/Analytics.spec.js +5 -0
- package/build/es/api/analytics/__tests__/AnalyticsAggregate.spec.js +29 -0
- package/build/es/api/analytics/__tests__/AnalyticsBase.spec.js +34 -1
- package/build/es/api/analytics/utils.js +18 -1
- package/build/es/components/DataDimension/DataDimension.js +27 -6
- package/build/es/components/DataDimension/DataTypeSelector.js +30 -9
- package/build/es/components/DataDimension/GroupSelector.js +7 -7
- package/build/es/components/DataDimension/ItemSelector.js +80 -62
- package/build/es/components/PeriodDimension/PeriodDimension.js +5 -2
- package/build/es/components/PeriodDimension/PeriodTransfer.js +65 -32
- package/build/es/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap +1 -1
- package/build/es/components/PeriodDimension/__tests__/__snapshots__/PeriodSelector.spec.js.snap +1 -12
- package/build/es/components/VisTypeIcon.js +8 -3
- package/build/es/index.js +4 -4
- package/build/es/locales/en/translations.json +5 -1
- package/build/es/modules/__tests__/getAdaptedUiLayoutByType.spec.js +16 -1
- package/build/es/modules/axis.js +5 -1
- package/build/es/modules/getAdaptedUiLayoutByType.js +10 -1
- package/build/es/modules/layout/axisGetDimensionIds.js +1 -1
- package/build/es/modules/layout/dimension.js +7 -1
- package/build/es/modules/layout/dimensionCreate.js +4 -1
- package/build/es/modules/layout/dimensionGetId.js +10 -4
- package/build/es/modules/layout/layoutFilterDimensions.js +1 -1
- package/build/es/modules/layout/layoutGetAxisIdDimensionIdsObject.js +1 -1
- package/build/es/modules/layout/layoutGetDimensionIdItemIdsObject.js +1 -1
- package/build/es/modules/layout/layoutHasDynamicDimension.js +1 -1
- package/build/es/modules/layoutTypes.js +2 -1
- package/build/es/modules/layoutUiRules/__tests__/rules.spec.js +14 -2
- package/build/es/modules/layoutUiRules/index.js +2 -2
- package/build/es/modules/layoutUiRules/rules.js +22 -3
- package/build/es/modules/layoutUiRules/rulesHelper.js +3 -2
- package/build/es/modules/layoutUiRules/rulesUtils.js +6 -2
- package/build/es/modules/visTypeToLayoutType.js +4 -3
- package/build/es/modules/visTypes.js +7 -3
- package/package.json +6 -3
package/build/cjs/index.js
CHANGED
|
@@ -140,6 +140,7 @@ var _exportNames = {
|
|
|
140
140
|
VIS_TYPE_PIVOT_TABLE: true,
|
|
141
141
|
VIS_TYPE_SCATTER: true,
|
|
142
142
|
VIS_TYPE_LINE_LIST: true,
|
|
143
|
+
VIS_TYPE_OUTLIER_TABLE: true,
|
|
143
144
|
visTypeDisplayNames: true,
|
|
144
145
|
visTypeIcons: true,
|
|
145
146
|
getDisplayNameByVisType: true,
|
|
@@ -149,6 +150,7 @@ var _exportNames = {
|
|
|
149
150
|
isYearOverYear: true,
|
|
150
151
|
isDualAxisType: true,
|
|
151
152
|
isSingleValue: true,
|
|
153
|
+
isOutlierTable: true,
|
|
152
154
|
isTwoCategoryChartType: true,
|
|
153
155
|
isLegendSetType: true,
|
|
154
156
|
isColumnBasedType: true,
|
|
@@ -160,12 +162,15 @@ var _exportNames = {
|
|
|
160
162
|
LAYOUT_TYPE_PIVOT_TABLE: true,
|
|
161
163
|
LAYOUT_TYPE_SCATTER: true,
|
|
162
164
|
LAYOUT_TYPE_LINE_LIST: true,
|
|
165
|
+
LAYOUT_TYPE_OUTLIER_TABLE: true,
|
|
163
166
|
getAvailableAxes: true,
|
|
164
167
|
getDisallowedDimensions: true,
|
|
168
|
+
getDimensionMaxNumberOfItems: true,
|
|
165
169
|
getAxisMaxNumberOfItems: true,
|
|
166
170
|
getAxisMaxNumberOfDimensions: true,
|
|
167
171
|
getAxisMinNumberOfDimensions: true,
|
|
168
172
|
hasAxisTooManyItems: true,
|
|
173
|
+
hasDimensionTooManyItems: true,
|
|
169
174
|
getAxisPerLockedDimension: true,
|
|
170
175
|
getAllLockedDimensionIds: true,
|
|
171
176
|
canDimensionBeAddedToAxis: true,
|
|
@@ -247,7 +252,8 @@ var _exportNames = {
|
|
|
247
252
|
DIMENSION_TYPE_ORGANISATION_UNIT: true,
|
|
248
253
|
DIMENSION_TYPE_PERIOD: true,
|
|
249
254
|
DIMENSION_TYPE_ORGANISATION_UNIT_GROUP_SET: true,
|
|
250
|
-
DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM: true
|
|
255
|
+
DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM: true,
|
|
256
|
+
dataTypeMap: true
|
|
251
257
|
};
|
|
252
258
|
Object.defineProperty(exports, "ALL_DYNAMIC_DIMENSION_ITEMS", {
|
|
253
259
|
enumerable: true,
|
|
@@ -741,6 +747,12 @@ Object.defineProperty(exports, "LAYOUT_TYPE_LINE_LIST", {
|
|
|
741
747
|
return _layoutTypes.LAYOUT_TYPE_LINE_LIST;
|
|
742
748
|
}
|
|
743
749
|
});
|
|
750
|
+
Object.defineProperty(exports, "LAYOUT_TYPE_OUTLIER_TABLE", {
|
|
751
|
+
enumerable: true,
|
|
752
|
+
get: function () {
|
|
753
|
+
return _layoutTypes.LAYOUT_TYPE_OUTLIER_TABLE;
|
|
754
|
+
}
|
|
755
|
+
});
|
|
744
756
|
Object.defineProperty(exports, "LAYOUT_TYPE_PIE", {
|
|
745
757
|
enumerable: true,
|
|
746
758
|
get: function () {
|
|
@@ -1071,6 +1083,12 @@ Object.defineProperty(exports, "VIS_TYPE_LINE_LIST", {
|
|
|
1071
1083
|
return _visTypes.VIS_TYPE_LINE_LIST;
|
|
1072
1084
|
}
|
|
1073
1085
|
});
|
|
1086
|
+
Object.defineProperty(exports, "VIS_TYPE_OUTLIER_TABLE", {
|
|
1087
|
+
enumerable: true,
|
|
1088
|
+
get: function () {
|
|
1089
|
+
return _visTypes.VIS_TYPE_OUTLIER_TABLE;
|
|
1090
|
+
}
|
|
1091
|
+
});
|
|
1074
1092
|
Object.defineProperty(exports, "VIS_TYPE_PIE", {
|
|
1075
1093
|
enumerable: true,
|
|
1076
1094
|
get: function () {
|
|
@@ -1293,6 +1311,12 @@ Object.defineProperty(exports, "createVisualization", {
|
|
|
1293
1311
|
return _index10.createVisualization;
|
|
1294
1312
|
}
|
|
1295
1313
|
});
|
|
1314
|
+
Object.defineProperty(exports, "dataTypeMap", {
|
|
1315
|
+
enumerable: true,
|
|
1316
|
+
get: function () {
|
|
1317
|
+
return _dataTypes.dataTypeMap;
|
|
1318
|
+
}
|
|
1319
|
+
});
|
|
1296
1320
|
Object.defineProperty(exports, "defaultFontStyle", {
|
|
1297
1321
|
enumerable: true,
|
|
1298
1322
|
get: function () {
|
|
@@ -1431,6 +1455,12 @@ Object.defineProperty(exports, "getDimensionById", {
|
|
|
1431
1455
|
return _predefinedDimensions.getDimensionById;
|
|
1432
1456
|
}
|
|
1433
1457
|
});
|
|
1458
|
+
Object.defineProperty(exports, "getDimensionMaxNumberOfItems", {
|
|
1459
|
+
enumerable: true,
|
|
1460
|
+
get: function () {
|
|
1461
|
+
return _index9.getDimensionMaxNumberOfItems;
|
|
1462
|
+
}
|
|
1463
|
+
});
|
|
1434
1464
|
Object.defineProperty(exports, "getDisallowedDimensions", {
|
|
1435
1465
|
enumerable: true,
|
|
1436
1466
|
get: function () {
|
|
@@ -1515,6 +1545,12 @@ Object.defineProperty(exports, "hasCustomAxes", {
|
|
|
1515
1545
|
return _axis.hasCustomAxes;
|
|
1516
1546
|
}
|
|
1517
1547
|
});
|
|
1548
|
+
Object.defineProperty(exports, "hasDimensionTooManyItems", {
|
|
1549
|
+
enumerable: true,
|
|
1550
|
+
get: function () {
|
|
1551
|
+
return _index9.hasDimensionTooManyItems;
|
|
1552
|
+
}
|
|
1553
|
+
});
|
|
1518
1554
|
Object.defineProperty(exports, "hasRelativeItems", {
|
|
1519
1555
|
enumerable: true,
|
|
1520
1556
|
get: function () {
|
|
@@ -1557,6 +1593,12 @@ Object.defineProperty(exports, "isMultiType", {
|
|
|
1557
1593
|
return _visTypes.isMultiType;
|
|
1558
1594
|
}
|
|
1559
1595
|
});
|
|
1596
|
+
Object.defineProperty(exports, "isOutlierTable", {
|
|
1597
|
+
enumerable: true,
|
|
1598
|
+
get: function () {
|
|
1599
|
+
return _visTypes.isOutlierTable;
|
|
1600
|
+
}
|
|
1601
|
+
});
|
|
1560
1602
|
Object.defineProperty(exports, "isSingleValue", {
|
|
1561
1603
|
enumerable: true,
|
|
1562
1604
|
get: function () {
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"Drag items here, or double click in the list, to start building a calculation formula": "Drag items here, or double click in the list, to start building a calculation formula",
|
|
45
45
|
"Math operators": "Math operators",
|
|
46
46
|
"Data Type": "Data Type",
|
|
47
|
+
"Only {{dataType}} can be used in {{visType}}": "Only {{dataType}} can be used in {{visType}}",
|
|
47
48
|
"All types": "All types",
|
|
48
49
|
"Disaggregation": "Disaggregation",
|
|
49
50
|
"No data": "No data",
|
|
@@ -54,10 +55,12 @@
|
|
|
54
55
|
"No data sets found": "No data sets found",
|
|
55
56
|
"No event data items found": "No event data items found",
|
|
56
57
|
"No program indicators found": "No program indicators found",
|
|
58
|
+
"No calculations found": "No calculations found",
|
|
57
59
|
"No indicators found for \"{{- searchTerm}}\"": "No indicators found for \"{{- searchTerm}}\"",
|
|
58
60
|
"No data sets found for \"{{- searchTerm}}\"": "No data sets found for \"{{- searchTerm}}\"",
|
|
59
61
|
"No event data items found for \"{{- searchTerm}}\"": "No event data items found for \"{{- searchTerm}}\"",
|
|
60
62
|
"No program indicators found for \"{{- searchTerm}}\"": "No program indicators found for \"{{- searchTerm}}\"",
|
|
63
|
+
"No calculations found for \"{{- searchTerm}}\"": "No calculations found for \"{{- searchTerm}}\"",
|
|
61
64
|
"Nothing found for \"{{- searchTerm}}\"": "Nothing found for \"{{- searchTerm}}\"",
|
|
62
65
|
"Calculation": "Calculation",
|
|
63
66
|
"Metric type": "Metric type",
|
|
@@ -201,9 +204,9 @@
|
|
|
201
204
|
"Year": "Year",
|
|
202
205
|
"Select year": "Select year",
|
|
203
206
|
"Period": "Period",
|
|
207
|
+
"Selected Periods": "Selected Periods",
|
|
204
208
|
"Relative periods": "Relative periods",
|
|
205
209
|
"Fixed periods": "Fixed periods",
|
|
206
|
-
"Selected Periods": "Selected Periods",
|
|
207
210
|
"No periods selected": "No periods selected",
|
|
208
211
|
"Daily": "Daily",
|
|
209
212
|
"Weekly": "Weekly",
|
|
@@ -371,6 +374,7 @@
|
|
|
371
374
|
"Radar": "Radar",
|
|
372
375
|
"Scatter": "Scatter",
|
|
373
376
|
"Single value": "Single value",
|
|
377
|
+
"Outlier table": "Outlier table",
|
|
374
378
|
"All charts": "All charts",
|
|
375
379
|
"{{seriesName}} (trend)": "{{seriesName}} (trend)",
|
|
376
380
|
"Trend": "Trend",
|
|
@@ -6,6 +6,7 @@ var _predefinedDimensions = require("../predefinedDimensions.js");
|
|
|
6
6
|
var _visTypes = require("../visTypes.js");
|
|
7
7
|
const someId = 'someId';
|
|
8
8
|
const otherId = 'otherId';
|
|
9
|
+
const thirdId = 'thirdId';
|
|
9
10
|
describe('getAdaptedUiLayoutByType', () => {
|
|
10
11
|
it('column: moves all extra dimensions in columns and rows to filters', () => {
|
|
11
12
|
const initialState = {
|
|
@@ -109,6 +110,20 @@ describe('getAdaptedUiLayoutByType', () => {
|
|
|
109
110
|
};
|
|
110
111
|
expect(actualState).toEqual(expectedState);
|
|
111
112
|
});
|
|
113
|
+
it('outlier table: removes all dimensions but dx,pe,ou which are moved to columns', () => {
|
|
114
|
+
const initialState = {
|
|
115
|
+
[_axis.AXIS_ID_COLUMNS]: [_predefinedDimensions.DIMENSION_ID_DATA, someId],
|
|
116
|
+
[_axis.AXIS_ID_ROWS]: [_predefinedDimensions.DIMENSION_ID_PERIOD, otherId],
|
|
117
|
+
[_axis.AXIS_ID_FILTERS]: [_predefinedDimensions.DIMENSION_ID_ORGUNIT, thirdId]
|
|
118
|
+
};
|
|
119
|
+
const actualState = (0, _getAdaptedUiLayoutByType.getAdaptedUiLayoutByType)(initialState, _visTypes.VIS_TYPE_OUTLIER_TABLE);
|
|
120
|
+
const expectedState = {
|
|
121
|
+
[_axis.AXIS_ID_COLUMNS]: [_predefinedDimensions.DIMENSION_ID_DATA, _predefinedDimensions.DIMENSION_ID_PERIOD, _predefinedDimensions.DIMENSION_ID_ORGUNIT],
|
|
122
|
+
[_axis.AXIS_ID_ROWS]: [],
|
|
123
|
+
[_axis.AXIS_ID_FILTERS]: []
|
|
124
|
+
};
|
|
125
|
+
expect(actualState).toEqual(expectedState);
|
|
126
|
+
});
|
|
112
127
|
it('pivot -> sv with dimension strings', () => {
|
|
113
128
|
const initialLayout = {
|
|
114
129
|
[_axis.AXIS_ID_COLUMNS]: [_predefinedDimensions.DIMENSION_ID_DATA, _predefinedDimensions.DIMENSION_ID_PERIOD],
|
|
@@ -35,6 +35,10 @@ const getAxisNamesByLayoutType = layoutType => {
|
|
|
35
35
|
[_axis.AXIS_ID_ROWS]: _index.default.t('Points'),
|
|
36
36
|
[_axis.AXIS_ID_FILTERS]: _index.default.t('Filter')
|
|
37
37
|
};
|
|
38
|
+
case _layoutTypes.LAYOUT_TYPE_OUTLIER_TABLE:
|
|
39
|
+
return {
|
|
40
|
+
[_axis.AXIS_ID_COLUMNS]: _index.default.t('Columns')
|
|
41
|
+
};
|
|
38
42
|
}
|
|
39
43
|
};
|
|
40
44
|
const getAxisNameByLayoutType = (axisId, layoutType) => {
|
|
@@ -33,6 +33,8 @@ const getAdaptedUiLayoutByType = (layout, type) => {
|
|
|
33
33
|
return layout;
|
|
34
34
|
case _visTypes.VIS_TYPE_SCATTER:
|
|
35
35
|
return getScatterLayout(layout);
|
|
36
|
+
case _visTypes.VIS_TYPE_OUTLIER_TABLE:
|
|
37
|
+
return getOutlierTableLayout(layout);
|
|
36
38
|
default:
|
|
37
39
|
return getDefaultLayout(layout);
|
|
38
40
|
}
|
|
@@ -107,6 +109,13 @@ const getSingleValueLayout = layout => {
|
|
|
107
109
|
};
|
|
108
110
|
};
|
|
109
111
|
|
|
112
|
+
// Transform from ui.layout to outlier table layout format
|
|
113
|
+
const getOutlierTableLayout = () => ({
|
|
114
|
+
[_axis.AXIS_ID_COLUMNS]: [_predefinedDimensions.DIMENSION_ID_DATA, _predefinedDimensions.DIMENSION_ID_PERIOD, _predefinedDimensions.DIMENSION_ID_ORGUNIT],
|
|
115
|
+
[_axis.AXIS_ID_ROWS]: [],
|
|
116
|
+
[_axis.AXIS_ID_FILTERS]: []
|
|
117
|
+
});
|
|
118
|
+
|
|
110
119
|
/**
|
|
111
120
|
*
|
|
112
121
|
* @param {string|object} dimension
|
|
@@ -6,5 +6,5 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.axisGetDimensionIds = void 0;
|
|
7
7
|
var _axis = require("./axis.js");
|
|
8
8
|
var _dimensionGetId = require("./dimensionGetId.js");
|
|
9
|
-
const axisGetDimensionIds = axis => _axis.AXIS.isValid(axis) ? axis.map(dimension => (0, _dimensionGetId.dimensionGetId)(dimension)) : _axis.AXIS.defaultValue;
|
|
9
|
+
const axisGetDimensionIds = (axis, outputType) => _axis.AXIS.isValid(axis) ? axis.map(dimension => (0, _dimensionGetId.dimensionGetId)(dimension, outputType)) : _axis.AXIS.defaultValue;
|
|
10
10
|
exports.axisGetDimensionIds = axisGetDimensionIds;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.DIMENSION_PROP_REPETITION = exports.DIMENSION_PROP_PROGRAM_STAGE = exports.DIMENSION_PROP_LEGEND_SET = exports.DIMENSION_PROP_ITEMS = exports.DIMENSION_PROP_ID = exports.DIMENSION_PROP_FILTER = exports.DIMENSION_PROPS = exports.DIMENSION = void 0;
|
|
6
|
+
exports.DIMENSION_PROP_REPETITION = exports.DIMENSION_PROP_PROGRAM_STAGE = exports.DIMENSION_PROP_PROGRAM = exports.DIMENSION_PROP_LEGEND_SET = exports.DIMENSION_PROP_ITEMS = exports.DIMENSION_PROP_ID = exports.DIMENSION_PROP_FILTER = exports.DIMENSION_PROPS = exports.DIMENSION = void 0;
|
|
7
7
|
var _isObject = _interopRequireDefault(require("lodash/isObject"));
|
|
8
8
|
var _isString = _interopRequireDefault(require("lodash/isString"));
|
|
9
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -43,6 +43,13 @@ const DIMENSION_PROP_LEGEND_SET = {
|
|
|
43
43
|
isValid: prop => (0, _isString.default)(prop)
|
|
44
44
|
};
|
|
45
45
|
exports.DIMENSION_PROP_LEGEND_SET = DIMENSION_PROP_LEGEND_SET;
|
|
46
|
+
const DIMENSION_PROP_PROGRAM = {
|
|
47
|
+
name: 'program',
|
|
48
|
+
defaultValue: {},
|
|
49
|
+
required: false,
|
|
50
|
+
isValid: prop => (0, _isObject.default)(prop)
|
|
51
|
+
};
|
|
52
|
+
exports.DIMENSION_PROP_PROGRAM = DIMENSION_PROP_PROGRAM;
|
|
46
53
|
const DIMENSION_PROP_PROGRAM_STAGE = {
|
|
47
54
|
name: 'programStage',
|
|
48
55
|
defaultValue: {},
|
|
@@ -57,5 +64,5 @@ const DIMENSION_PROP_REPETITION = {
|
|
|
57
64
|
isValid: prop => Array.isArray(prop)
|
|
58
65
|
};
|
|
59
66
|
exports.DIMENSION_PROP_REPETITION = DIMENSION_PROP_REPETITION;
|
|
60
|
-
const DIMENSION_PROPS = [DIMENSION_PROP_ID, DIMENSION_PROP_ITEMS, DIMENSION_PROP_FILTER, DIMENSION_PROP_LEGEND_SET, DIMENSION_PROP_PROGRAM_STAGE, DIMENSION_PROP_REPETITION];
|
|
67
|
+
const DIMENSION_PROPS = [DIMENSION_PROP_ID, DIMENSION_PROP_ITEMS, DIMENSION_PROP_FILTER, DIMENSION_PROP_LEGEND_SET, DIMENSION_PROP_PROGRAM, DIMENSION_PROP_PROGRAM_STAGE, DIMENSION_PROP_REPETITION];
|
|
61
68
|
exports.DIMENSION_PROPS = DIMENSION_PROPS;
|
|
@@ -21,6 +21,9 @@ const dimensionCreate = function (dimensionId) {
|
|
|
21
21
|
...(args.legendSet && {
|
|
22
22
|
[_dimension.DIMENSION_PROP_LEGEND_SET.name]: args.legendSet
|
|
23
23
|
}),
|
|
24
|
+
...(args.program && {
|
|
25
|
+
[_dimension.DIMENSION_PROP_PROGRAM.name]: args.program
|
|
26
|
+
}),
|
|
24
27
|
...(args.programStage && {
|
|
25
28
|
[_dimension.DIMENSION_PROP_PROGRAM_STAGE.name]: args.programStage
|
|
26
29
|
}),
|
|
@@ -4,9 +4,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.dimensionGetId = void 0;
|
|
7
|
+
var _utils = require("../../api/analytics/utils.js");
|
|
7
8
|
var _dimension = require("./dimension.js");
|
|
8
|
-
const dimensionGetId = dimension => {
|
|
9
|
-
var _dimension$DIMENSION_;
|
|
10
|
-
return (
|
|
9
|
+
const dimensionGetId = (dimension, outputType) => {
|
|
10
|
+
var _dimension$DIMENSION_, _dimension$DIMENSION_2;
|
|
11
|
+
return (0, _utils.formatDimension)({
|
|
12
|
+
dimension: dimension[_dimension.DIMENSION_PROP_ID.name],
|
|
13
|
+
programId: (_dimension$DIMENSION_ = dimension[_dimension.DIMENSION_PROP_PROGRAM.name]) === null || _dimension$DIMENSION_ === void 0 ? void 0 : _dimension$DIMENSION_.id,
|
|
14
|
+
programStageId: (_dimension$DIMENSION_2 = dimension[_dimension.DIMENSION_PROP_PROGRAM_STAGE.name]) === null || _dimension$DIMENSION_2 === void 0 ? void 0 : _dimension$DIMENSION_2.id,
|
|
15
|
+
outputType
|
|
16
|
+
});
|
|
11
17
|
};
|
|
12
18
|
exports.dimensionGetId = dimensionGetId;
|
|
@@ -11,7 +11,7 @@ const layoutFilterDimensions = (layout, dimensionIds) => {
|
|
|
11
11
|
const filteredLayout = Object.assign({}, layout);
|
|
12
12
|
_axis.DEFAULT_AXIS_IDS.forEach(axisId => {
|
|
13
13
|
if (_axis.AXIS.isValid(filteredLayout[axisId])) {
|
|
14
|
-
filteredLayout[axisId] = filteredLayout[axisId].filter(dimension => !idArray.includes((0, _dimensionGetId.dimensionGetId)(dimension)));
|
|
14
|
+
filteredLayout[axisId] = filteredLayout[axisId].filter(dimension => !idArray.includes((0, _dimensionGetId.dimensionGetId)(dimension, layout.outputType)));
|
|
15
15
|
}
|
|
16
16
|
});
|
|
17
17
|
return filteredLayout;
|
|
@@ -8,7 +8,7 @@ var _axis = require("./axis.js");
|
|
|
8
8
|
var _axisGetDimensionIds = require("./axisGetDimensionIds.js");
|
|
9
9
|
const layoutGetAxisIdDimensionIdsObject = layout => _axis.DEFAULT_AXIS_IDS.reduce((obj, axisId) => {
|
|
10
10
|
if (_axis.AXIS.isValid(layout[axisId])) {
|
|
11
|
-
obj[axisId] = (0, _axisGetDimensionIds.axisGetDimensionIds)(layout[axisId]);
|
|
11
|
+
obj[axisId] = (0, _axisGetDimensionIds.axisGetDimensionIds)(layout[axisId], layout.outputType);
|
|
12
12
|
}
|
|
13
13
|
return obj;
|
|
14
14
|
}, {});
|
|
@@ -8,7 +8,7 @@ var _dimensionGetId = require("./dimensionGetId.js");
|
|
|
8
8
|
var _dimensionGetItemIds = require("./dimensionGetItemIds.js");
|
|
9
9
|
var _layoutGetAllDimensions = require("./layoutGetAllDimensions.js");
|
|
10
10
|
const layoutGetDimensionIdItemIdsObject = layout => (0, _layoutGetAllDimensions.layoutGetAllDimensions)(layout).reduce((obj, dimension) => {
|
|
11
|
-
obj[(0, _dimensionGetId.dimensionGetId)(dimension)] = (0, _dimensionGetItemIds.dimensionGetItemIds)(dimension);
|
|
11
|
+
obj[(0, _dimensionGetId.dimensionGetId)(dimension, layout.outputType)] = (0, _dimensionGetItemIds.dimensionGetItemIds)(dimension);
|
|
12
12
|
return obj;
|
|
13
13
|
}, {});
|
|
14
14
|
exports.layoutGetDimensionIdItemIdsObject = layoutGetDimensionIdItemIdsObject;
|
|
@@ -9,6 +9,6 @@ var _dimensionGetId = require("./dimensionGetId.js");
|
|
|
9
9
|
var _layoutGetAllDimensions = require("./layoutGetAllDimensions.js");
|
|
10
10
|
const layoutHasDynamicDimension = layout => {
|
|
11
11
|
const fixedIds = Object.keys((0, _predefinedDimensions.getPredefinedDimensions)());
|
|
12
|
-
return Boolean((0, _layoutGetAllDimensions.layoutGetAllDimensions)(layout).find(dimension => !fixedIds.includes((0, _dimensionGetId.dimensionGetId)(dimension))));
|
|
12
|
+
return Boolean((0, _layoutGetAllDimensions.layoutGetAllDimensions)(layout).find(dimension => !fixedIds.includes((0, _dimensionGetId.dimensionGetId)(dimension, layout.outputType))));
|
|
13
13
|
};
|
|
14
14
|
exports.layoutHasDynamicDimension = layoutHasDynamicDimension;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.LAYOUT_TYPE_YEAR_OVER_YEAR = exports.LAYOUT_TYPE_SINGLE_VALUE = exports.LAYOUT_TYPE_SCATTER = exports.LAYOUT_TYPE_PIVOT_TABLE = exports.LAYOUT_TYPE_PIE = exports.LAYOUT_TYPE_LINE_LIST = exports.LAYOUT_TYPE_DEFAULT = void 0;
|
|
6
|
+
exports.LAYOUT_TYPE_YEAR_OVER_YEAR = exports.LAYOUT_TYPE_SINGLE_VALUE = exports.LAYOUT_TYPE_SCATTER = exports.LAYOUT_TYPE_PIVOT_TABLE = exports.LAYOUT_TYPE_PIE = exports.LAYOUT_TYPE_OUTLIER_TABLE = exports.LAYOUT_TYPE_LINE_LIST = exports.LAYOUT_TYPE_DEFAULT = void 0;
|
|
7
7
|
const LAYOUT_TYPE_DEFAULT = 'LAYOUT_TYPE_DEFAULT';
|
|
8
8
|
exports.LAYOUT_TYPE_DEFAULT = LAYOUT_TYPE_DEFAULT;
|
|
9
9
|
const LAYOUT_TYPE_PIE = 'LAYOUT_TYPE_PIE';
|
|
@@ -17,4 +17,6 @@ exports.LAYOUT_TYPE_PIVOT_TABLE = LAYOUT_TYPE_PIVOT_TABLE;
|
|
|
17
17
|
const LAYOUT_TYPE_SCATTER = 'LAYOUT_TYPE_SCATTER';
|
|
18
18
|
exports.LAYOUT_TYPE_SCATTER = LAYOUT_TYPE_SCATTER;
|
|
19
19
|
const LAYOUT_TYPE_LINE_LIST = 'LAYOUT_TYPE_LINE_LIST';
|
|
20
|
-
exports.LAYOUT_TYPE_LINE_LIST = LAYOUT_TYPE_LINE_LIST;
|
|
20
|
+
exports.LAYOUT_TYPE_LINE_LIST = LAYOUT_TYPE_LINE_LIST;
|
|
21
|
+
const LAYOUT_TYPE_OUTLIER_TABLE = 'LAYOUT_TYPE_OUTLIER_TABLE';
|
|
22
|
+
exports.LAYOUT_TYPE_OUTLIER_TABLE = LAYOUT_TYPE_OUTLIER_TABLE;
|
|
@@ -4,12 +4,14 @@ var _axis = require("../../layout/axis.js");
|
|
|
4
4
|
var _predefinedDimensions = require("../../predefinedDimensions.js");
|
|
5
5
|
var _rules = require("../rules.js");
|
|
6
6
|
// Consts
|
|
7
|
+
const validDims = [_predefinedDimensions.DIMENSION_ID_DATA, _predefinedDimensions.DIMENSION_ID_PERIOD, _predefinedDimensions.DIMENSION_ID_ORGUNIT];
|
|
7
8
|
const lockableDims = [_predefinedDimensions.DIMENSION_ID_DATA, _predefinedDimensions.DIMENSION_ID_PERIOD, _predefinedDimensions.DIMENSION_ID_ORGUNIT];
|
|
8
|
-
const disallowableDims = [_predefinedDimensions.DIMENSION_ID_DATA, _predefinedDimensions.DIMENSION_ID_PERIOD];
|
|
9
|
+
const disallowableDims = [_predefinedDimensions.DIMENSION_ID_DATA, _predefinedDimensions.DIMENSION_ID_PERIOD, _predefinedDimensions.DIMENSION_ID_ASSIGNED_CATEGORIES];
|
|
9
10
|
|
|
10
11
|
// Helper fns
|
|
11
12
|
const allArrayItemsAreValid = (allItems, validItems) => allItems.every(value => validItems.includes(value));
|
|
12
13
|
const allArrayItemsAreValidAxisIds = array => allArrayItemsAreValid(array, _axis.ALL_AXIS_IDS);
|
|
14
|
+
const allArrayItemsAreValidDimensionIds = array => allArrayItemsAreValid(array, validDims);
|
|
13
15
|
const onlyRulesWithProp = ruleProp => _rules.testResourceRules.filter(rule => rule[ruleProp]);
|
|
14
16
|
|
|
15
17
|
// Partial tests
|
|
@@ -19,6 +21,9 @@ const testPropHasKeysAndValues = ruleProp => it('has keys and values', () => {
|
|
|
19
21
|
const testPropIsArray = ruleProp => it('is an array', () => {
|
|
20
22
|
expect(onlyRulesWithProp(ruleProp).every(rule => Array.isArray(rule[ruleProp]))).toBe(true);
|
|
21
23
|
});
|
|
24
|
+
const testKeysAreValidDimensionIds = ruleProp => it('keys should be valid dimension ids', () => {
|
|
25
|
+
expect(onlyRulesWithProp(ruleProp).every(rule => allArrayItemsAreValidDimensionIds(Object.keys(rule[ruleProp])))).toBe(true);
|
|
26
|
+
});
|
|
22
27
|
const testKeysAreValidAxisIds = ruleProp => it('keys should be valid axis ids', () => {
|
|
23
28
|
expect(onlyRulesWithProp(ruleProp).every(rule => allArrayItemsAreValidAxisIds(Object.keys(rule[ruleProp])))).toBe(true);
|
|
24
29
|
});
|
|
@@ -57,6 +62,13 @@ describe("verify each rule's ", () => {
|
|
|
57
62
|
testNoValuesNegative(ruleProp);
|
|
58
63
|
});
|
|
59
64
|
});
|
|
65
|
+
describe('MAX_ITEMS_PER_DIM', () => {
|
|
66
|
+
const ruleProp = _rules.testResourceAllRuleProps['MAX_ITEMS_PER_DIM'];
|
|
67
|
+
testPropHasKeysAndValues(ruleProp);
|
|
68
|
+
testKeysAreValidDimensionIds(ruleProp);
|
|
69
|
+
testNoValuesZero(ruleProp);
|
|
70
|
+
testNoValuesNegative(ruleProp);
|
|
71
|
+
});
|
|
60
72
|
describe('AVAILABLE_AXES', () => {
|
|
61
73
|
const ruleProp = _rules.testResourceAllRuleProps['AVAILABLE_AXES'];
|
|
62
74
|
testPropIsArray(ruleProp);
|
|
@@ -45,6 +45,12 @@ Object.defineProperty(exports, "getAxisPerLockedDimension", {
|
|
|
45
45
|
return _rulesHelper.getAxisPerLockedDimByVisType;
|
|
46
46
|
}
|
|
47
47
|
});
|
|
48
|
+
Object.defineProperty(exports, "getDimensionMaxNumberOfItems", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
get: function () {
|
|
51
|
+
return _rulesHelper.getDimMaxNumberOfItemsByVisType;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
48
54
|
Object.defineProperty(exports, "getDisallowedDimensions", {
|
|
49
55
|
enumerable: true,
|
|
50
56
|
get: function () {
|
|
@@ -63,6 +69,12 @@ Object.defineProperty(exports, "hasAxisTooManyItems", {
|
|
|
63
69
|
return _rulesUtils.hasAxisTooManyItemsByVisType;
|
|
64
70
|
}
|
|
65
71
|
});
|
|
72
|
+
Object.defineProperty(exports, "hasDimensionTooManyItems", {
|
|
73
|
+
enumerable: true,
|
|
74
|
+
get: function () {
|
|
75
|
+
return _rulesUtils.hasDimensionTooManyItemsByVisType;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
66
78
|
Object.defineProperty(exports, "isAxisFull", {
|
|
67
79
|
enumerable: true,
|
|
68
80
|
get: function () {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.testResourceRules = exports.testResourceRequiredProps = exports.testResourceAllRuleProps = exports.getMinNumberOfDimsPerAxisByVisType = exports.getMaxNumberOfItemsPerAxisByVisType = exports.getMaxNumberOfDimsPerAxisByVisType = exports.getLockedDimsByVisType = exports.getDisallowedDimsByVisType = exports.getAvailableAxesByVisType = void 0;
|
|
6
|
+
exports.testResourceRules = exports.testResourceRequiredProps = exports.testResourceAllRuleProps = exports.getMinNumberOfDimsPerAxisByVisType = exports.getMaxNumberOfItemsPerDimByVisType = exports.getMaxNumberOfItemsPerAxisByVisType = exports.getMaxNumberOfDimsPerAxisByVisType = exports.getLockedDimsByVisType = exports.getDisallowedDimsByVisType = exports.getAvailableAxesByVisType = void 0;
|
|
7
7
|
var _axis = require("../layout/axis.js");
|
|
8
8
|
var _predefinedDimensions = require("../predefinedDimensions.js");
|
|
9
9
|
var _visTypes = require("../visTypes.js");
|
|
@@ -11,6 +11,7 @@ const RULE_PROP_AVAILABLE_AXES = 'availableAxes',
|
|
|
11
11
|
RULE_PROP_MAX_DIMS_PER_AXIS = 'maxNumberOfDimsPerAxis',
|
|
12
12
|
RULE_PROP_MIN_DIMS_PER_AXIS = 'minNumberOfDimsPerAxis',
|
|
13
13
|
RULE_PROP_MAX_ITEMS_PER_AXIS = 'maxNumberOfItemsPerAxis',
|
|
14
|
+
RULE_PROP_MAX_ITEMS_PER_DIM = 'maxNumberOfItemsPerDim',
|
|
14
15
|
RULE_PROP_DISALLOWED_DIMS = 'disallowedDims',
|
|
15
16
|
RULE_PROP_LOCKED_DIMS = 'lockedDims';
|
|
16
17
|
const defaultRules = {
|
|
@@ -88,6 +89,21 @@ const scatterRules = {
|
|
|
88
89
|
const lineListRules = {
|
|
89
90
|
[RULE_PROP_AVAILABLE_AXES]: [_axis.AXIS_ID_COLUMNS, _axis.AXIS_ID_FILTERS]
|
|
90
91
|
};
|
|
92
|
+
const outlierTableRules = {
|
|
93
|
+
[RULE_PROP_AVAILABLE_AXES]: [_axis.AXIS_ID_COLUMNS],
|
|
94
|
+
[RULE_PROP_MIN_DIMS_PER_AXIS]: {
|
|
95
|
+
[_axis.AXIS_ID_COLUMNS]: 3
|
|
96
|
+
},
|
|
97
|
+
[RULE_PROP_MAX_ITEMS_PER_DIM]: {
|
|
98
|
+
[_predefinedDimensions.DIMENSION_ID_PERIOD]: 1
|
|
99
|
+
},
|
|
100
|
+
[RULE_PROP_LOCKED_DIMS]: {
|
|
101
|
+
[_predefinedDimensions.DIMENSION_ID_DATA]: _axis.AXIS_ID_COLUMNS,
|
|
102
|
+
[_predefinedDimensions.DIMENSION_ID_PERIOD]: _axis.AXIS_ID_COLUMNS,
|
|
103
|
+
[_predefinedDimensions.DIMENSION_ID_ORGUNIT]: _axis.AXIS_ID_COLUMNS
|
|
104
|
+
},
|
|
105
|
+
[RULE_PROP_DISALLOWED_DIMS]: [_predefinedDimensions.DIMENSION_ID_ASSIGNED_CATEGORIES]
|
|
106
|
+
};
|
|
91
107
|
const visTypeToRules = {
|
|
92
108
|
[_visTypes.VIS_TYPE_COLUMN]: defaultRules,
|
|
93
109
|
[_visTypes.VIS_TYPE_STACKED_COLUMN]: defaultRules,
|
|
@@ -104,7 +120,8 @@ const visTypeToRules = {
|
|
|
104
120
|
[_visTypes.VIS_TYPE_YEAR_OVER_YEAR_COLUMN]: yearOverYearRules,
|
|
105
121
|
[_visTypes.VIS_TYPE_PIVOT_TABLE]: pivotTableRules,
|
|
106
122
|
[_visTypes.VIS_TYPE_SCATTER]: scatterRules,
|
|
107
|
-
[_visTypes.VIS_TYPE_LINE_LIST]: lineListRules
|
|
123
|
+
[_visTypes.VIS_TYPE_LINE_LIST]: lineListRules,
|
|
124
|
+
[_visTypes.VIS_TYPE_OUTLIER_TABLE]: outlierTableRules
|
|
108
125
|
};
|
|
109
126
|
const getRulesByVisType = visType => {
|
|
110
127
|
const rules = visTypeToRules[visType];
|
|
@@ -122,6 +139,8 @@ const getMaxNumberOfDimsPerAxisByVisType = visType => getRulesByVisType(visType)
|
|
|
122
139
|
exports.getMaxNumberOfDimsPerAxisByVisType = getMaxNumberOfDimsPerAxisByVisType;
|
|
123
140
|
const getMinNumberOfDimsPerAxisByVisType = visType => getRulesByVisType(visType)[RULE_PROP_MIN_DIMS_PER_AXIS] || {};
|
|
124
141
|
exports.getMinNumberOfDimsPerAxisByVisType = getMinNumberOfDimsPerAxisByVisType;
|
|
142
|
+
const getMaxNumberOfItemsPerDimByVisType = visType => getRulesByVisType(visType)[RULE_PROP_MAX_ITEMS_PER_DIM] || {};
|
|
143
|
+
exports.getMaxNumberOfItemsPerDimByVisType = getMaxNumberOfItemsPerDimByVisType;
|
|
125
144
|
const getMaxNumberOfItemsPerAxisByVisType = visType => getRulesByVisType(visType)[RULE_PROP_MAX_ITEMS_PER_AXIS] || {};
|
|
126
145
|
exports.getMaxNumberOfItemsPerAxisByVisType = getMaxNumberOfItemsPerAxisByVisType;
|
|
127
146
|
const getDisallowedDimsByVisType = visType => getRulesByVisType(visType)[RULE_PROP_DISALLOWED_DIMS] || [];
|
|
@@ -139,6 +158,7 @@ const testResourceAllRuleProps = {
|
|
|
139
158
|
MAX_DIMS_PER_AXIS: RULE_PROP_MAX_DIMS_PER_AXIS,
|
|
140
159
|
MIN_DIMS_PER_AXIS: RULE_PROP_MIN_DIMS_PER_AXIS,
|
|
141
160
|
MAX_ITEMS_PER_AXIS: RULE_PROP_MAX_ITEMS_PER_AXIS,
|
|
161
|
+
MAX_ITEMS_PER_DIM: RULE_PROP_MAX_ITEMS_PER_DIM,
|
|
142
162
|
DISALLOWED_DIMS: RULE_PROP_DISALLOWED_DIMS,
|
|
143
163
|
LOCKED_DIMS: RULE_PROP_LOCKED_DIMS
|
|
144
164
|
};
|
|
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "getAvailableAxesByVisType", {
|
|
|
10
10
|
return _rules.getAvailableAxesByVisType;
|
|
11
11
|
}
|
|
12
12
|
});
|
|
13
|
-
exports.getAxisPerLockedDimByVisType = exports.getAxisMinNumberOfDimsByVisType = exports.getAxisMaxNumberOfItemsByVisType = exports.getAxisMaxNumberOfDimsByVisType = void 0;
|
|
13
|
+
exports.getDimMaxNumberOfItemsByVisType = exports.getAxisPerLockedDimByVisType = exports.getAxisMinNumberOfDimsByVisType = exports.getAxisMaxNumberOfItemsByVisType = exports.getAxisMaxNumberOfDimsByVisType = void 0;
|
|
14
14
|
Object.defineProperty(exports, "getDisallowedDimsByVisType", {
|
|
15
15
|
enumerable: true,
|
|
16
16
|
get: function () {
|
|
@@ -29,4 +29,6 @@ exports.getAxisMinNumberOfDimsByVisType = getAxisMinNumberOfDimsByVisType;
|
|
|
29
29
|
const getAxisPerLockedDimByVisType = (visType, dimensionId) => (0, _rules.getLockedDimsByVisType)(visType)[dimensionId];
|
|
30
30
|
exports.getAxisPerLockedDimByVisType = getAxisPerLockedDimByVisType;
|
|
31
31
|
const getAllLockedDimIdsByVisType = visType => Object.keys((0, _rules.getLockedDimsByVisType)(visType));
|
|
32
|
-
exports.getAllLockedDimIdsByVisType = getAllLockedDimIdsByVisType;
|
|
32
|
+
exports.getAllLockedDimIdsByVisType = getAllLockedDimIdsByVisType;
|
|
33
|
+
const getDimMaxNumberOfItemsByVisType = (visType, dimensionId) => (0, _rules.getMaxNumberOfItemsPerDimByVisType)(visType)[dimensionId];
|
|
34
|
+
exports.getDimMaxNumberOfItemsByVisType = getDimMaxNumberOfItemsByVisType;
|
|
@@ -3,14 +3,19 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.isDimensionLockedByVisType = exports.isAxisFullByVisType = exports.hasAxisTooManyItemsByVisType = exports.getTransferableDimensionPerAxisByVisType = exports.canDimensionBeAddedToAxisByVisType = void 0;
|
|
6
|
+
exports.isDimensionLockedByVisType = exports.isAxisFullByVisType = exports.hasDimensionTooManyItemsByVisType = exports.hasAxisTooManyItemsByVisType = exports.getTransferableDimensionPerAxisByVisType = exports.canDimensionBeAddedToAxisByVisType = void 0;
|
|
7
7
|
var _rules = require("./rules.js");
|
|
8
8
|
var _rulesHelper = require("./rulesHelper.js");
|
|
9
9
|
const hasAxisTooManyItemsByVisType = (visType, axisId, numberOfItems) => {
|
|
10
10
|
const maxNumberOfItemsPerAxis = (0, _rulesHelper.getAxisMaxNumberOfItemsByVisType)(visType, axisId);
|
|
11
|
-
return maxNumberOfItemsPerAxis
|
|
11
|
+
return maxNumberOfItemsPerAxis && numberOfItems > maxNumberOfItemsPerAxis;
|
|
12
12
|
};
|
|
13
13
|
exports.hasAxisTooManyItemsByVisType = hasAxisTooManyItemsByVisType;
|
|
14
|
+
const hasDimensionTooManyItemsByVisType = (visType, dimensionId, numberOfItems) => {
|
|
15
|
+
const maxNumberOfItemsPerDimension = (0, _rulesHelper.getDimMaxNumberOfItemsByVisType)(visType, dimensionId);
|
|
16
|
+
return maxNumberOfItemsPerDimension && numberOfItems > maxNumberOfItemsPerDimension;
|
|
17
|
+
};
|
|
18
|
+
exports.hasDimensionTooManyItemsByVisType = hasDimensionTooManyItemsByVisType;
|
|
14
19
|
const isDimensionLockedByVisType = (visType, dimensionId) => (0, _rulesHelper.getAllLockedDimIdsByVisType)(visType).includes(dimensionId);
|
|
15
20
|
exports.isDimensionLockedByVisType = isDimensionLockedByVisType;
|
|
16
21
|
const isAxisFullByVisType = (visType, axisId, axisDimensionsCount) => axisDimensionsCount >= (0, _rulesHelper.getAxisMaxNumberOfDimsByVisType)(visType, axisId);
|
|
@@ -22,7 +22,8 @@ const visTypeToLayoutType = {
|
|
|
22
22
|
[_visTypes.VIS_TYPE_SINGLE_VALUE]: _layoutTypes.LAYOUT_TYPE_PIE,
|
|
23
23
|
[_visTypes.VIS_TYPE_PIVOT_TABLE]: _layoutTypes.LAYOUT_TYPE_PIVOT_TABLE,
|
|
24
24
|
[_visTypes.VIS_TYPE_SCATTER]: _layoutTypes.LAYOUT_TYPE_SCATTER,
|
|
25
|
-
[_visTypes.VIS_TYPE_LINE_LIST]: _layoutTypes.LAYOUT_TYPE_LINE_LIST
|
|
25
|
+
[_visTypes.VIS_TYPE_LINE_LIST]: _layoutTypes.LAYOUT_TYPE_LINE_LIST,
|
|
26
|
+
[_visTypes.VIS_TYPE_OUTLIER_TABLE]: _layoutTypes.LAYOUT_TYPE_OUTLIER_TABLE
|
|
26
27
|
};
|
|
27
28
|
const getLayoutTypeByVisType = visType => visTypeToLayoutType[visType];
|
|
28
29
|
exports.getLayoutTypeByVisType = getLayoutTypeByVisType;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.visTypeIcons = exports.visTypeDisplayNames = exports.isYearOverYear = exports.isVerticalType = exports.isTwoCategoryChartType = exports.isStacked = exports.isSingleValue = exports.isMultiType = exports.isLegendSetType = exports.isDualAxisType = exports.isColumnBasedType = exports.getDisplayNameByVisType = exports.defaultVisType = exports.VIS_TYPE_YEAR_OVER_YEAR_LINE = exports.VIS_TYPE_YEAR_OVER_YEAR_COLUMN = exports.VIS_TYPE_STACKED_COLUMN = exports.VIS_TYPE_STACKED_BAR = exports.VIS_TYPE_STACKED_AREA = exports.VIS_TYPE_SINGLE_VALUE = exports.VIS_TYPE_SCATTER = exports.VIS_TYPE_RADAR = exports.VIS_TYPE_PIVOT_TABLE = exports.VIS_TYPE_PIE = exports.VIS_TYPE_LINE_LIST = exports.VIS_TYPE_LINE = exports.VIS_TYPE_GROUP_CHARTS = exports.VIS_TYPE_GROUP_ALL = exports.VIS_TYPE_GAUGE = exports.VIS_TYPE_COLUMN = exports.VIS_TYPE_BUBBLE = exports.VIS_TYPE_BAR = exports.VIS_TYPE_AREA = void 0;
|
|
6
|
+
exports.visTypeIcons = exports.visTypeDisplayNames = exports.isYearOverYear = exports.isVerticalType = exports.isTwoCategoryChartType = exports.isStacked = exports.isSingleValue = exports.isOutlierTable = exports.isMultiType = exports.isLegendSetType = exports.isDualAxisType = exports.isColumnBasedType = exports.getDisplayNameByVisType = exports.defaultVisType = exports.VIS_TYPE_YEAR_OVER_YEAR_LINE = exports.VIS_TYPE_YEAR_OVER_YEAR_COLUMN = exports.VIS_TYPE_STACKED_COLUMN = exports.VIS_TYPE_STACKED_BAR = exports.VIS_TYPE_STACKED_AREA = exports.VIS_TYPE_SINGLE_VALUE = exports.VIS_TYPE_SCATTER = exports.VIS_TYPE_RADAR = exports.VIS_TYPE_PIVOT_TABLE = exports.VIS_TYPE_PIE = exports.VIS_TYPE_OUTLIER_TABLE = exports.VIS_TYPE_LINE_LIST = exports.VIS_TYPE_LINE = exports.VIS_TYPE_GROUP_CHARTS = exports.VIS_TYPE_GROUP_ALL = exports.VIS_TYPE_GAUGE = exports.VIS_TYPE_COLUMN = exports.VIS_TYPE_BUBBLE = exports.VIS_TYPE_BAR = exports.VIS_TYPE_AREA = void 0;
|
|
7
7
|
var _ui = require("@dhis2/ui");
|
|
8
8
|
var _index = _interopRequireDefault(require("../locales/index.js"));
|
|
9
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -45,6 +45,8 @@ const VIS_TYPE_GROUP_ALL = 'ALL';
|
|
|
45
45
|
exports.VIS_TYPE_GROUP_ALL = VIS_TYPE_GROUP_ALL;
|
|
46
46
|
const VIS_TYPE_GROUP_CHARTS = 'CHARTS';
|
|
47
47
|
exports.VIS_TYPE_GROUP_CHARTS = VIS_TYPE_GROUP_CHARTS;
|
|
48
|
+
const VIS_TYPE_OUTLIER_TABLE = 'OUTLIER_TABLE';
|
|
49
|
+
exports.VIS_TYPE_OUTLIER_TABLE = VIS_TYPE_OUTLIER_TABLE;
|
|
48
50
|
const visTypeDisplayNames = {
|
|
49
51
|
[VIS_TYPE_PIVOT_TABLE]: _index.default.t('Pivot table'),
|
|
50
52
|
[VIS_TYPE_AREA]: _index.default.t('Area'),
|
|
@@ -62,12 +64,13 @@ const visTypeDisplayNames = {
|
|
|
62
64
|
[VIS_TYPE_RADAR]: _index.default.t('Radar'),
|
|
63
65
|
[VIS_TYPE_SCATTER]: _index.default.t('Scatter'),
|
|
64
66
|
[VIS_TYPE_SINGLE_VALUE]: _index.default.t('Single value'),
|
|
67
|
+
[VIS_TYPE_OUTLIER_TABLE]: _index.default.t('Outlier table'),
|
|
65
68
|
[VIS_TYPE_GROUP_ALL]: _index.default.t('All types'),
|
|
66
69
|
[VIS_TYPE_GROUP_CHARTS]: _index.default.t('All charts')
|
|
67
70
|
};
|
|
68
71
|
exports.visTypeDisplayNames = visTypeDisplayNames;
|
|
69
72
|
const visTypeIcons = {
|
|
70
|
-
[VIS_TYPE_PIVOT_TABLE]: _ui.
|
|
73
|
+
[VIS_TYPE_PIVOT_TABLE]: _ui.IconVisualizationPivotTable24,
|
|
71
74
|
[VIS_TYPE_AREA]: _ui.IconVisualizationArea24,
|
|
72
75
|
[VIS_TYPE_STACKED_AREA]: _ui.IconVisualizationAreaStacked24,
|
|
73
76
|
[VIS_TYPE_BAR]: _ui.IconVisualizationBar24,
|
|
@@ -82,7 +85,8 @@ const visTypeIcons = {
|
|
|
82
85
|
[VIS_TYPE_PIE]: _ui.IconVisualizationPie24,
|
|
83
86
|
[VIS_TYPE_RADAR]: _ui.IconVisualizationRadar24,
|
|
84
87
|
[VIS_TYPE_SCATTER]: _ui.IconVisualizationScatter24,
|
|
85
|
-
[VIS_TYPE_SINGLE_VALUE]: _ui.IconVisualizationSingleValue24
|
|
88
|
+
[VIS_TYPE_SINGLE_VALUE]: _ui.IconVisualizationSingleValue24,
|
|
89
|
+
[VIS_TYPE_OUTLIER_TABLE]: _ui.IconVisualizationOutlierTable24
|
|
86
90
|
};
|
|
87
91
|
exports.visTypeIcons = visTypeIcons;
|
|
88
92
|
const getDisplayNameByVisType = visType => {
|
|
@@ -113,6 +117,8 @@ const isMultiType = type => multiTypeTypes.includes(type);
|
|
|
113
117
|
exports.isMultiType = isMultiType;
|
|
114
118
|
const isSingleValue = type => type === VIS_TYPE_SINGLE_VALUE;
|
|
115
119
|
exports.isSingleValue = isSingleValue;
|
|
120
|
+
const isOutlierTable = type => type === VIS_TYPE_OUTLIER_TABLE;
|
|
121
|
+
exports.isOutlierTable = isOutlierTable;
|
|
116
122
|
const isTwoCategoryChartType = type => twoCategoryChartTypes.includes(type);
|
|
117
123
|
exports.isTwoCategoryChartType = isTwoCategoryChartType;
|
|
118
124
|
const isVerticalType = type => verticalTypes.includes(type);
|
|
@@ -87,6 +87,7 @@ export default (function x() {
|
|
|
87
87
|
addFixture('/api/analytics/cluster', require('./json/api/analytics/cluster.json'));
|
|
88
88
|
addFixture('/api/analytics/response', require('./json/api/analytics/response.json'));
|
|
89
89
|
addFixture('/api/analytics/enrollments', require('./json/api/analytics/enrollments.json'));
|
|
90
|
+
addFixture('/api/analytics/outlierDetection', require('./json/api/analytics/outlierDetection.json'));
|
|
90
91
|
return {
|
|
91
92
|
get: getFixture,
|
|
92
93
|
add: addFixture
|