@dhis2/analytics 26.3.0-alpha.3 → 999.9.9-TE-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/__demo__/DimensionsPanel.stories.js +0 -1
- package/build/cjs/api/analytics/Analytics.js +7 -0
- package/build/cjs/api/analytics/AnalyticsBase.js +24 -6
- package/build/cjs/api/analytics/AnalyticsRequest.js +33 -10
- package/build/cjs/api/analytics/AnalyticsRequestBase.js +3 -1
- package/build/cjs/api/analytics/AnalyticsRequestPropertiesMixin.js +19 -0
- package/build/cjs/api/analytics/AnalyticsTrackedEntities.js +31 -0
- package/build/cjs/api/analytics/utils.js +23 -2
- package/build/cjs/assets/DynamicDimensionIcon.js +38 -12
- package/build/cjs/components/DimensionsPanel/List/DimensionItem.js +32 -44
- package/build/cjs/components/DimensionsPanel/List/OptionsButton.js +6 -7
- package/build/cjs/components/DimensionsPanel/List/RecommendedIcon.js +2 -1
- package/build/cjs/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap +361 -238
- package/build/cjs/components/DimensionsPanel/List/styles/DimensionItem.style.js +67 -5
- package/build/cjs/components/DimensionsPanel/List/styles/DimensionList.style.js +2 -2
- package/build/cjs/components/DimensionsPanel/List/styles/RecommendedIcon.style.js +4 -4
- package/build/cjs/components/DimensionsPanel/styles/DimensionsPanel.style.js +1 -1
- package/build/cjs/locales/lo/translations.json +8 -3
- package/build/cjs/modules/layout/dimension.js +9 -2
- package/build/cjs/modules/layout/dimensionCreate.js +3 -0
- package/build/es/__demo__/DimensionsPanel.stories.js +0 -1
- package/build/es/api/analytics/Analytics.js +7 -0
- package/build/es/api/analytics/AnalyticsBase.js +24 -6
- package/build/es/api/analytics/AnalyticsRequest.js +33 -10
- package/build/es/api/analytics/AnalyticsRequestBase.js +3 -1
- package/build/es/api/analytics/AnalyticsRequestPropertiesMixin.js +19 -0
- package/build/es/api/analytics/AnalyticsTrackedEntities.js +24 -0
- package/build/es/api/analytics/utils.js +20 -1
- package/build/es/assets/DynamicDimensionIcon.js +38 -12
- package/build/es/components/DimensionsPanel/List/DimensionItem.js +33 -45
- package/build/es/components/DimensionsPanel/List/OptionsButton.js +6 -7
- package/build/es/components/DimensionsPanel/List/RecommendedIcon.js +2 -1
- package/build/es/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap +361 -238
- package/build/es/components/DimensionsPanel/List/styles/DimensionItem.style.js +66 -4
- package/build/es/components/DimensionsPanel/List/styles/DimensionList.style.js +2 -2
- package/build/es/components/DimensionsPanel/List/styles/RecommendedIcon.style.js +4 -4
- package/build/es/components/DimensionsPanel/styles/DimensionsPanel.style.js +1 -1
- package/build/es/locales/lo/translations.json +8 -3
- package/build/es/modules/layout/dimension.js +7 -1
- package/build/es/modules/layout/dimensionCreate.js +4 -1
- package/package.json +1 -1
|
@@ -65,7 +65,6 @@ const onDimensionClick = () => alert('click');
|
|
|
65
65
|
return /*#__PURE__*/_react2.default.createElement(_DimensionsPanel.default, {
|
|
66
66
|
dimensions: [...fixedDimensions, ...dynamicDimensions],
|
|
67
67
|
onDimensionClick: onDimensionClick,
|
|
68
|
-
selectedIds: [_predefinedDimensions.DIMENSION_ID_DATA],
|
|
69
68
|
lockedDimension: dimension => dimension === _predefinedDimensions.DIMENSION_ID_DATA
|
|
70
69
|
});
|
|
71
70
|
});
|
|
@@ -9,6 +9,7 @@ var _AnalyticsEnrollments = _interopRequireDefault(require("./AnalyticsEnrollmen
|
|
|
9
9
|
var _AnalyticsEvents = _interopRequireDefault(require("./AnalyticsEvents.js"));
|
|
10
10
|
var _AnalyticsRequest = _interopRequireDefault(require("./AnalyticsRequest.js"));
|
|
11
11
|
var _AnalyticsResponse = _interopRequireDefault(require("./AnalyticsResponse.js"));
|
|
12
|
+
var _AnalyticsTrackedEntities = _interopRequireDefault(require("./AnalyticsTrackedEntities.js"));
|
|
12
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
14
|
/**
|
|
14
15
|
* @module analytics
|
|
@@ -19,6 +20,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
19
20
|
* Analytics class used to request analytics data from Web API.
|
|
20
21
|
*
|
|
21
22
|
* @requires analytics.AnalyticsAggregate
|
|
23
|
+
* @requires analytics.AnalyticsTrackedEntities
|
|
24
|
+
* @requires analytics.AnalyticsEnrollments
|
|
22
25
|
* @requires analytics.AnalyticsEvents
|
|
23
26
|
* @requires analytics.AnalyticsRequest
|
|
24
27
|
* @requires analytics.AnalyticsResponse
|
|
@@ -38,6 +41,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
38
41
|
class Analytics {
|
|
39
42
|
/**
|
|
40
43
|
* @param {!module:analytics.AnalyticsAggregate} analyticsAggregate The AnalyticsAggregate instance
|
|
44
|
+
* @param {!module:analytics.AnalyticsTrackedEntities} analyticsTrackedEntities The AnalyticsTrackedEntities instance
|
|
41
45
|
* @param {!module:analytics.AnalyticsEnrollments} analyticsEnrollments The AnalyticsEnrollments instance
|
|
42
46
|
* @param {!module:analytics.AnalyticsEvents} analyticsEvents The AnalyticsEvents instance
|
|
43
47
|
* @param {!module:analytics.AnalyticsRequest} analyticsRequest The AnalyticsRequest class
|
|
@@ -46,12 +50,14 @@ class Analytics {
|
|
|
46
50
|
constructor(_ref) {
|
|
47
51
|
let {
|
|
48
52
|
aggregate,
|
|
53
|
+
trackedEntities,
|
|
49
54
|
enrollments,
|
|
50
55
|
events,
|
|
51
56
|
request,
|
|
52
57
|
response
|
|
53
58
|
} = _ref;
|
|
54
59
|
this.aggregate = aggregate;
|
|
60
|
+
this.trackedEntities = trackedEntities;
|
|
55
61
|
this.enrollments = enrollments;
|
|
56
62
|
this.events = events;
|
|
57
63
|
this.request = request;
|
|
@@ -74,6 +80,7 @@ class Analytics {
|
|
|
74
80
|
if (!Analytics.getAnalytics.analytics) {
|
|
75
81
|
Analytics.getAnalytics.analytics = new Analytics({
|
|
76
82
|
aggregate: new _AnalyticsAggregate.default(dataEngine),
|
|
83
|
+
trackedEntities: new _AnalyticsTrackedEntities.default(dataEngine),
|
|
77
84
|
enrollments: new _AnalyticsEnrollments.default(dataEngine),
|
|
78
85
|
events: new _AnalyticsEvents.default(dataEngine),
|
|
79
86
|
request: _AnalyticsRequest.default,
|
|
@@ -6,15 +6,21 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _sortBy = _interopRequireDefault(require("lodash/sortBy"));
|
|
8
8
|
var _AnalyticsRequest = _interopRequireDefault(require("./AnalyticsRequest.js"));
|
|
9
|
+
var _utils = require("./utils.js");
|
|
9
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
11
|
const analyticsQuery = {
|
|
11
12
|
resource: 'analytics',
|
|
12
13
|
id: _ref => {
|
|
13
14
|
let {
|
|
14
15
|
path,
|
|
15
|
-
program
|
|
16
|
+
program,
|
|
17
|
+
trackedEntityType
|
|
16
18
|
} = _ref;
|
|
17
|
-
return
|
|
19
|
+
return (0, _utils.formatRequestPath)({
|
|
20
|
+
path,
|
|
21
|
+
program,
|
|
22
|
+
trackedEntityType
|
|
23
|
+
});
|
|
18
24
|
},
|
|
19
25
|
params: _ref2 => {
|
|
20
26
|
let {
|
|
@@ -34,9 +40,14 @@ const analyticsDataQuery = {
|
|
|
34
40
|
id: _ref3 => {
|
|
35
41
|
let {
|
|
36
42
|
path,
|
|
37
|
-
program
|
|
43
|
+
program,
|
|
44
|
+
trackedEntityType
|
|
38
45
|
} = _ref3;
|
|
39
|
-
return
|
|
46
|
+
return (0, _utils.formatRequestPath)({
|
|
47
|
+
path,
|
|
48
|
+
program,
|
|
49
|
+
trackedEntityType
|
|
50
|
+
});
|
|
40
51
|
},
|
|
41
52
|
params: _ref4 => {
|
|
42
53
|
let {
|
|
@@ -58,9 +69,14 @@ const analyticsMetaDataQuery = {
|
|
|
58
69
|
id: _ref5 => {
|
|
59
70
|
let {
|
|
60
71
|
path,
|
|
61
|
-
program
|
|
72
|
+
program,
|
|
73
|
+
trackedEntityType
|
|
62
74
|
} = _ref5;
|
|
63
|
-
return
|
|
75
|
+
return (0, _utils.formatRequestPath)({
|
|
76
|
+
path,
|
|
77
|
+
program,
|
|
78
|
+
trackedEntityType
|
|
79
|
+
});
|
|
64
80
|
},
|
|
65
81
|
params: _ref6 => {
|
|
66
82
|
let {
|
|
@@ -152,6 +168,7 @@ class AnalyticsBase {
|
|
|
152
168
|
variables: {
|
|
153
169
|
path: req.path,
|
|
154
170
|
program: req.program,
|
|
171
|
+
trackedEntityType: req.trackedEntityType,
|
|
155
172
|
dimensions: generateDimensionStrings(req.dimensions),
|
|
156
173
|
filters: generateDimensionStrings(req.filters),
|
|
157
174
|
parameters: req.parameters,
|
|
@@ -194,6 +211,7 @@ class AnalyticsBase {
|
|
|
194
211
|
variables: {
|
|
195
212
|
path: req.path,
|
|
196
213
|
program: req.program,
|
|
214
|
+
trackedEntityType: req.trackedEntityType,
|
|
197
215
|
dimensions: generateDimensionStrings(req.dimensions, options),
|
|
198
216
|
filters: generateDimensionStrings(req.filters, options),
|
|
199
217
|
parameters: req.parameters
|
|
@@ -10,6 +10,7 @@ var _AnalyticsRequestBase = _interopRequireDefault(require("./AnalyticsRequestBa
|
|
|
10
10
|
var _AnalyticsRequestDimensionsMixin = _interopRequireDefault(require("./AnalyticsRequestDimensionsMixin.js"));
|
|
11
11
|
var _AnalyticsRequestFiltersMixin = _interopRequireDefault(require("./AnalyticsRequestFiltersMixin.js"));
|
|
12
12
|
var _AnalyticsRequestPropertiesMixin = _interopRequireDefault(require("./AnalyticsRequestPropertiesMixin.js"));
|
|
13
|
+
var _utils = require("./utils.js");
|
|
13
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
15
|
/**
|
|
15
16
|
* @description
|
|
@@ -47,6 +48,7 @@ class AnalyticsRequest extends (0, _AnalyticsRequestDimensionsMixin.default)((0,
|
|
|
47
48
|
fromVisualization(visualization) {
|
|
48
49
|
let passFilterAsDimension = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
49
50
|
let request = this;
|
|
51
|
+
const outputType = visualization.outputType;
|
|
50
52
|
|
|
51
53
|
// extract dimensions from visualization
|
|
52
54
|
const columns = visualization.columns || [];
|
|
@@ -57,19 +59,28 @@ class AnalyticsRequest extends (0, _AnalyticsRequestDimensionsMixin.default)((0,
|
|
|
57
59
|
if ((_d$legendSet = d.legendSet) !== null && _d$legendSet !== void 0 && _d$legendSet.id) {
|
|
58
60
|
dimension += `-${d.legendSet.id}`;
|
|
59
61
|
}
|
|
60
|
-
if ((_d$programStage = d.programStage) !== null && _d$programStage !== void 0 && _d$programStage.id) {
|
|
61
|
-
dimension = `${d.programStage.id}.${dimension}`;
|
|
62
|
-
}
|
|
63
62
|
if (d.filter) {
|
|
64
63
|
dimension += `:${d.filter}`;
|
|
65
64
|
}
|
|
65
|
+
const programStageId = (_d$programStage = d.programStage) === null || _d$programStage === void 0 ? void 0 : _d$programStage.id;
|
|
66
66
|
if ((_d$repetition = d.repetition) !== null && _d$repetition !== void 0 && (_d$repetition$indexes = _d$repetition.indexes) !== null && _d$repetition$indexes !== void 0 && _d$repetition$indexes.length) {
|
|
67
67
|
d.repetition.indexes.forEach(index => {
|
|
68
|
-
|
|
68
|
+
var _d$program;
|
|
69
|
+
request = request.addDimension((0, _utils.formatDimension)({
|
|
70
|
+
programId: (_d$program = d.program) === null || _d$program === void 0 ? void 0 : _d$program.id,
|
|
71
|
+
programStageId: `${programStageId}[${index}]`,
|
|
72
|
+
dimension,
|
|
73
|
+
outputType
|
|
74
|
+
}));
|
|
69
75
|
});
|
|
70
76
|
} else {
|
|
71
|
-
var _d$items;
|
|
72
|
-
request = request.addDimension(
|
|
77
|
+
var _d$program2, _d$items;
|
|
78
|
+
request = request.addDimension((0, _utils.formatDimension)({
|
|
79
|
+
programId: (_d$program2 = d.program) === null || _d$program2 === void 0 ? void 0 : _d$program2.id,
|
|
80
|
+
programStageId,
|
|
81
|
+
dimension,
|
|
82
|
+
outputType
|
|
83
|
+
}), (_d$items = d.items) === null || _d$items === void 0 ? void 0 : _d$items.map(item => item.id));
|
|
73
84
|
}
|
|
74
85
|
});
|
|
75
86
|
|
|
@@ -84,17 +95,29 @@ class AnalyticsRequest extends (0, _AnalyticsRequestDimensionsMixin.default)((0,
|
|
|
84
95
|
request = request.addDimension(f.dimension, (_f$items = f.items) === null || _f$items === void 0 ? void 0 : _f$items.map(item => item.id));
|
|
85
96
|
} else {
|
|
86
97
|
var _f$programStage, _f$repetition, _f$repetition$indexes;
|
|
87
|
-
let filterString =
|
|
98
|
+
let filterString = f.dimension;
|
|
88
99
|
if (f.filter) {
|
|
89
100
|
filterString += `:${f.filter}`;
|
|
90
101
|
}
|
|
102
|
+
const programStageId = (_f$programStage = f.programStage) === null || _f$programStage === void 0 ? void 0 : _f$programStage.id;
|
|
91
103
|
if ((_f$repetition = f.repetition) !== null && _f$repetition !== void 0 && (_f$repetition$indexes = _f$repetition.indexes) !== null && _f$repetition$indexes !== void 0 && _f$repetition$indexes.length) {
|
|
92
104
|
f.repetition.indexes.forEach(index => {
|
|
93
|
-
|
|
105
|
+
var _f$program;
|
|
106
|
+
request = request.addFilter((0, _utils.formatDimension)({
|
|
107
|
+
programId: (_f$program = f.program) === null || _f$program === void 0 ? void 0 : _f$program.id,
|
|
108
|
+
programStageId: `${programStageId}[${index}]`,
|
|
109
|
+
dimension: filterString,
|
|
110
|
+
outputType
|
|
111
|
+
}));
|
|
94
112
|
});
|
|
95
113
|
} else {
|
|
96
|
-
var _f$items2;
|
|
97
|
-
request = request.addFilter(
|
|
114
|
+
var _f$program2, _f$items2;
|
|
115
|
+
request = request.addFilter((0, _utils.formatDimension)({
|
|
116
|
+
programId: (_f$program2 = f.program) === null || _f$program2 === void 0 ? void 0 : _f$program2.id,
|
|
117
|
+
programStageId,
|
|
118
|
+
dimension: filterString,
|
|
119
|
+
outputType
|
|
120
|
+
}), (_f$items2 = f.items) === null || _f$items2 === void 0 ? void 0 : _f$items2.map(item => item.id));
|
|
98
121
|
}
|
|
99
122
|
}
|
|
100
123
|
});
|
|
@@ -24,6 +24,7 @@ class AnalyticsRequestBase {
|
|
|
24
24
|
format = 'json',
|
|
25
25
|
path,
|
|
26
26
|
program,
|
|
27
|
+
trackedEntityType,
|
|
27
28
|
dimensions = [],
|
|
28
29
|
filters = [],
|
|
29
30
|
parameters = {}
|
|
@@ -32,6 +33,7 @@ class AnalyticsRequestBase {
|
|
|
32
33
|
this.format = format.toLowerCase();
|
|
33
34
|
this.path = path;
|
|
34
35
|
this.program = program;
|
|
36
|
+
this.trackedEntityType = trackedEntityType;
|
|
35
37
|
this.dimensions = dimensions;
|
|
36
38
|
this.filters = filters;
|
|
37
39
|
this.parameters = {
|
|
@@ -70,7 +72,7 @@ class AnalyticsRequestBase {
|
|
|
70
72
|
}
|
|
71
73
|
return dimension;
|
|
72
74
|
});
|
|
73
|
-
const endPoint = [this.endPoint, this.path, this.program].filter(
|
|
75
|
+
const endPoint = [this.endPoint, this.path, this.program, this.trackedEntityType].filter(Boolean).join('/');
|
|
74
76
|
return `${endPoint}.${this.format}?dimension=${encodedDimensions.join('&dimension=')}`;
|
|
75
77
|
}
|
|
76
78
|
|
|
@@ -497,6 +497,25 @@ class extends base {
|
|
|
497
497
|
return new _AnalyticsRequest.default(this);
|
|
498
498
|
}
|
|
499
499
|
|
|
500
|
+
/**
|
|
501
|
+
* Sets the tracked entity type for the request.
|
|
502
|
+
* It appends the tracked entity type id to the request's path.
|
|
503
|
+
*
|
|
504
|
+
* @param {!String} trackedEntityType The tracked entity type id
|
|
505
|
+
*
|
|
506
|
+
* @returns {AnalyticsRequest} A new instance of the class for chaining purposes
|
|
507
|
+
*
|
|
508
|
+
* @example
|
|
509
|
+
* const req = new analytics.request()
|
|
510
|
+
* .withTrackedEntityType('nEenWmSyUEp');
|
|
511
|
+
*/
|
|
512
|
+
withTrackedEntityType(trackedEntityType) {
|
|
513
|
+
if (trackedEntityType) {
|
|
514
|
+
this.trackedEntityType = trackedEntityType;
|
|
515
|
+
}
|
|
516
|
+
return new _AnalyticsRequest.default(this);
|
|
517
|
+
}
|
|
518
|
+
|
|
500
519
|
/**
|
|
501
520
|
* Sets the program for the request.
|
|
502
521
|
* It appends the program id to the request's path.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _AnalyticsBase = _interopRequireDefault(require("./AnalyticsBase.js"));
|
|
8
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
+
/**
|
|
10
|
+
* @extends module:analytics.AnalyticsBase
|
|
11
|
+
*
|
|
12
|
+
* @description
|
|
13
|
+
* Analytics tracked entities class used to request analytics tracked entities data from Web API.
|
|
14
|
+
*
|
|
15
|
+
* @memberof module:analytics
|
|
16
|
+
*/
|
|
17
|
+
class AnalyticsTrackedEntities extends _AnalyticsBase.default {
|
|
18
|
+
/**
|
|
19
|
+
* @param {!AnalyticsRequest} req Request object
|
|
20
|
+
*
|
|
21
|
+
* @returns {Promise} Promise that resolves with the analytics query data from the api.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
// TODO: provide working example
|
|
25
|
+
*/
|
|
26
|
+
getQuery(req) {
|
|
27
|
+
return this.fetch(req.withPath('trackedEntities/query'));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
var _default = AnalyticsTrackedEntities;
|
|
31
|
+
exports.default = _default;
|
|
@@ -3,10 +3,31 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.customEncodeURIComponent = void 0;
|
|
6
|
+
exports.formatRequestPath = exports.formatDimension = exports.customEncodeURIComponent = void 0;
|
|
7
7
|
// Define our very own special list of characters that we don't want to encode in the URI
|
|
8
8
|
const whitelistURI = ',&$=/;:';
|
|
9
9
|
const whitelistURICodes = whitelistURI.split('').map(c => encodeURIComponent(c));
|
|
10
10
|
const whitelistRegExp = new RegExp(`(?:${whitelistURICodes.join('|')})`, 'g');
|
|
11
11
|
const customEncodeURIComponent = uri => encodeURIComponent(uri).replace(whitelistRegExp, decodeURIComponent);
|
|
12
|
-
exports.customEncodeURIComponent = customEncodeURIComponent;
|
|
12
|
+
exports.customEncodeURIComponent = customEncodeURIComponent;
|
|
13
|
+
const formatRequestPath = _ref => {
|
|
14
|
+
let {
|
|
15
|
+
path,
|
|
16
|
+
program,
|
|
17
|
+
trackedEntityType
|
|
18
|
+
} = _ref;
|
|
19
|
+
return [path, program, trackedEntityType].filter(Boolean).join('/');
|
|
20
|
+
};
|
|
21
|
+
exports.formatRequestPath = formatRequestPath;
|
|
22
|
+
const formatDimension = _ref2 => {
|
|
23
|
+
let {
|
|
24
|
+
outputType,
|
|
25
|
+
programId,
|
|
26
|
+
programStageId,
|
|
27
|
+
dimension
|
|
28
|
+
} = _ref2;
|
|
29
|
+
return [
|
|
30
|
+
// XXX it would be clearer to have this consistent with what is sent in the request as for EVENT/ENROLLMENT
|
|
31
|
+
outputType === 'TRACKED_ENTITY_INSTANCE' ? programId : undefined, programStageId, dimension].filter(Boolean).join('.');
|
|
32
|
+
};
|
|
33
|
+
exports.formatDimension = formatDimension;
|
|
@@ -8,22 +8,48 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
8
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
9
|
const DynamicDimensionIcon = () => {
|
|
10
10
|
return /*#__PURE__*/_react.default.createElement("svg", {
|
|
11
|
-
width: "
|
|
12
|
-
height: "
|
|
13
|
-
|
|
11
|
+
width: "16px",
|
|
12
|
+
height: "16px",
|
|
13
|
+
viewBox: "0 0 16 16",
|
|
14
|
+
version: "1.1",
|
|
14
15
|
xmlns: "http://www.w3.org/2000/svg"
|
|
15
|
-
}, /*#__PURE__*/_react.default.createElement("
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
}, /*#__PURE__*/_react.default.createElement("g", {
|
|
17
|
+
id: "Exp",
|
|
18
|
+
stroke: "none",
|
|
19
|
+
strokeWidth: "1",
|
|
20
|
+
fill: "none",
|
|
21
|
+
fillRule: "evenodd"
|
|
22
|
+
}, /*#__PURE__*/_react.default.createElement("g", {
|
|
23
|
+
id: "Artboard",
|
|
24
|
+
transform: "translate(-80.000000, -9.000000)"
|
|
25
|
+
}, /*#__PURE__*/_react.default.createElement("g", {
|
|
26
|
+
id: "icon_dimension_new",
|
|
27
|
+
transform: "translate(80.000000, 9.000000)"
|
|
28
|
+
}, /*#__PURE__*/_react.default.createElement("rect", {
|
|
29
|
+
id: "frame",
|
|
30
|
+
x: "0",
|
|
31
|
+
y: "0",
|
|
32
|
+
width: "16",
|
|
33
|
+
height: "16"
|
|
34
|
+
}), /*#__PURE__*/_react.default.createElement("g", {
|
|
35
|
+
id: "module",
|
|
36
|
+
transform: "translate(4.000000, 4.000000)",
|
|
37
|
+
stroke: "#000000",
|
|
19
38
|
strokeLinecap: "round",
|
|
20
39
|
strokeLinejoin: "round"
|
|
40
|
+
}, /*#__PURE__*/_react.default.createElement("path", {
|
|
41
|
+
d: "M0.33209728,1.1742111 L3.16308174,0.0641666694 C3.37911767,-0.0213888898 3.61963794,-0.0213888898 3.83567387,0.0641666694 L6.66665833,1.1742111 C6.87300668,1.26220739 7.00497003,1.467 6.99984343,1.69127776 L6.99984343,5.30887771 C7.00517859,5.53285411 6.87376309,5.73756106 6.66790272,5.82594437 L3.83691826,6.93629991 C3.62076407,7.02123336 3.38048032,7.02123336 3.16432613,6.93629991 L0.333341668,5.82594437 C0.126993317,5.73794808 -0.00497002591,5.53315547 0.000156574133,5.30887771 L0.000156574133,1.69127776 C-0.00517858533,1.46730136 0.126236906,1.26259441 0.33209728,1.1742111 Z",
|
|
42
|
+
id: "Shape"
|
|
21
43
|
}), /*#__PURE__*/_react.default.createElement("path", {
|
|
22
|
-
d: "
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
44
|
+
d: "M3.5,2.72795833 L0.322,1.48195833",
|
|
45
|
+
id: "Shape"
|
|
46
|
+
}), /*#__PURE__*/_react.default.createElement("path", {
|
|
47
|
+
d: "M3.5,2.72795833 L6.678,1.48195833",
|
|
48
|
+
id: "Shape"
|
|
49
|
+
}), /*#__PURE__*/_react.default.createElement("path", {
|
|
50
|
+
d: "M3.5,6.78125 L3.5,2.72795833",
|
|
51
|
+
id: "Shape"
|
|
52
|
+
}))))));
|
|
27
53
|
};
|
|
28
54
|
var _default = DynamicDimensionIcon;
|
|
29
55
|
exports.default = _default;
|
|
@@ -4,16 +4,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _style = _interopRequireDefault(require("styled-jsx/style"));
|
|
8
7
|
var _ui = require("@dhis2/ui");
|
|
9
|
-
var _classnames = _interopRequireDefault(require("classnames"));
|
|
10
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
10
|
var _DynamicDimensionIcon = _interopRequireDefault(require("../../../assets/DynamicDimensionIcon.js"));
|
|
13
11
|
var _predefinedDimensions = require("../../../modules/predefinedDimensions.js");
|
|
14
12
|
var _OptionsButton = _interopRequireDefault(require("./OptionsButton.js"));
|
|
15
13
|
var _RecommendedIcon = _interopRequireDefault(require("./RecommendedIcon.js"));
|
|
16
|
-
var _DimensionItemStyle =
|
|
14
|
+
var _DimensionItemStyle = require("./styles/DimensionItem.style.js");
|
|
17
15
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
18
16
|
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; }
|
|
19
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -41,18 +39,23 @@ class DimensionItem extends _react.Component {
|
|
|
41
39
|
_defineProperty(this, "getDimensionIcon", () => {
|
|
42
40
|
const Icon = (0, _predefinedDimensions.getPredefinedDimensionProp)(this.props.id, 'icon');
|
|
43
41
|
return Icon ? /*#__PURE__*/_react.default.createElement(Icon, {
|
|
44
|
-
|
|
42
|
+
style: _DimensionItemStyle.styles.fixedDimensionIcon
|
|
45
43
|
}) : /*#__PURE__*/_react.default.createElement(_DynamicDimensionIcon.default, {
|
|
46
|
-
|
|
44
|
+
style: _DimensionItemStyle.styles.dynamicDimensionIcon
|
|
47
45
|
});
|
|
48
46
|
});
|
|
49
47
|
_defineProperty(this, "getDimensionType", () => {
|
|
50
48
|
const {
|
|
51
49
|
id,
|
|
52
|
-
name
|
|
50
|
+
name,
|
|
51
|
+
isDeactivated
|
|
53
52
|
} = this.props;
|
|
54
53
|
return /*#__PURE__*/_react.default.createElement("span", {
|
|
55
|
-
"data-dimensionid": id
|
|
54
|
+
"data-dimensionid": id,
|
|
55
|
+
style: {
|
|
56
|
+
..._DimensionItemStyle.styles.text,
|
|
57
|
+
...(isDeactivated ? _DimensionItemStyle.styles.textDeactivated : {})
|
|
58
|
+
}
|
|
56
59
|
}, name);
|
|
57
60
|
});
|
|
58
61
|
}
|
|
@@ -66,66 +69,51 @@ class DimensionItem extends _react.Component {
|
|
|
66
69
|
onClick,
|
|
67
70
|
onOptionsClick,
|
|
68
71
|
innerRef,
|
|
72
|
+
style,
|
|
69
73
|
dataTest,
|
|
70
|
-
className,
|
|
71
74
|
...rest
|
|
72
75
|
} = this.props;
|
|
73
76
|
const Icon = this.getDimensionIcon();
|
|
74
77
|
const Label = this.getDimensionType();
|
|
78
|
+
const itemStyle = isSelected && !isDeactivated ? {
|
|
79
|
+
..._DimensionItemStyle.styles.item,
|
|
80
|
+
..._DimensionItemStyle.styles.selected
|
|
81
|
+
} : _DimensionItemStyle.styles.item;
|
|
75
82
|
const optionsRef = /*#__PURE__*/(0, _react.createRef)();
|
|
76
|
-
const LockIcon = /*#__PURE__*/_react.default.createElement("svg", {
|
|
77
|
-
width: "7",
|
|
78
|
-
height: "9",
|
|
79
|
-
fill: "none",
|
|
80
|
-
xmlns: "http://www.w3.org/2000/svg"
|
|
81
|
-
}, /*#__PURE__*/_react.default.createElement("path", {
|
|
82
|
-
fillRule: "evenodd",
|
|
83
|
-
clipRule: "evenodd",
|
|
84
|
-
d: "M3.5 1A1.5 1.5 0 0 0 2 2.5V3h3v-.5A1.5 1.5 0 0 0 3.5 1ZM1 2.5V3H0v6h7V3H6v-.5a2.5 2.5 0 0 0-5 0ZM1 8V4h5v4H1Zm3-1V5H3v2h1Z",
|
|
85
|
-
fill: "none"
|
|
86
|
-
}));
|
|
87
83
|
const onLabelClick = () => {
|
|
88
84
|
if (!isDeactivated && !(0, _predefinedDimensions.getPredefinedDimensionProp)(id, _predefinedDimensions.DIMENSION_PROP_NO_ITEMS)) {
|
|
89
85
|
onClick(id);
|
|
90
86
|
}
|
|
91
87
|
};
|
|
92
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
93
|
-
colors: true
|
|
94
|
-
}), /*#__PURE__*/_react.default.createElement("li", _extends({
|
|
88
|
+
return /*#__PURE__*/_react.default.createElement("li", _extends({
|
|
95
89
|
onMouseOver: this.onMouseOver,
|
|
96
90
|
onMouseLeave: this.onMouseExit,
|
|
97
91
|
ref: innerRef,
|
|
92
|
+
style: Object.assign({}, itemStyle, style, !isDeactivated && _DimensionItemStyle.styles.clickable),
|
|
98
93
|
"data-test": dataTest,
|
|
99
94
|
onClick: onLabelClick
|
|
100
|
-
}, rest, {
|
|
101
|
-
className:
|
|
102
|
-
deactivated: isDeactivated,
|
|
103
|
-
selected: isSelected && !isDeactivated
|
|
104
|
-
}, className) || "")
|
|
105
|
-
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
95
|
+
}, rest), /*#__PURE__*/_react.default.createElement("div", {
|
|
96
|
+
className: "label",
|
|
106
97
|
tabIndex: 0,
|
|
107
|
-
|
|
108
|
-
|
|
98
|
+
style: _DimensionItemStyle.styles.label,
|
|
99
|
+
"data-test": `${dataTest}-button-${id}`
|
|
109
100
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
110
|
-
|
|
101
|
+
style: _DimensionItemStyle.styles.iconWrapper
|
|
111
102
|
}, Icon), /*#__PURE__*/_react.default.createElement("div", {
|
|
112
|
-
|
|
113
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
114
|
-
className: `jsx-${_DimensionItemStyle.default.__hash}` + " " + "labelText"
|
|
115
|
-
}, Label), /*#__PURE__*/_react.default.createElement(_RecommendedIcon.default, {
|
|
103
|
+
style: _DimensionItemStyle.styles.labelWrapper
|
|
104
|
+
}, Label, /*#__PURE__*/_react.default.createElement(_RecommendedIcon.default, {
|
|
116
105
|
isRecommended: isRecommended,
|
|
117
106
|
dataTest: `${dataTest}-recommended-icon`
|
|
118
|
-
}))
|
|
107
|
+
})), isLocked && /*#__PURE__*/_react.default.createElement("div", {
|
|
108
|
+
style: _DimensionItemStyle.styles.iconWrapper
|
|
109
|
+
}, /*#__PURE__*/_react.default.createElement(_ui.IconLock16, null))), onOptionsClick ? /*#__PURE__*/_react.default.createElement("div", {
|
|
110
|
+
style: _DimensionItemStyle.styles.optionsWrapper,
|
|
119
111
|
ref: optionsRef,
|
|
120
|
-
"data-test": `${dataTest}-menu-${id}
|
|
121
|
-
className: `jsx-${_DimensionItemStyle.default.__hash}` + " " + "optionsWrapper"
|
|
112
|
+
"data-test": `${dataTest}-menu-${id}`
|
|
122
113
|
}, this.state.mouseOver && !isDeactivated && !isLocked ? /*#__PURE__*/_react.default.createElement(_OptionsButton.default, {
|
|
114
|
+
style: _DimensionItemStyle.styles.optionsButton,
|
|
123
115
|
onClick: this.onOptionsClick(id, optionsRef)
|
|
124
|
-
}) : null) : null
|
|
125
|
-
className: `jsx-${_DimensionItemStyle.default.__hash}` + " " + "lockWrapper"
|
|
126
|
-
}, LockIcon)), /*#__PURE__*/_react.default.createElement(_style.default, {
|
|
127
|
-
id: _DimensionItemStyle.default.__hash
|
|
128
|
-
}, _DimensionItemStyle.default));
|
|
116
|
+
}) : null) : null);
|
|
129
117
|
}
|
|
130
118
|
}
|
|
131
119
|
DimensionItem.propTypes = {
|
|
@@ -133,12 +121,12 @@ DimensionItem.propTypes = {
|
|
|
133
121
|
isSelected: _propTypes.default.bool.isRequired,
|
|
134
122
|
// XXX
|
|
135
123
|
name: _propTypes.default.string.isRequired,
|
|
136
|
-
className: _propTypes.default.string,
|
|
137
124
|
dataTest: _propTypes.default.string,
|
|
138
125
|
innerRef: _propTypes.default.func,
|
|
139
126
|
isDeactivated: _propTypes.default.bool,
|
|
140
127
|
isLocked: _propTypes.default.bool,
|
|
141
128
|
isRecommended: _propTypes.default.bool,
|
|
129
|
+
style: _propTypes.default.object,
|
|
142
130
|
onClick: _propTypes.default.func,
|
|
143
131
|
onOptionsClick: _propTypes.default.func
|
|
144
132
|
};
|
|
@@ -4,23 +4,22 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _style = _interopRequireDefault(require("styled-jsx/style"));
|
|
8
7
|
var _ui = require("@dhis2/ui");
|
|
9
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
10
9
|
var _react = _interopRequireDefault(require("react"));
|
|
11
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
11
|
const OptionsButton = _ref => {
|
|
13
12
|
let {
|
|
13
|
+
style,
|
|
14
14
|
onClick
|
|
15
15
|
} = _ref;
|
|
16
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}, /*#__PURE__*/_react.default.createElement(_ui.IconMore16, null))
|
|
20
|
-
id: "2728765288"
|
|
21
|
-
}, ["button.jsx-2728765288{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;height:20px;width:20px;padding:0;border:none;background:none;outline:none;cursor:pointer;border-top-right-radius:2px;border-bottom-left-radius:2px;}", "button.jsx-2728765288:hover{background-color:rgba(0,0,0,0.09);}"]));
|
|
16
|
+
return /*#__PURE__*/_react.default.createElement("button", {
|
|
17
|
+
style: style,
|
|
18
|
+
onClick: onClick
|
|
19
|
+
}, /*#__PURE__*/_react.default.createElement(_ui.IconMore16, null));
|
|
22
20
|
};
|
|
23
21
|
OptionsButton.propTypes = {
|
|
22
|
+
style: _propTypes.default.object,
|
|
24
23
|
onClick: _propTypes.default.func
|
|
25
24
|
};
|
|
26
25
|
var _default = OptionsButton;
|
|
@@ -17,7 +17,8 @@ const RecommendedIcon = _ref => {
|
|
|
17
17
|
} = _ref;
|
|
18
18
|
return isRecommended ? /*#__PURE__*/_react.default.createElement(_ui.Tooltip, {
|
|
19
19
|
content: _index.default.t('Dimension recommended with selected data'),
|
|
20
|
-
placement: "bottom"
|
|
20
|
+
placement: "bottom",
|
|
21
|
+
maxWidth: 160
|
|
21
22
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
22
23
|
style: _RecommendedIconStyle.styles.recommendedIcon,
|
|
23
24
|
"data-test": dataTest
|