@dhis2/analytics 26.8.6 → 26.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/build/cjs/__demo__/SingleValue.stories.js +706 -0
  2. package/build/cjs/components/PivotTable/PivotTableValueCell.js +6 -2
  3. package/build/cjs/components/PivotTable/styles/PivotTable.style.js +2 -2
  4. package/build/cjs/locales/en/translations.json +2 -0
  5. package/build/cjs/locales/lo/translations.json +16 -12
  6. package/build/cjs/modules/pivotTable/PivotTableEngine.js +59 -24
  7. package/build/cjs/modules/pivotTable/pivotTableConstants.js +6 -2
  8. package/build/cjs/modules/valueTypes.js +4 -1
  9. package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart/default.js +26 -0
  10. package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart/index.js +18 -0
  11. package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart/singleValue.js +19 -0
  12. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/index.js +36 -0
  13. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueBackgroundColor.js +12 -0
  14. package/build/cjs/visualizations/config/adapters/{dhis_dhis/value/index.js → dhis_highcharts/customSVGOptions/singleValue/getSingleValueFormattedValue.js} +8 -6
  15. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueLegendColor.js +11 -0
  16. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueSubtext.js +11 -0
  17. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTextColor.js +20 -0
  18. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTitleColor.js +26 -0
  19. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/index.js +31 -0
  20. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/index.js +24 -0
  21. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/index.js +18 -0
  22. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/addIconElement.js +34 -0
  23. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/checkIfFitsWithinContainer.js +19 -0
  24. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeLayoutRect.js +39 -0
  25. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeSpacingTop.js +21 -0
  26. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/constants.js +11 -0
  27. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/getAvailableSpace.js +14 -0
  28. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/index.js +48 -0
  29. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/positionElements.js +46 -0
  30. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/styles.js +109 -0
  31. package/build/cjs/visualizations/config/adapters/dhis_highcharts/exporting.js +30 -0
  32. package/build/cjs/visualizations/config/adapters/dhis_highcharts/index.js +33 -23
  33. package/build/cjs/visualizations/config/adapters/dhis_highcharts/lang.js +17 -0
  34. package/build/cjs/visualizations/config/adapters/dhis_highcharts/plotOptions.js +1 -1
  35. package/build/cjs/visualizations/config/adapters/dhis_highcharts/series/index.js +5 -1
  36. package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/__tests__/singleValue.spec.js +62 -0
  37. package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/index.js +56 -22
  38. package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/singleValue.js +27 -0
  39. package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/__tests__/singleValue.spec.js +44 -0
  40. package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/index.js +50 -22
  41. package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/singleValue.js +31 -0
  42. package/build/cjs/visualizations/config/adapters/dhis_highcharts/type.js +2 -0
  43. package/build/cjs/visualizations/config/adapters/dhis_highcharts/xAxis/index.js +1 -0
  44. package/build/cjs/visualizations/config/adapters/dhis_highcharts/yAxis/index.js +4 -5
  45. package/build/cjs/visualizations/config/adapters/index.js +2 -4
  46. package/build/cjs/visualizations/config/generators/highcharts/index.js +8 -0
  47. package/build/cjs/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/index.js +13 -0
  48. package/build/cjs/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/nonASCIIFont.js +17 -0
  49. package/build/cjs/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/textShadow.js +289 -0
  50. package/build/cjs/visualizations/config/generators/index.js +2 -4
  51. package/build/cjs/visualizations/store/adapters/dhis_highcharts/index.js +3 -0
  52. package/build/cjs/visualizations/store/adapters/dhis_highcharts/singleValue.js +10 -0
  53. package/build/cjs/visualizations/store/adapters/index.js +2 -4
  54. package/build/cjs/visualizations/util/shouldUseContrastColor.js +24 -0
  55. package/build/es/__demo__/SingleValue.stories.js +702 -0
  56. package/build/es/components/PivotTable/PivotTableValueCell.js +6 -2
  57. package/build/es/components/PivotTable/styles/PivotTable.style.js +2 -2
  58. package/build/es/locales/en/translations.json +2 -0
  59. package/build/es/locales/lo/translations.json +16 -12
  60. package/build/es/modules/pivotTable/PivotTableEngine.js +61 -26
  61. package/build/es/modules/pivotTable/pivotTableConstants.js +4 -1
  62. package/build/es/modules/valueTypes.js +2 -0
  63. package/build/es/visualizations/config/adapters/dhis_highcharts/chart/default.js +19 -0
  64. package/build/es/visualizations/config/adapters/dhis_highcharts/chart/index.js +11 -0
  65. package/build/es/visualizations/config/adapters/dhis_highcharts/chart/singleValue.js +12 -0
  66. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/index.js +29 -0
  67. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueBackgroundColor.js +6 -0
  68. package/build/es/visualizations/config/adapters/{dhis_dhis/value/index.js → dhis_highcharts/customSVGOptions/singleValue/getSingleValueFormattedValue.js} +4 -4
  69. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueLegendColor.js +5 -0
  70. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueSubtext.js +5 -0
  71. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTextColor.js +14 -0
  72. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTitleColor.js +20 -0
  73. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/index.js +25 -0
  74. package/build/es/visualizations/config/adapters/dhis_highcharts/events/index.js +16 -0
  75. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/index.js +11 -0
  76. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/addIconElement.js +28 -0
  77. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/checkIfFitsWithinContainer.js +13 -0
  78. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeLayoutRect.js +33 -0
  79. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeSpacingTop.js +15 -0
  80. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/constants.js +4 -0
  81. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/getAvailableSpace.js +8 -0
  82. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/index.js +42 -0
  83. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/positionElements.js +40 -0
  84. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/styles.js +101 -0
  85. package/build/es/visualizations/config/adapters/dhis_highcharts/exporting.js +23 -0
  86. package/build/es/visualizations/config/adapters/dhis_highcharts/index.js +23 -13
  87. package/build/es/visualizations/config/adapters/dhis_highcharts/lang.js +11 -0
  88. package/build/es/visualizations/config/adapters/dhis_highcharts/plotOptions.js +1 -1
  89. package/build/es/visualizations/config/adapters/dhis_highcharts/series/index.js +6 -2
  90. package/build/es/visualizations/config/adapters/dhis_highcharts/subtitle/__tests__/singleValue.spec.js +59 -0
  91. package/build/es/visualizations/config/adapters/dhis_highcharts/subtitle/index.js +56 -24
  92. package/build/es/visualizations/config/adapters/dhis_highcharts/subtitle/singleValue.js +14 -0
  93. package/build/es/visualizations/config/adapters/dhis_highcharts/title/__tests__/singleValue.spec.js +42 -0
  94. package/build/es/visualizations/config/adapters/dhis_highcharts/title/index.js +52 -24
  95. package/build/es/visualizations/config/adapters/dhis_highcharts/title/singleValue.js +18 -0
  96. package/build/es/visualizations/config/adapters/dhis_highcharts/type.js +3 -1
  97. package/build/es/visualizations/config/adapters/dhis_highcharts/xAxis/index.js +2 -1
  98. package/build/es/visualizations/config/adapters/dhis_highcharts/yAxis/index.js +5 -6
  99. package/build/es/visualizations/config/adapters/index.js +1 -3
  100. package/build/es/visualizations/config/generators/highcharts/index.js +8 -0
  101. package/build/es/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/index.js +6 -0
  102. package/build/es/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/nonASCIIFont.js +11 -0
  103. package/build/es/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/textShadow.js +283 -0
  104. package/build/es/visualizations/config/generators/index.js +1 -3
  105. package/build/es/visualizations/store/adapters/dhis_highcharts/index.js +4 -1
  106. package/build/es/visualizations/store/adapters/dhis_highcharts/singleValue.js +4 -0
  107. package/build/es/visualizations/store/adapters/index.js +1 -3
  108. package/build/es/visualizations/util/shouldUseContrastColor.js +17 -0
  109. package/package.json +1 -2
  110. package/build/cjs/visualizations/config/adapters/dhis_dhis/index.js +0 -39
  111. package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/index.spec.js +0 -49
  112. package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/singleValue.spec.js +0 -15
  113. package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/index.js +0 -34
  114. package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/singleValue.js +0 -11
  115. package/build/cjs/visualizations/config/adapters/dhis_dhis/title/__tests__/index.spec.js +0 -39
  116. package/build/cjs/visualizations/config/adapters/dhis_dhis/title/__tests__/singleValue.spec.js +0 -17
  117. package/build/cjs/visualizations/config/adapters/dhis_dhis/title/index.js +0 -31
  118. package/build/cjs/visualizations/config/adapters/dhis_dhis/title/singleValue.js +0 -18
  119. package/build/cjs/visualizations/config/adapters/dhis_dhis/type.js +0 -19
  120. package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart.js +0 -39
  121. package/build/cjs/visualizations/config/generators/dhis/index.js +0 -28
  122. package/build/cjs/visualizations/config/generators/dhis/singleValue.js +0 -359
  123. package/build/cjs/visualizations/store/adapters/dhis_dhis/index.js +0 -83
  124. package/build/cjs/visualizations/store/adapters/dhis_dhis/singleValue.js +0 -10
  125. package/build/es/visualizations/config/adapters/dhis_dhis/index.js +0 -30
  126. package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/index.spec.js +0 -46
  127. package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/singleValue.spec.js +0 -12
  128. package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/index.js +0 -27
  129. package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/singleValue.js +0 -4
  130. package/build/es/visualizations/config/adapters/dhis_dhis/title/__tests__/index.spec.js +0 -36
  131. package/build/es/visualizations/config/adapters/dhis_dhis/title/__tests__/singleValue.spec.js +0 -14
  132. package/build/es/visualizations/config/adapters/dhis_dhis/title/index.js +0 -24
  133. package/build/es/visualizations/config/adapters/dhis_dhis/title/singleValue.js +0 -11
  134. package/build/es/visualizations/config/adapters/dhis_dhis/type.js +0 -13
  135. package/build/es/visualizations/config/adapters/dhis_highcharts/chart.js +0 -32
  136. package/build/es/visualizations/config/generators/dhis/index.js +0 -21
  137. package/build/es/visualizations/config/generators/dhis/singleValue.js +0 -353
  138. package/build/es/visualizations/store/adapters/dhis_dhis/index.js +0 -76
  139. package/build/es/visualizations/store/adapters/dhis_dhis/singleValue.js +0 -4
@@ -10,6 +10,9 @@ var _visTypes = require("../../../../../modules/visTypes.js");
10
10
  var _getFilterText = _interopRequireDefault(require("../../../../util/getFilterText.js"));
11
11
  var _getTextAlignOption = require("../getTextAlignOption.js");
12
12
  var _yearOverYear = _interopRequireDefault(require("../title/yearOverYear.js"));
13
+ var _singleValue = _interopRequireWildcard(require("./singleValue.js"));
14
+ 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); }
15
+ 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; }
13
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
17
  const DASHBOARD_SUBTITLE = {
15
18
  style: {
@@ -23,18 +26,33 @@ const DASHBOARD_SUBTITLE = {
23
26
  }
24
27
  };
25
28
  function getDefault(layout, dashboard, filterTitle) {
26
- return {
27
- text: dashboard || (0, _isString.default)(layout.title) ? filterTitle : undefined
28
- };
29
+ return dashboard || (0, _isString.default)(layout.title) ? filterTitle : undefined;
29
30
  }
30
- function _default(series, layout, metaData, dashboard) {
31
- const fontStyle = (0, _fontStyle.mergeFontStyleWithDefault)(layout.fontStyle && layout.fontStyle[_fontStyle.FONT_STYLE_VISUALIZATION_SUBTITLE], _fontStyle.FONT_STYLE_VISUALIZATION_SUBTITLE);
32
- let subtitle = {
33
- text: undefined
34
- };
31
+ function _default(series, layout, metaData, extraOptions) {
35
32
  if (layout.hideSubtitle) {
36
33
  return null;
37
34
  }
35
+ const {
36
+ dashboard,
37
+ legendSets
38
+ } = extraOptions;
39
+ const legendOptions = layout.legend;
40
+ const fontStyle = (0, _fontStyle.mergeFontStyleWithDefault)(layout.fontStyle && layout.fontStyle[_fontStyle.FONT_STYLE_VISUALIZATION_SUBTITLE], _fontStyle.FONT_STYLE_VISUALIZATION_SUBTITLE);
41
+ const subtitle = Object.assign({
42
+ text: undefined
43
+ }, dashboard ? DASHBOARD_SUBTITLE : {
44
+ align: (0, _getTextAlignOption.getTextAlignOption)(fontStyle[_fontStyle.FONT_STYLE_OPTION_TEXT_ALIGN], _fontStyle.FONT_STYLE_VISUALIZATION_SUBTITLE, (0, _visTypes.isVerticalType)(layout.type)),
45
+ style: {
46
+ // DHIS2-578: dynamically truncate subtitle when it's taking more than 1 line
47
+ color: undefined,
48
+ fontSize: `${fontStyle[_fontStyle.FONT_STYLE_OPTION_FONT_SIZE]}px`,
49
+ fontWeight: fontStyle[_fontStyle.FONT_STYLE_OPTION_BOLD] ? _fontStyle.FONT_STYLE_OPTION_BOLD : 'normal',
50
+ fontStyle: fontStyle[_fontStyle.FONT_STYLE_OPTION_ITALIC] ? _fontStyle.FONT_STYLE_OPTION_ITALIC : 'normal',
51
+ whiteSpace: 'nowrap',
52
+ overflow: 'hidden',
53
+ textOverflow: 'ellipsis'
54
+ }
55
+ });
38
56
 
39
57
  // DHIS2-578: allow for optional custom subtitle
40
58
  const customSubtitle = layout.subtitle && layout.displaySubtitle || layout.subtitle;
@@ -43,6 +61,9 @@ function _default(series, layout, metaData, dashboard) {
43
61
  } else {
44
62
  const filterTitle = (0, _getFilterText.default)(layout.filters, metaData);
45
63
  switch (layout.type) {
64
+ case _visTypes.VIS_TYPE_SINGLE_VALUE:
65
+ subtitle.text = (0, _singleValue.default)(layout, metaData);
66
+ break;
46
67
  case _visTypes.VIS_TYPE_YEAR_OVER_YEAR_LINE:
47
68
  case _visTypes.VIS_TYPE_YEAR_OVER_YEAR_COLUMN:
48
69
  subtitle.text = (0, _yearOverYear.default)(layout, metaData, Boolean(!dashboard));
@@ -51,20 +72,33 @@ function _default(series, layout, metaData, dashboard) {
51
72
  subtitle.text = filterTitle;
52
73
  break;
53
74
  default:
54
- subtitle = getDefault(layout, dashboard, filterTitle);
75
+ subtitle.text = getDefault(layout, dashboard, filterTitle);
55
76
  }
56
77
  }
57
- return subtitle ? Object.assign({}, dashboard ? DASHBOARD_SUBTITLE : {
58
- align: (0, _getTextAlignOption.getTextAlignOption)(fontStyle[_fontStyle.FONT_STYLE_OPTION_TEXT_ALIGN], _fontStyle.FONT_STYLE_VISUALIZATION_SUBTITLE, (0, _visTypes.isVerticalType)(layout.type)),
59
- style: {
60
- // DHIS2-578: dynamically truncate subtitle when it's taking more than 1 line
61
- color: fontStyle[_fontStyle.FONT_STYLE_OPTION_TEXT_COLOR],
62
- fontSize: `${fontStyle[_fontStyle.FONT_STYLE_OPTION_FONT_SIZE]}px`,
63
- fontWeight: fontStyle[_fontStyle.FONT_STYLE_OPTION_BOLD] ? _fontStyle.FONT_STYLE_OPTION_BOLD : 'normal',
64
- fontStyle: fontStyle[_fontStyle.FONT_STYLE_OPTION_ITALIC] ? _fontStyle.FONT_STYLE_OPTION_ITALIC : 'normal',
65
- whiteSpace: 'nowrap',
66
- overflow: 'hidden',
67
- textOverflow: 'ellipsis'
68
- }
69
- }, subtitle) : subtitle;
78
+ switch (layout.type) {
79
+ case _visTypes.VIS_TYPE_SINGLE_VALUE:
80
+ {
81
+ var _defaultFontStyle$FON, _layout$fontStyle, _layout$fontStyle$FON;
82
+ const defaultColor = _fontStyle.defaultFontStyle === null || _fontStyle.defaultFontStyle === void 0 ? void 0 : (_defaultFontStyle$FON = _fontStyle.defaultFontStyle[_fontStyle.FONT_STYLE_VISUALIZATION_SUBTITLE]) === null || _defaultFontStyle$FON === void 0 ? void 0 : _defaultFontStyle$FON[_fontStyle.FONT_STYLE_OPTION_TEXT_COLOR];
83
+ const customColor = layout === null || layout === void 0 ? void 0 : (_layout$fontStyle = layout.fontStyle) === null || _layout$fontStyle === void 0 ? void 0 : (_layout$fontStyle$FON = _layout$fontStyle[_fontStyle.FONT_STYLE_VISUALIZATION_SUBTITLE]) === null || _layout$fontStyle$FON === void 0 ? void 0 : _layout$fontStyle$FON[_fontStyle.FONT_STYLE_OPTION_TEXT_COLOR];
84
+ subtitle.style.color = (0, _singleValue.getSingleValueSubtitleColor)(customColor, defaultColor, series[0], legendOptions, legendSets);
85
+ if (dashboard) {
86
+ // Single value subtitle text should be multiline
87
+ /* TODO: The default color of the subtitle now is #4a5768 but the
88
+ * original implementation used #666, which is a lighter grey.
89
+ * If we want to keep this color, changes are needed here. */
90
+ Object.assign(subtitle.style, {
91
+ wordWrap: 'normal',
92
+ whiteSpace: 'normal',
93
+ overflow: 'visible',
94
+ textOverflow: 'initial'
95
+ });
96
+ }
97
+ }
98
+ break;
99
+ default:
100
+ subtitle.style.color = fontStyle[_fontStyle.FONT_STYLE_OPTION_TEXT_COLOR];
101
+ break;
102
+ }
103
+ return subtitle;
70
104
  }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = getSingleValueSubtitle;
7
+ Object.defineProperty(exports, "getSingleValueSubtitleColor", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _getSingleValueTitleColor.getSingleValueTitleColor;
11
+ }
12
+ });
13
+ var _getFilterText = _interopRequireDefault(require("../../../../util/getFilterText.js"));
14
+ var _getSingleValueTitleColor = require("../customSVGOptions/singleValue/getSingleValueTitleColor.js");
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ function getSingleValueSubtitle(layout, metaData) {
17
+ if (layout.hideSubtitle || 1 === 0) {
18
+ return '';
19
+ }
20
+ if (typeof layout.subtitle === 'string' && layout.subtitle.length) {
21
+ return layout.subtitle;
22
+ }
23
+ if (layout.filters) {
24
+ return (0, _getFilterText.default)(layout.filters, metaData);
25
+ }
26
+ return '';
27
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ var _singleValue = require("../singleValue.js");
4
+ jest.mock('../../../../../util/getFilterText', () => () => 'The filter text');
5
+ describe('getSingleValueTitle', () => {
6
+ it('returns empty title when flag hideTitle exists', () => {
7
+ expect((0, _singleValue.getSingleValueTitleText)({
8
+ hideTitle: true
9
+ })).toEqual('');
10
+ });
11
+ it('returns the title provided in the layout', () => {
12
+ const title = 'The title was already set';
13
+ expect((0, _singleValue.getSingleValueTitleText)({
14
+ title
15
+ })).toEqual(title);
16
+ });
17
+ it('returns null when layout does not have columns', () => {
18
+ expect((0, _singleValue.getSingleValueTitleText)({})).toEqual('');
19
+ });
20
+ it('returns the filter text based on column items', () => {
21
+ expect((0, _singleValue.getSingleValueTitleText)({
22
+ columns: [{
23
+ items: [{}]
24
+ }]
25
+ })).toEqual('The filter text');
26
+ });
27
+ describe('not dashboard', () => {
28
+ it('returns filter text as title', () => {
29
+ expect((0, _singleValue.getSingleValueTitleText)({
30
+ columns: [{
31
+ items: [{}]
32
+ }],
33
+ filters: []
34
+ }, {}, false)).toEqual('The filter text');
35
+ });
36
+ });
37
+ describe('dashboard', () => {
38
+ it('returns empty string', () => {
39
+ expect((0, _singleValue.getSingleValueTitleText)({
40
+ filters: {}
41
+ }, {}, true)).toEqual('');
42
+ });
43
+ });
44
+ });
@@ -10,6 +10,7 @@ var _visTypes = require("../../../../../modules/visTypes.js");
10
10
  var _getFilterText = _interopRequireDefault(require("../../../../util/getFilterText.js"));
11
11
  var _getTextAlignOption = require("../getTextAlignOption.js");
12
12
  var _scatter = _interopRequireDefault(require("./scatter.js"));
13
+ var _singleValue = require("./singleValue.js");
13
14
  var _yearOverYear = _interopRequireDefault(require("./yearOverYear.js"));
14
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
16
  const DASHBOARD_TITLE_STYLE = {
@@ -30,19 +31,41 @@ function getDefault(layout, metaData, dashboard) {
30
31
  }
31
32
  return null;
32
33
  }
33
- function _default(layout, metaData, dashboard) {
34
- const fontStyle = (0, _fontStyle.mergeFontStyleWithDefault)(layout.fontStyle && layout.fontStyle[_fontStyle.FONT_STYLE_VISUALIZATION_TITLE], _fontStyle.FONT_STYLE_VISUALIZATION_TITLE);
35
- const title = {
36
- text: undefined
37
- };
34
+ function _default(layout, metaData, extraOptions, series) {
38
35
  if (layout.hideTitle) {
39
- return title;
36
+ return {
37
+ text: undefined
38
+ };
40
39
  }
41
- const customTitle = layout.title && layout.displayTitle || layout.title;
42
- if ((0, _isString.default)(customTitle) && customTitle.length) {
43
- title.text = customTitle;
40
+ const {
41
+ dashboard,
42
+ legendSets
43
+ } = extraOptions;
44
+ const legendOptions = layout.legend;
45
+ const fontStyle = (0, _fontStyle.mergeFontStyleWithDefault)(layout.fontStyle && layout.fontStyle[_fontStyle.FONT_STYLE_VISUALIZATION_TITLE], _fontStyle.FONT_STYLE_VISUALIZATION_TITLE);
46
+ const title = Object.assign({
47
+ text: undefined
48
+ }, dashboard ? DASHBOARD_TITLE_STYLE : {
49
+ margin: 30,
50
+ align: (0, _getTextAlignOption.getTextAlignOption)(fontStyle[_fontStyle.FONT_STYLE_OPTION_TEXT_ALIGN], _fontStyle.FONT_STYLE_VISUALIZATION_TITLE, (0, _visTypes.isVerticalType)(layout.type)),
51
+ style: {
52
+ color: undefined,
53
+ fontSize: `${fontStyle[_fontStyle.FONT_STYLE_OPTION_FONT_SIZE]}px`,
54
+ fontWeight: fontStyle[_fontStyle.FONT_STYLE_OPTION_BOLD] ? _fontStyle.FONT_STYLE_OPTION_BOLD : 'normal',
55
+ fontStyle: fontStyle[_fontStyle.FONT_STYLE_OPTION_ITALIC] ? _fontStyle.FONT_STYLE_OPTION_ITALIC : 'normal',
56
+ whiteSpace: 'nowrap',
57
+ overflow: 'hidden',
58
+ textOverflow: 'ellipsis'
59
+ }
60
+ });
61
+ const customTitleText = layout.title && layout.displayTitle || layout.title;
62
+ if ((0, _isString.default)(customTitleText) && customTitleText.length) {
63
+ title.text = customTitleText;
44
64
  } else {
45
65
  switch (layout.type) {
66
+ case _visTypes.VIS_TYPE_SINGLE_VALUE:
67
+ title.text = (0, _singleValue.getSingleValueTitleText)(layout, metaData, dashboard);
68
+ break;
46
69
  case _visTypes.VIS_TYPE_GAUGE:
47
70
  case _visTypes.VIS_TYPE_YEAR_OVER_YEAR_LINE:
48
71
  case _visTypes.VIS_TYPE_YEAR_OVER_YEAR_COLUMN:
@@ -56,17 +79,22 @@ function _default(layout, metaData, dashboard) {
56
79
  break;
57
80
  }
58
81
  }
59
- return Object.assign({}, dashboard ? DASHBOARD_TITLE_STYLE : {
60
- margin: 30,
61
- align: (0, _getTextAlignOption.getTextAlignOption)(fontStyle[_fontStyle.FONT_STYLE_OPTION_TEXT_ALIGN], _fontStyle.FONT_STYLE_VISUALIZATION_TITLE, (0, _visTypes.isVerticalType)(layout.type)),
62
- style: {
63
- color: fontStyle[_fontStyle.FONT_STYLE_OPTION_TEXT_COLOR],
64
- fontSize: `${fontStyle[_fontStyle.FONT_STYLE_OPTION_FONT_SIZE]}px`,
65
- fontWeight: fontStyle[_fontStyle.FONT_STYLE_OPTION_BOLD] ? _fontStyle.FONT_STYLE_OPTION_BOLD : 'normal',
66
- fontStyle: fontStyle[_fontStyle.FONT_STYLE_OPTION_ITALIC] ? _fontStyle.FONT_STYLE_OPTION_ITALIC : 'normal',
67
- whiteSpace: 'nowrap',
68
- overflow: 'hidden',
69
- textOverflow: 'ellipsis'
70
- }
71
- }, title);
82
+ switch (layout.type) {
83
+ case _visTypes.VIS_TYPE_SINGLE_VALUE:
84
+ {
85
+ var _defaultFontStyle$FON, _layout$fontStyle, _layout$fontStyle$FON;
86
+ const defaultColor = _fontStyle.defaultFontStyle === null || _fontStyle.defaultFontStyle === void 0 ? void 0 : (_defaultFontStyle$FON = _fontStyle.defaultFontStyle[_fontStyle.FONT_STYLE_VISUALIZATION_TITLE]) === null || _defaultFontStyle$FON === void 0 ? void 0 : _defaultFontStyle$FON[_fontStyle.FONT_STYLE_OPTION_TEXT_COLOR];
87
+ const customColor = layout === null || layout === void 0 ? void 0 : (_layout$fontStyle = layout.fontStyle) === null || _layout$fontStyle === void 0 ? void 0 : (_layout$fontStyle$FON = _layout$fontStyle[_fontStyle.FONT_STYLE_VISUALIZATION_TITLE]) === null || _layout$fontStyle$FON === void 0 ? void 0 : _layout$fontStyle$FON[_fontStyle.FONT_STYLE_OPTION_TEXT_COLOR];
88
+ title.style.color = (0, _singleValue.getSingleValueTitleColor)(customColor, defaultColor, series[0], legendOptions, legendSets);
89
+ if (dashboard) {
90
+ // TODO: is this always what we want?
91
+ title.style.fontWeight = 'normal';
92
+ }
93
+ }
94
+ break;
95
+ default:
96
+ title.style.color = fontStyle[_fontStyle.FONT_STYLE_OPTION_TEXT_COLOR];
97
+ break;
98
+ }
99
+ return title;
72
100
  }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "getSingleValueTitleColor", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _getSingleValueTitleColor.getSingleValueTitleColor;
10
+ }
11
+ });
12
+ exports.getSingleValueTitleText = getSingleValueTitleText;
13
+ var _getFilterText = _interopRequireDefault(require("../../../../util/getFilterText.js"));
14
+ var _getSingleValueTitleColor = require("../customSVGOptions/singleValue/getSingleValueTitleColor.js");
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ function getSingleValueTitleText(layout, metaData) {
17
+ if (layout.hideTitle) {
18
+ return '';
19
+ }
20
+ if (typeof layout.title === 'string' && layout.title.length) {
21
+ return layout.title;
22
+ }
23
+ if (layout.columns) {
24
+ const firstItem = layout.columns[0].items[0];
25
+ const column = Object.assign({}, layout.columns[0], {
26
+ items: [firstItem]
27
+ });
28
+ return (0, _getFilterText.default)([column], metaData);
29
+ }
30
+ return '';
31
+ }
@@ -40,6 +40,8 @@ function _default(type) {
40
40
  type: 'scatter',
41
41
  zoomType: 'xy'
42
42
  };
43
+ case _visTypes.VIS_TYPE_SINGLE_VALUE:
44
+ return {};
43
45
  case _visTypes.VIS_TYPE_COLUMN:
44
46
  case _visTypes.VIS_TYPE_STACKED_COLUMN:
45
47
  case _visTypes.VIS_TYPE_YEAR_OVER_YEAR_COLUMN:
@@ -54,6 +54,7 @@ function _default(store, layout, extraOptions, series) {
54
54
  switch (layout.type) {
55
55
  case _visTypes.VIS_TYPE_PIE:
56
56
  case _visTypes.VIS_TYPE_GAUGE:
57
+ case _visTypes.VIS_TYPE_SINGLE_VALUE:
57
58
  xAxis = noAxis();
58
59
  break;
59
60
  case _visTypes.VIS_TYPE_YEAR_OVER_YEAR_LINE:
@@ -107,13 +107,12 @@ function getDefault(layout, series, extraOptions) {
107
107
  return axes;
108
108
  }
109
109
  function _default(layout, series, extraOptions) {
110
- let yAxis;
111
110
  switch (layout.type) {
111
+ case _visTypes.VIS_TYPE_SINGLE_VALUE:
112
+ return null;
112
113
  case _visTypes.VIS_TYPE_GAUGE:
113
- yAxis = (0, _gauge.default)(layout, series, extraOptions.legendSets[0]);
114
- break;
114
+ return (0, _gauge.default)(layout, series, extraOptions.legendSets[0]);
115
115
  default:
116
- yAxis = getDefault(layout, series, extraOptions);
116
+ return getDefault(layout, series, extraOptions);
117
117
  }
118
- return yAxis;
119
118
  }
@@ -4,11 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _index = _interopRequireDefault(require("./dhis_dhis/index.js"));
8
- var _index2 = _interopRequireDefault(require("./dhis_highcharts/index.js"));
7
+ var _index = _interopRequireDefault(require("./dhis_highcharts/index.js"));
9
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
9
  var _default = {
11
- dhis_highcharts: _index2.default,
12
- dhis_dhis: _index.default
10
+ dhis_highcharts: _index.default
13
11
  };
14
12
  exports.default = _default;
@@ -9,16 +9,24 @@ var _highchartsMore = _interopRequireDefault(require("highcharts/highcharts-more
9
9
  var _boost = _interopRequireDefault(require("highcharts/modules/boost"));
10
10
  var _exporting = _interopRequireDefault(require("highcharts/modules/exporting"));
11
11
  var _noDataToDisplay = _interopRequireDefault(require("highcharts/modules/no-data-to-display"));
12
+ var _offlineExporting = _interopRequireDefault(require("highcharts/modules/offline-exporting"));
12
13
  var _patternFill = _interopRequireDefault(require("highcharts/modules/pattern-fill"));
13
14
  var _solidGauge = _interopRequireDefault(require("highcharts/modules/solid-gauge"));
15
+ var _index = _interopRequireDefault(require("./pdfExportBugFixPlugin/index.js"));
14
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
17
  // apply
16
18
  (0, _highchartsMore.default)(_highcharts.default);
17
19
  (0, _solidGauge.default)(_highcharts.default);
18
20
  (0, _noDataToDisplay.default)(_highcharts.default);
19
21
  (0, _exporting.default)(_highcharts.default);
22
+ (0, _offlineExporting.default)(_highcharts.default);
20
23
  (0, _patternFill.default)(_highcharts.default);
21
24
  (0, _boost.default)(_highcharts.default);
25
+ (0, _index.default)(_highcharts.default);
26
+
27
+ /* Whitelist some additional SVG attributes here. Without this,
28
+ * the PDF export for the SingleValue visualization breaks. */
29
+ _highcharts.default.AST.allowedAttributes.push('fill-rule', 'clip-rule');
22
30
  function drawLegendSymbolWrap() {
23
31
  const pick = _highcharts.default.pick;
24
32
  _highcharts.default.wrap(_highcharts.default.seriesTypes.column.prototype, 'drawLegendSymbol', function (proceed, legend, item) {
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = _default;
7
+ var _nonASCIIFont = _interopRequireDefault(require("./nonASCIIFont.js"));
8
+ var _textShadow = _interopRequireDefault(require("./textShadow.js"));
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ function _default(H) {
11
+ (0, _textShadow.default)(H);
12
+ (0, _nonASCIIFont.default)(H);
13
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = _default;
7
+ /* This is a workaround for https://github.com/highcharts/highcharts/issues/22008
8
+ * We add some transparent text in a non-ASCII script to the chart to prevent
9
+ * the chart from being exported in a serif font */
10
+
11
+ function _default(H) {
12
+ H.addEvent(H.Chart, 'load', function () {
13
+ this.renderer.text('모', 20, 20).attr({
14
+ opacity: 0
15
+ }).add();
16
+ });
17
+ }