@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.
Files changed (41) hide show
  1. package/build/cjs/__demo__/DimensionsPanel.stories.js +0 -1
  2. package/build/cjs/api/analytics/Analytics.js +7 -0
  3. package/build/cjs/api/analytics/AnalyticsBase.js +24 -6
  4. package/build/cjs/api/analytics/AnalyticsRequest.js +33 -10
  5. package/build/cjs/api/analytics/AnalyticsRequestBase.js +3 -1
  6. package/build/cjs/api/analytics/AnalyticsRequestPropertiesMixin.js +19 -0
  7. package/build/cjs/api/analytics/AnalyticsTrackedEntities.js +31 -0
  8. package/build/cjs/api/analytics/utils.js +23 -2
  9. package/build/cjs/assets/DynamicDimensionIcon.js +38 -12
  10. package/build/cjs/components/DimensionsPanel/List/DimensionItem.js +32 -44
  11. package/build/cjs/components/DimensionsPanel/List/OptionsButton.js +6 -7
  12. package/build/cjs/components/DimensionsPanel/List/RecommendedIcon.js +2 -1
  13. package/build/cjs/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap +361 -238
  14. package/build/cjs/components/DimensionsPanel/List/styles/DimensionItem.style.js +67 -5
  15. package/build/cjs/components/DimensionsPanel/List/styles/DimensionList.style.js +2 -2
  16. package/build/cjs/components/DimensionsPanel/List/styles/RecommendedIcon.style.js +4 -4
  17. package/build/cjs/components/DimensionsPanel/styles/DimensionsPanel.style.js +1 -1
  18. package/build/cjs/locales/lo/translations.json +8 -3
  19. package/build/cjs/modules/layout/dimension.js +9 -2
  20. package/build/cjs/modules/layout/dimensionCreate.js +3 -0
  21. package/build/es/__demo__/DimensionsPanel.stories.js +0 -1
  22. package/build/es/api/analytics/Analytics.js +7 -0
  23. package/build/es/api/analytics/AnalyticsBase.js +24 -6
  24. package/build/es/api/analytics/AnalyticsRequest.js +33 -10
  25. package/build/es/api/analytics/AnalyticsRequestBase.js +3 -1
  26. package/build/es/api/analytics/AnalyticsRequestPropertiesMixin.js +19 -0
  27. package/build/es/api/analytics/AnalyticsTrackedEntities.js +24 -0
  28. package/build/es/api/analytics/utils.js +20 -1
  29. package/build/es/assets/DynamicDimensionIcon.js +38 -12
  30. package/build/es/components/DimensionsPanel/List/DimensionItem.js +33 -45
  31. package/build/es/components/DimensionsPanel/List/OptionsButton.js +6 -7
  32. package/build/es/components/DimensionsPanel/List/RecommendedIcon.js +2 -1
  33. package/build/es/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap +361 -238
  34. package/build/es/components/DimensionsPanel/List/styles/DimensionItem.style.js +66 -4
  35. package/build/es/components/DimensionsPanel/List/styles/DimensionList.style.js +2 -2
  36. package/build/es/components/DimensionsPanel/List/styles/RecommendedIcon.style.js +4 -4
  37. package/build/es/components/DimensionsPanel/styles/DimensionsPanel.style.js +1 -1
  38. package/build/es/locales/lo/translations.json +8 -3
  39. package/build/es/modules/layout/dimension.js +7 -1
  40. package/build/es/modules/layout/dimensionCreate.js +4 -1
  41. 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 [path, program].filter(Boolean).join('/');
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 [path, program].filter(Boolean).join('/');
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 [path, program].filter(Boolean).join('/');
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
- request = request.addDimension(dimension.replace(/\./, `[${index}].`));
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(dimension, (_d$items = d.items) === null || _d$items === void 0 ? void 0 : _d$items.map(item => item.id));
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 = (_f$programStage = f.programStage) !== null && _f$programStage !== void 0 && _f$programStage.id ? `${f.programStage.id}.${f.dimension}` : f.dimension;
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
- request = request.addFilter(filterString.replace(/\./, `[${index}].`));
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(filterString, (_f$items2 = f.items) === null || _f$items2 === void 0 ? void 0 : _f$items2.map(item => item.id));
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(e => !!e).join('/');
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: "16",
12
- height: "16",
13
- fill: "none",
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("path", {
16
- clipRule: "evenodd",
17
- d: "m4.832 5.674 2.831-1.11a.913.913 0 0 1 .673 0l2.83 1.11a.548.548 0 0 1 .334.517V9.81a.548.548 0 0 1-.332.517l-2.831 1.11a.92.92 0 0 1-.673 0l-2.83-1.11a.548.548 0 0 1-.334-.517V6.19a.548.548 0 0 1 .332-.517Z",
18
- stroke: "#212934",
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: "M8 7.228 4.822 5.982M8 7.228l3.178-1.246M8 11.281V7.228",
23
- stroke: "#212934",
24
- strokeLinecap: "round",
25
- strokeLinejoin: "round"
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 = _interopRequireDefault(require("./styles/DimensionItem.style.js"));
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
- className: "fixedDimensionIcon"
42
+ style: _DimensionItemStyle.styles.fixedDimensionIcon
45
43
  }) : /*#__PURE__*/_react.default.createElement(_DynamicDimensionIcon.default, {
46
- className: "dynamic-dimension-icon"
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(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ui.CssVariables, {
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: `jsx-${_DimensionItemStyle.default.__hash}` + " " + (rest && rest.className != null && rest.className || (0, _classnames.default)('item', {
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
- "data-test": `${dataTest}-button-${id}`,
108
- className: `jsx-${_DimensionItemStyle.default.__hash}` + " " + "label"
98
+ style: _DimensionItemStyle.styles.label,
99
+ "data-test": `${dataTest}-button-${id}`
109
100
  }, /*#__PURE__*/_react.default.createElement("div", {
110
- className: `jsx-${_DimensionItemStyle.default.__hash}` + " " + "iconWrapper"
101
+ style: _DimensionItemStyle.styles.iconWrapper
111
102
  }, Icon), /*#__PURE__*/_react.default.createElement("div", {
112
- className: `jsx-${_DimensionItemStyle.default.__hash}` + " " + "labelWrapper"
113
- }, /*#__PURE__*/_react.default.createElement("span", {
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
- }))), onOptionsClick ? /*#__PURE__*/_react.default.createElement("div", {
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, isLocked && /*#__PURE__*/_react.default.createElement("div", {
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(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("button", {
17
- onClick: onClick,
18
- className: "jsx-2728765288"
19
- }, /*#__PURE__*/_react.default.createElement(_ui.IconMore16, null)), /*#__PURE__*/_react.default.createElement(_style.default, {
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