@dhis2/analytics 26.4.0 → 26.5.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/AnalyticsAggregate.js +27 -1
- package/build/cjs/api/analytics/AnalyticsBase.js +8 -7
- package/build/cjs/api/analytics/AnalyticsRequestBase.js +9 -5
- package/build/cjs/api/analytics/AnalyticsResponse.js +42 -39
- 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/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/Interpretations/InterpretationModal/InterpretationModal.js +13 -4
- package/build/cjs/components/Interpretations/InterpretationModal/InterpretationThread.js +3 -0
- package/build/cjs/components/Interpretations/InterpretationsUnit/InterpretationList.js +3 -0
- package/build/cjs/components/Interpretations/InterpretationsUnit/InterpretationsUnit.js +15 -4
- package/build/cjs/components/Interpretations/common/Interpretation/Interpretation.js +7 -2
- package/build/cjs/components/Interpretations/common/Interpretation/useLike.js +12 -2
- 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/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/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/index.js +3 -2
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/index.js +3 -2
- package/build/es/__fixtures__/fixtures.js +1 -0
- package/build/es/__fixtures__/json/api/analytics/outlierDetection.json +213 -0
- package/build/es/api/analytics/AnalyticsAggregate.js +27 -1
- package/build/es/api/analytics/AnalyticsBase.js +7 -7
- package/build/es/api/analytics/AnalyticsRequestBase.js +9 -5
- package/build/es/api/analytics/AnalyticsResponse.js +42 -39
- 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/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/Interpretations/InterpretationModal/InterpretationModal.js +13 -4
- package/build/es/components/Interpretations/InterpretationModal/InterpretationThread.js +3 -0
- package/build/es/components/Interpretations/InterpretationsUnit/InterpretationList.js +3 -0
- package/build/es/components/Interpretations/InterpretationsUnit/InterpretationsUnit.js +15 -4
- package/build/es/components/Interpretations/common/Interpretation/Interpretation.js +7 -2
- package/build/es/components/Interpretations/common/Interpretation/useLike.js +12 -2
- 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/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/build/es/visualizations/config/adapters/dhis_highcharts/subtitle/index.js +3 -2
- package/build/es/visualizations/config/adapters/dhis_highcharts/title/index.js +3 -2
- package/package.json +6 -3
|
@@ -23,15 +23,35 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
23
23
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
24
24
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
25
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } //TODO: Reimplement the icon.js
|
|
26
|
-
const
|
|
26
|
+
const RightHeader = _ref => {
|
|
27
|
+
let {
|
|
28
|
+
infoBoxMessage
|
|
29
|
+
} = _ref;
|
|
30
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("p", {
|
|
31
|
+
className: `jsx-${_DimensionSelectorStyle.default.__hash}` + " " + "rightHeader"
|
|
32
|
+
}, _index.default.t('Selected Periods')), infoBoxMessage && /*#__PURE__*/_react.default.createElement("div", {
|
|
33
|
+
className: `jsx-${_DimensionSelectorStyle.default.__hash}` + " " + "info-container"
|
|
34
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
35
|
+
className: `jsx-${_DimensionSelectorStyle.default.__hash}`
|
|
36
|
+
}, /*#__PURE__*/_react.default.createElement(_ui.IconInfo16, null)), /*#__PURE__*/_react.default.createElement("span", {
|
|
37
|
+
className: `jsx-${_DimensionSelectorStyle.default.__hash}` + " " + "info-text"
|
|
38
|
+
}, infoBoxMessage)), /*#__PURE__*/_react.default.createElement(_style.default, {
|
|
39
|
+
id: _DimensionSelectorStyle.default.__hash
|
|
40
|
+
}, _DimensionSelectorStyle.default));
|
|
41
|
+
};
|
|
42
|
+
RightHeader.propTypes = {
|
|
43
|
+
infoBoxMessage: _propTypes.default.string
|
|
44
|
+
};
|
|
45
|
+
const PeriodTransfer = _ref2 => {
|
|
27
46
|
let {
|
|
28
47
|
onSelect,
|
|
29
48
|
dataTest,
|
|
30
|
-
|
|
49
|
+
selectedItems,
|
|
31
50
|
rightFooter,
|
|
32
51
|
excludedPeriodTypes,
|
|
33
|
-
periodsSettings
|
|
34
|
-
|
|
52
|
+
periodsSettings,
|
|
53
|
+
infoBoxMessage
|
|
54
|
+
} = _ref2;
|
|
35
55
|
const defaultRelativePeriodType = excludedPeriodTypes.includes(_index2.MONTHLY) ? (0, _relativePeriods.getRelativePeriodsOptionsById)(_index2.QUARTERLY) : (0, _relativePeriods.getRelativePeriodsOptionsById)(_index2.MONTHLY);
|
|
36
56
|
const defaultFixedPeriodType = excludedPeriodTypes.includes(_index2.MONTHLY) ? (0, _fixedPeriods.getFixedPeriodsOptionsById)(_index2.QUARTERLY, periodsSettings) : (0, _fixedPeriods.getFixedPeriodsOptionsById)(_index2.MONTHLY, periodsSettings);
|
|
37
57
|
const now = (0, _multiCalendarDates.getNowInCalendar)(periodsSettings.calendar);
|
|
@@ -44,7 +64,6 @@ const PeriodTransfer = _ref => {
|
|
|
44
64
|
reversePeriods: false
|
|
45
65
|
});
|
|
46
66
|
const [allPeriods, setAllPeriods] = (0, _react.useState)(defaultRelativePeriodType.getPeriods());
|
|
47
|
-
const [selectedPeriods, setSelectedPeriods] = (0, _react.useState)(initialSelectedPeriods);
|
|
48
67
|
const [isRelative, setIsRelative] = (0, _react.useState)(true);
|
|
49
68
|
const [relativeFilter, setRelativeFilter] = (0, _react.useState)({
|
|
50
69
|
periodType: defaultRelativePeriodType.id
|
|
@@ -53,6 +72,10 @@ const PeriodTransfer = _ref => {
|
|
|
53
72
|
periodType: defaultFixedPeriodType.id,
|
|
54
73
|
year: defaultFixedPeriodYear.toString()
|
|
55
74
|
});
|
|
75
|
+
const isActive = value => {
|
|
76
|
+
const item = selectedItems.find(item => item.id === value);
|
|
77
|
+
return !item || item.isActive;
|
|
78
|
+
};
|
|
56
79
|
const onIsRelativeClick = state => {
|
|
57
80
|
if (state !== isRelative) {
|
|
58
81
|
setIsRelative(state);
|
|
@@ -99,11 +122,6 @@ const PeriodTransfer = _ref => {
|
|
|
99
122
|
})), /*#__PURE__*/_react.default.createElement(_style.default, {
|
|
100
123
|
id: _DimensionSelectorStyle.default.__hash
|
|
101
124
|
}, _DimensionSelectorStyle.default));
|
|
102
|
-
const renderRightHeader = () => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("p", {
|
|
103
|
-
className: `jsx-${_DimensionSelectorStyle.default.__hash}` + " " + "rightHeader"
|
|
104
|
-
}, _index.default.t('Selected Periods')), /*#__PURE__*/_react.default.createElement(_style.default, {
|
|
105
|
-
id: _DimensionSelectorStyle.default.__hash
|
|
106
|
-
}, _DimensionSelectorStyle.default));
|
|
107
125
|
const onSelectFixedPeriods = filter => {
|
|
108
126
|
setFixedFilter(filter);
|
|
109
127
|
setAllPeriods((0, _fixedPeriods.getFixedPeriodsOptionsById)(filter.periodType, periodsSettings).getPeriods(fixedPeriodConfig(Number(filter.year)), periodsSettings));
|
|
@@ -114,45 +132,58 @@ const PeriodTransfer = _ref => {
|
|
|
114
132
|
id: _DimensionSelectorStyle.default.__hash
|
|
115
133
|
}, _DimensionSelectorStyle.default));
|
|
116
134
|
return /*#__PURE__*/_react.default.createElement(_ui.Transfer, {
|
|
117
|
-
onChange:
|
|
135
|
+
onChange: _ref3 => {
|
|
118
136
|
let {
|
|
119
137
|
selected
|
|
120
|
-
} =
|
|
121
|
-
const formattedItems = selected.map(id =>
|
|
122
|
-
id
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
138
|
+
} = _ref3;
|
|
139
|
+
const formattedItems = selected.map(id => {
|
|
140
|
+
const matchingItem = [...allPeriods, ...selectedItems].find(item => item.id === id);
|
|
141
|
+
return {
|
|
142
|
+
id,
|
|
143
|
+
name: matchingItem.name,
|
|
144
|
+
isActive: matchingItem.isActive
|
|
145
|
+
};
|
|
146
|
+
});
|
|
126
147
|
onSelect(formattedItems);
|
|
127
148
|
},
|
|
128
|
-
selected:
|
|
149
|
+
selected: selectedItems.map(period => period.id),
|
|
129
150
|
leftHeader: renderLeftHeader(),
|
|
130
151
|
enableOrderChange: true,
|
|
131
152
|
height: _dimensionSelectorHelper.TRANSFER_HEIGHT,
|
|
132
153
|
optionsWidth: _dimensionSelectorHelper.TRANSFER_OPTIONS_WIDTH,
|
|
133
154
|
selectedWidth: _dimensionSelectorHelper.TRANSFER_SELECTED_WIDTH,
|
|
134
155
|
selectedEmptyComponent: renderEmptySelection(),
|
|
135
|
-
rightHeader:
|
|
156
|
+
rightHeader: /*#__PURE__*/_react.default.createElement(RightHeader, {
|
|
157
|
+
infoBoxMessage: infoBoxMessage
|
|
158
|
+
}),
|
|
136
159
|
rightFooter: rightFooter,
|
|
137
|
-
options: [...allPeriods, ...
|
|
160
|
+
options: [...allPeriods, ...selectedItems].map(_ref4 => {
|
|
138
161
|
let {
|
|
139
162
|
id,
|
|
140
163
|
name
|
|
141
|
-
} =
|
|
164
|
+
} = _ref4;
|
|
142
165
|
return {
|
|
143
166
|
label: name,
|
|
144
167
|
value: id
|
|
145
168
|
};
|
|
146
169
|
}),
|
|
147
|
-
renderOption:
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
170
|
+
renderOption: _ref5 => {
|
|
171
|
+
let {
|
|
172
|
+
value,
|
|
173
|
+
...props
|
|
174
|
+
} = _ref5;
|
|
175
|
+
return /*#__PURE__*/_react.default.createElement(_TransferOption.TransferOption, _extends({}, props, {
|
|
176
|
+
value: value,
|
|
177
|
+
active: isActive(value),
|
|
178
|
+
icon: _PeriodIcon.default,
|
|
179
|
+
dataTest: `${dataTest}-transfer-option`
|
|
180
|
+
}));
|
|
181
|
+
},
|
|
151
182
|
dataTest: `${dataTest}-transfer`
|
|
152
183
|
});
|
|
153
184
|
};
|
|
154
185
|
PeriodTransfer.defaultProps = {
|
|
155
|
-
|
|
186
|
+
selectedItems: [],
|
|
156
187
|
excludedPeriodTypes: [],
|
|
157
188
|
periodsSettings: {
|
|
158
189
|
calendar: 'gregory',
|
|
@@ -163,15 +194,17 @@ PeriodTransfer.propTypes = {
|
|
|
163
194
|
onSelect: _propTypes.default.func.isRequired,
|
|
164
195
|
dataTest: _propTypes.default.string,
|
|
165
196
|
excludedPeriodTypes: _propTypes.default.arrayOf(_propTypes.default.string),
|
|
166
|
-
|
|
167
|
-
id: _propTypes.default.string,
|
|
168
|
-
name: _propTypes.default.string
|
|
169
|
-
})),
|
|
197
|
+
infoBoxMessage: _propTypes.default.string,
|
|
170
198
|
periodsSettings: _propTypes.default.shape({
|
|
171
199
|
calendar: _propTypes.default.string,
|
|
172
200
|
locale: _propTypes.default.string
|
|
173
201
|
}),
|
|
174
|
-
rightFooter: _propTypes.default.node
|
|
202
|
+
rightFooter: _propTypes.default.node,
|
|
203
|
+
selectedItems: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
204
|
+
id: _propTypes.default.string,
|
|
205
|
+
isActive: _propTypes.default.bool,
|
|
206
|
+
name: _propTypes.default.string
|
|
207
|
+
}))
|
|
175
208
|
};
|
|
176
209
|
var _default = PeriodTransfer;
|
|
177
210
|
exports.default = _default;
|
package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap
CHANGED
|
@@ -4,7 +4,6 @@ exports[`The Period Dimension component matches the snapshot 1`] = `
|
|
|
4
4
|
<PeriodTransfer
|
|
5
5
|
dataTest="period-dimension"
|
|
6
6
|
excludedPeriodTypes={Array []}
|
|
7
|
-
initialSelectedPeriods={Array []}
|
|
8
7
|
onSelect={[Function]}
|
|
9
8
|
periodsSettings={
|
|
10
9
|
Object {
|
|
@@ -13,5 +12,6 @@ exports[`The Period Dimension component matches the snapshot 1`] = `
|
|
|
13
12
|
}
|
|
14
13
|
}
|
|
15
14
|
rightFooter={<React.Fragment />}
|
|
15
|
+
selectedItems={Array []}
|
|
16
16
|
/>
|
|
17
17
|
`;
|
package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/PeriodSelector.spec.js.snap
CHANGED
|
@@ -77,18 +77,7 @@ exports[`The Period Selector component matches the snapshot 1`] = `
|
|
|
77
77
|
optionsWidth="420px"
|
|
78
78
|
renderOption={[Function]}
|
|
79
79
|
rightFooter={<React.Fragment />}
|
|
80
|
-
rightHeader={
|
|
81
|
-
<React.Fragment>
|
|
82
|
-
<p
|
|
83
|
-
className="rightHeader"
|
|
84
|
-
>
|
|
85
|
-
Selected Periods
|
|
86
|
-
</p>
|
|
87
|
-
<style>
|
|
88
|
-
|
|
89
|
-
</style>
|
|
90
|
-
</React.Fragment>
|
|
91
|
-
}
|
|
80
|
+
rightHeader={<RightHeader />}
|
|
92
81
|
selected={Array []}
|
|
93
82
|
selectedEmptyComponent={
|
|
94
83
|
<React.Fragment>
|
|
@@ -24,7 +24,7 @@ const VisTypeIcon = _ref => {
|
|
|
24
24
|
}
|
|
25
25
|
case _visTypes.VIS_TYPE_PIVOT_TABLE:
|
|
26
26
|
{
|
|
27
|
-
VisIcon = useSmall ? _ui.
|
|
27
|
+
VisIcon = useSmall ? _ui.IconVisualizationPivotTable16 : _ui.IconVisualizationPivotTable24;
|
|
28
28
|
break;
|
|
29
29
|
}
|
|
30
30
|
case _visTypes.VIS_TYPE_BAR:
|
|
@@ -92,6 +92,11 @@ const VisTypeIcon = _ref => {
|
|
|
92
92
|
VisIcon = useSmall ? _ui.IconVisualizationScatter16 : _ui.IconVisualizationScatter24;
|
|
93
93
|
break;
|
|
94
94
|
}
|
|
95
|
+
case _visTypes.VIS_TYPE_OUTLIER_TABLE:
|
|
96
|
+
{
|
|
97
|
+
VisIcon = useSmall ? _ui.IconVisualizationOutlierTable16 : _ui.IconVisualizationOutlierTable24;
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
95
100
|
case _visTypes.VIS_TYPE_COLUMN:
|
|
96
101
|
default:
|
|
97
102
|
{
|
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
|
|
@@ -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;
|