@dhis2/analytics 26.8.7 → 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 (127) hide show
  1. package/build/cjs/__demo__/SingleValue.stories.js +706 -0
  2. package/build/cjs/locales/lo/translations.json +16 -12
  3. package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart/default.js +26 -0
  4. package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart/index.js +18 -0
  5. package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart/singleValue.js +19 -0
  6. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/index.js +36 -0
  7. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueBackgroundColor.js +12 -0
  8. package/build/cjs/visualizations/config/adapters/{dhis_dhis/value/index.js → dhis_highcharts/customSVGOptions/singleValue/getSingleValueFormattedValue.js} +8 -6
  9. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueLegendColor.js +11 -0
  10. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueSubtext.js +11 -0
  11. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTextColor.js +20 -0
  12. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTitleColor.js +26 -0
  13. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/index.js +31 -0
  14. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/index.js +24 -0
  15. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/index.js +18 -0
  16. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/addIconElement.js +34 -0
  17. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/checkIfFitsWithinContainer.js +19 -0
  18. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeLayoutRect.js +39 -0
  19. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeSpacingTop.js +21 -0
  20. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/constants.js +11 -0
  21. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/getAvailableSpace.js +14 -0
  22. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/index.js +48 -0
  23. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/positionElements.js +46 -0
  24. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/styles.js +109 -0
  25. package/build/cjs/visualizations/config/adapters/dhis_highcharts/exporting.js +30 -0
  26. package/build/cjs/visualizations/config/adapters/dhis_highcharts/index.js +33 -23
  27. package/build/cjs/visualizations/config/adapters/dhis_highcharts/lang.js +17 -0
  28. package/build/cjs/visualizations/config/adapters/dhis_highcharts/plotOptions.js +1 -1
  29. package/build/cjs/visualizations/config/adapters/dhis_highcharts/series/index.js +5 -1
  30. package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/__tests__/singleValue.spec.js +62 -0
  31. package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/index.js +56 -22
  32. package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/singleValue.js +27 -0
  33. package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/__tests__/singleValue.spec.js +44 -0
  34. package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/index.js +50 -22
  35. package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/singleValue.js +31 -0
  36. package/build/cjs/visualizations/config/adapters/dhis_highcharts/type.js +2 -0
  37. package/build/cjs/visualizations/config/adapters/dhis_highcharts/xAxis/index.js +1 -0
  38. package/build/cjs/visualizations/config/adapters/dhis_highcharts/yAxis/index.js +4 -5
  39. package/build/cjs/visualizations/config/adapters/index.js +2 -4
  40. package/build/cjs/visualizations/config/generators/highcharts/index.js +8 -0
  41. package/build/cjs/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/index.js +13 -0
  42. package/build/cjs/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/nonASCIIFont.js +17 -0
  43. package/build/cjs/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/textShadow.js +289 -0
  44. package/build/cjs/visualizations/config/generators/index.js +2 -4
  45. package/build/cjs/visualizations/store/adapters/dhis_highcharts/index.js +3 -0
  46. package/build/cjs/visualizations/store/adapters/dhis_highcharts/singleValue.js +10 -0
  47. package/build/cjs/visualizations/store/adapters/index.js +2 -4
  48. package/build/cjs/visualizations/util/shouldUseContrastColor.js +24 -0
  49. package/build/es/__demo__/SingleValue.stories.js +702 -0
  50. package/build/es/locales/lo/translations.json +16 -12
  51. package/build/es/visualizations/config/adapters/dhis_highcharts/chart/default.js +19 -0
  52. package/build/es/visualizations/config/adapters/dhis_highcharts/chart/index.js +11 -0
  53. package/build/es/visualizations/config/adapters/dhis_highcharts/chart/singleValue.js +12 -0
  54. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/index.js +29 -0
  55. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueBackgroundColor.js +6 -0
  56. package/build/es/visualizations/config/adapters/{dhis_dhis/value/index.js → dhis_highcharts/customSVGOptions/singleValue/getSingleValueFormattedValue.js} +4 -4
  57. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueLegendColor.js +5 -0
  58. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueSubtext.js +5 -0
  59. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTextColor.js +14 -0
  60. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTitleColor.js +20 -0
  61. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/index.js +25 -0
  62. package/build/es/visualizations/config/adapters/dhis_highcharts/events/index.js +16 -0
  63. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/index.js +11 -0
  64. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/addIconElement.js +28 -0
  65. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/checkIfFitsWithinContainer.js +13 -0
  66. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeLayoutRect.js +33 -0
  67. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeSpacingTop.js +15 -0
  68. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/constants.js +4 -0
  69. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/getAvailableSpace.js +8 -0
  70. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/index.js +42 -0
  71. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/positionElements.js +40 -0
  72. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/styles.js +101 -0
  73. package/build/es/visualizations/config/adapters/dhis_highcharts/exporting.js +23 -0
  74. package/build/es/visualizations/config/adapters/dhis_highcharts/index.js +23 -13
  75. package/build/es/visualizations/config/adapters/dhis_highcharts/lang.js +11 -0
  76. package/build/es/visualizations/config/adapters/dhis_highcharts/plotOptions.js +1 -1
  77. package/build/es/visualizations/config/adapters/dhis_highcharts/series/index.js +6 -2
  78. package/build/es/visualizations/config/adapters/dhis_highcharts/subtitle/__tests__/singleValue.spec.js +59 -0
  79. package/build/es/visualizations/config/adapters/dhis_highcharts/subtitle/index.js +56 -24
  80. package/build/es/visualizations/config/adapters/dhis_highcharts/subtitle/singleValue.js +14 -0
  81. package/build/es/visualizations/config/adapters/dhis_highcharts/title/__tests__/singleValue.spec.js +42 -0
  82. package/build/es/visualizations/config/adapters/dhis_highcharts/title/index.js +52 -24
  83. package/build/es/visualizations/config/adapters/dhis_highcharts/title/singleValue.js +18 -0
  84. package/build/es/visualizations/config/adapters/dhis_highcharts/type.js +3 -1
  85. package/build/es/visualizations/config/adapters/dhis_highcharts/xAxis/index.js +2 -1
  86. package/build/es/visualizations/config/adapters/dhis_highcharts/yAxis/index.js +5 -6
  87. package/build/es/visualizations/config/adapters/index.js +1 -3
  88. package/build/es/visualizations/config/generators/highcharts/index.js +8 -0
  89. package/build/es/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/index.js +6 -0
  90. package/build/es/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/nonASCIIFont.js +11 -0
  91. package/build/es/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/textShadow.js +283 -0
  92. package/build/es/visualizations/config/generators/index.js +1 -3
  93. package/build/es/visualizations/store/adapters/dhis_highcharts/index.js +4 -1
  94. package/build/es/visualizations/store/adapters/dhis_highcharts/singleValue.js +4 -0
  95. package/build/es/visualizations/store/adapters/index.js +1 -3
  96. package/build/es/visualizations/util/shouldUseContrastColor.js +17 -0
  97. package/package.json +1 -1
  98. package/build/cjs/visualizations/config/adapters/dhis_dhis/index.js +0 -39
  99. package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/index.spec.js +0 -49
  100. package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/singleValue.spec.js +0 -15
  101. package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/index.js +0 -34
  102. package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/singleValue.js +0 -11
  103. package/build/cjs/visualizations/config/adapters/dhis_dhis/title/__tests__/index.spec.js +0 -39
  104. package/build/cjs/visualizations/config/adapters/dhis_dhis/title/__tests__/singleValue.spec.js +0 -17
  105. package/build/cjs/visualizations/config/adapters/dhis_dhis/title/index.js +0 -31
  106. package/build/cjs/visualizations/config/adapters/dhis_dhis/title/singleValue.js +0 -18
  107. package/build/cjs/visualizations/config/adapters/dhis_dhis/type.js +0 -19
  108. package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart.js +0 -39
  109. package/build/cjs/visualizations/config/generators/dhis/index.js +0 -28
  110. package/build/cjs/visualizations/config/generators/dhis/singleValue.js +0 -359
  111. package/build/cjs/visualizations/store/adapters/dhis_dhis/index.js +0 -83
  112. package/build/cjs/visualizations/store/adapters/dhis_dhis/singleValue.js +0 -10
  113. package/build/es/visualizations/config/adapters/dhis_dhis/index.js +0 -30
  114. package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/index.spec.js +0 -46
  115. package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/singleValue.spec.js +0 -12
  116. package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/index.js +0 -27
  117. package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/singleValue.js +0 -4
  118. package/build/es/visualizations/config/adapters/dhis_dhis/title/__tests__/index.spec.js +0 -36
  119. package/build/es/visualizations/config/adapters/dhis_dhis/title/__tests__/singleValue.spec.js +0 -14
  120. package/build/es/visualizations/config/adapters/dhis_dhis/title/index.js +0 -24
  121. package/build/es/visualizations/config/adapters/dhis_dhis/title/singleValue.js +0 -11
  122. package/build/es/visualizations/config/adapters/dhis_dhis/type.js +0 -13
  123. package/build/es/visualizations/config/adapters/dhis_highcharts/chart.js +0 -32
  124. package/build/es/visualizations/config/generators/dhis/index.js +0 -21
  125. package/build/es/visualizations/config/generators/dhis/singleValue.js +0 -353
  126. package/build/es/visualizations/store/adapters/dhis_dhis/index.js +0 -76
  127. package/build/es/visualizations/store/adapters/dhis_dhis/singleValue.js +0 -4
@@ -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
+ }
@@ -0,0 +1,289 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = _default;
7
+ /* This plugin was provided by HighCharts support and resolves an issue with label
8
+ * text that has a white outline, such as the one we use for stacked bar charts.
9
+ * For example: "ANC: 1-4 visits by districts this year (stacked)"
10
+ * This issue has actually been resolved in HighCharts v11, so once we have upgraded
11
+ * to that version, this plugin can be removed. */
12
+
13
+ function _default(H) {
14
+ const {
15
+ AST,
16
+ defaultOptions,
17
+ downloadURL
18
+ } = H,
19
+ {
20
+ ajax
21
+ } = H.HttpUtilities,
22
+ doc = document,
23
+ win = window,
24
+ OfflineExporting = H._modules['Extensions/OfflineExporting/OfflineExporting.js'],
25
+ {
26
+ getScript,
27
+ svgToPdf,
28
+ imageToDataUrl,
29
+ svgToDataUrl
30
+ } = OfflineExporting;
31
+ H.wrap(OfflineExporting, 'downloadSVGLocal', function (proceed, svg, options, failCallback, successCallback) {
32
+ var dummySVGContainer = doc.createElement('div'),
33
+ imageType = options.type || 'image/png',
34
+ filename = (options.filename || 'chart') + '.' + (imageType === 'image/svg+xml' ? 'svg' : imageType.split('/')[1]),
35
+ scale = options.scale || 1;
36
+ var svgurl,
37
+ blob,
38
+ finallyHandler,
39
+ libURL = options.libURL || defaultOptions.exporting.libURL,
40
+ objectURLRevoke = true,
41
+ pdfFont = options.pdfFont;
42
+ // Allow libURL to end with or without fordward slash
43
+ libURL = libURL.slice(-1) !== '/' ? libURL + '/' : libURL;
44
+ /*
45
+ * Detect if we need to load TTF fonts for the PDF, then load them and
46
+ * proceed.
47
+ *
48
+ * @private
49
+ */
50
+ var loadPdfFonts = function (svgElement, callback) {
51
+ var hasNonASCII = function (s) {
52
+ return (
53
+ // eslint-disable-next-line no-control-regex
54
+ /[^\u0000-\u007F\u200B]+/.test(s)
55
+ );
56
+ };
57
+ // Register an event in order to add the font once jsPDF is
58
+ // initialized
59
+ var addFont = function (variant, base64) {
60
+ win.jspdf.jsPDF.API.events.push(['initialized', function () {
61
+ this.addFileToVFS(variant, base64);
62
+ this.addFont(variant, 'HighchartsFont', variant);
63
+ if (!this.getFontList().HighchartsFont) {
64
+ this.setFont('HighchartsFont');
65
+ }
66
+ }]);
67
+ };
68
+ // If there are no non-ASCII characters in the SVG, do not use
69
+ // bother downloading the font files
70
+ if (pdfFont && !hasNonASCII(svgElement.textContent || '')) {
71
+ pdfFont = void 0;
72
+ }
73
+ // Add new font if the URL is declared, #6417.
74
+ var variants = ['normal', 'italic', 'bold', 'bolditalic'];
75
+ // Shift the first element off the variants and add as a font.
76
+ // Then asynchronously trigger the next variant until calling the
77
+ // callback when the variants are empty.
78
+ var normalBase64;
79
+ var shiftAndLoadVariant = function () {
80
+ var variant = variants.shift();
81
+ // All variants shifted and possibly loaded, proceed
82
+ if (!variant) {
83
+ return callback();
84
+ }
85
+ var url = pdfFont && pdfFont[variant];
86
+ if (url) {
87
+ ajax({
88
+ url: url,
89
+ responseType: 'blob',
90
+ success: function (data, xhr) {
91
+ var reader = new FileReader();
92
+ reader.onloadend = function () {
93
+ if (typeof this.result === 'string') {
94
+ var base64 = this.result.split(',')[1];
95
+ addFont(variant, base64);
96
+ if (variant === 'normal') {
97
+ normalBase64 = base64;
98
+ }
99
+ }
100
+ shiftAndLoadVariant();
101
+ };
102
+ reader.readAsDataURL(xhr.response);
103
+ },
104
+ error: shiftAndLoadVariant
105
+ });
106
+ } else {
107
+ // For other variants, fall back to normal text weight/style
108
+ if (normalBase64) {
109
+ addFont(variant, normalBase64);
110
+ }
111
+ shiftAndLoadVariant();
112
+ }
113
+ };
114
+ shiftAndLoadVariant();
115
+ };
116
+ /*
117
+ * @private
118
+ */
119
+ var downloadPDF = function () {
120
+ AST.setElementHTML(dummySVGContainer, svg);
121
+ var textElements = dummySVGContainer.getElementsByTagName('text'),
122
+ // Copy style property to element from parents if it's not
123
+ // there. Searches up hierarchy until it finds prop, or hits the
124
+ // chart container.
125
+ setStylePropertyFromParents = function (el, propName) {
126
+ var curParent = el;
127
+ while (curParent && curParent !== dummySVGContainer) {
128
+ if (curParent.style[propName]) {
129
+ el.style[propName] = curParent.style[propName];
130
+ break;
131
+ }
132
+ curParent = curParent.parentNode;
133
+ }
134
+ };
135
+ var titleElements, outlineElements
136
+ // Workaround for the text styling. Making sure it does pick up
137
+ // settings for parent elements.
138
+ ;
139
+ [].forEach.call(textElements, function (el) {
140
+ // Workaround for the text styling. making sure it does pick up
141
+ // the root element
142
+ ;
143
+ ['font-family', 'font-size'].forEach(function (property) {
144
+ setStylePropertyFromParents(el, property);
145
+ });
146
+ el.style.fontFamily = pdfFont && pdfFont.normal ?
147
+ // Custom PDF font
148
+ 'HighchartsFont' :
149
+ // Generic font (serif, sans-serif etc)
150
+ String(el.style.fontFamily && el.style.fontFamily.split(' ').splice(-1));
151
+ // Workaround for plotband with width, removing title from text
152
+ // nodes
153
+ titleElements = el.getElementsByTagName('title');
154
+ [].forEach.call(titleElements, function (titleElement) {
155
+ el.removeChild(titleElement);
156
+ });
157
+
158
+ // Remove all .highcharts-text-outline elements, #17170
159
+ outlineElements = el.getElementsByClassName('highcharts-text-outline');
160
+ while (outlineElements.length > 0) {
161
+ const outline = outlineElements[0];
162
+ if (outline.parentNode) {
163
+ outline.parentNode.removeChild(outline);
164
+ }
165
+ }
166
+ });
167
+ var svgNode = dummySVGContainer.querySelector('svg');
168
+ if (svgNode) {
169
+ loadPdfFonts(svgNode, function () {
170
+ svgToPdf(svgNode, 0, function (pdfData) {
171
+ try {
172
+ downloadURL(pdfData, filename);
173
+ if (successCallback) {
174
+ successCallback();
175
+ }
176
+ } catch (e) {
177
+ failCallback(e);
178
+ }
179
+ });
180
+ });
181
+ }
182
+ };
183
+ // Initiate download depending on file type
184
+ if (imageType === 'image/svg+xml') {
185
+ // SVG download. In this case, we want to use Microsoft specific
186
+ // Blob if available
187
+ try {
188
+ if (typeof win.navigator.msSaveOrOpenBlob !== 'undefined') {
189
+ // eslint-disable-next-line no-undef
190
+ blob = new MSBlobBuilder();
191
+ blob.append(svg);
192
+ svgurl = blob.getBlob('image/svg+xml');
193
+ } else {
194
+ svgurl = svgToDataUrl(svg);
195
+ }
196
+ downloadURL(svgurl, filename);
197
+ if (successCallback) {
198
+ successCallback();
199
+ }
200
+ } catch (e) {
201
+ failCallback(e);
202
+ }
203
+ } else if (imageType === 'application/pdf') {
204
+ if (win.jspdf && win.jspdf.jsPDF) {
205
+ downloadPDF();
206
+ } else {
207
+ // Must load pdf libraries first. // Don't destroy the object
208
+ // URL yet since we are doing things asynchronously. A cleaner
209
+ // solution would be nice, but this will do for now.
210
+ objectURLRevoke = true;
211
+ getScript(libURL + 'jspdf.js', function () {
212
+ getScript(libURL + 'svg2pdf.js', downloadPDF);
213
+ });
214
+ }
215
+ } else {
216
+ // PNG/JPEG download - create bitmap from SVG
217
+ svgurl = svgToDataUrl(svg);
218
+ finallyHandler = function () {
219
+ try {
220
+ OfflineExporting.domurl.revokeObjectURL(svgurl);
221
+ } catch (e) {
222
+ // Ignore
223
+ }
224
+ };
225
+ // First, try to get PNG by rendering on canvas
226
+ imageToDataUrl(svgurl, imageType, {}, scale, function (imageURL) {
227
+ // Success
228
+ try {
229
+ downloadURL(imageURL, filename);
230
+ if (successCallback) {
231
+ successCallback();
232
+ }
233
+ } catch (e) {
234
+ failCallback(e);
235
+ }
236
+ }, function () {
237
+ // Failed due to tainted canvas
238
+ // Create new and untainted canvas
239
+ var canvas = doc.createElement('canvas'),
240
+ ctx = canvas.getContext('2d'),
241
+ imageWidth = svg.match(
242
+ // eslint-disable-next-line no-useless-escape
243
+ /^<svg[^>]*width\s*=\s*\"?(\d+)\"?[^>]*>/)[1] * scale,
244
+ imageHeight = svg.match(
245
+ // eslint-disable-next-line no-useless-escape
246
+ /^<svg[^>]*height\s*=\s*\"?(\d+)\"?[^>]*>/)[1] * scale,
247
+ downloadWithCanVG = function () {
248
+ var v = win.canvg.Canvg.fromString(ctx, svg);
249
+ v.start();
250
+ try {
251
+ downloadURL(win.navigator.msSaveOrOpenBlob ? canvas.msToBlob() : canvas.toDataURL(imageType), filename);
252
+ if (successCallback) {
253
+ successCallback();
254
+ }
255
+ } catch (e) {
256
+ failCallback(e);
257
+ } finally {
258
+ finallyHandler();
259
+ }
260
+ };
261
+ canvas.width = imageWidth;
262
+ canvas.height = imageHeight;
263
+ if (win.canvg) {
264
+ // Use preloaded canvg
265
+ downloadWithCanVG();
266
+ } else {
267
+ // Must load canVG first. // Don't destroy the object
268
+ // URL yet since we are doing things asynchronously. A
269
+ // cleaner solution would be nice, but this will do for
270
+ // now.
271
+ objectURLRevoke = true;
272
+ getScript(libURL + 'canvg.js', function () {
273
+ downloadWithCanVG();
274
+ });
275
+ }
276
+ },
277
+ // No canvas support
278
+ failCallback,
279
+ // Failed to load image
280
+ failCallback,
281
+ // Finally
282
+ function () {
283
+ if (objectURLRevoke) {
284
+ finallyHandler();
285
+ }
286
+ });
287
+ }
288
+ });
289
+ }
@@ -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/index.js"));
8
- var _index2 = _interopRequireDefault(require("./highcharts/index.js"));
7
+ var _index = _interopRequireDefault(require("./highcharts/index.js"));
9
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
9
  var _default = {
11
- highcharts: _index2.default,
12
- dhis: _index.default
10
+ highcharts: _index.default
13
11
  };
14
12
  exports.default = _default;
@@ -9,6 +9,7 @@ var _arrayUnique = _interopRequireDefault(require("d2-utilizr/lib/arrayUnique"))
9
9
  var _visTypes = require("../../../../modules/visTypes.js");
10
10
  var _gauge = _interopRequireDefault(require("./gauge.js"));
11
11
  var _pie = _interopRequireDefault(require("./pie.js"));
12
+ var _singleValue = _interopRequireDefault(require("./singleValue.js"));
12
13
  var _twoCategory = _interopRequireDefault(require("./twoCategory.js"));
13
14
  var _yearOnYear = _interopRequireDefault(require("./yearOnYear.js"));
14
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -70,6 +71,8 @@ function getSeriesFunction(type, categoryIds) {
70
71
  return _twoCategory.default;
71
72
  }
72
73
  switch (type) {
74
+ case _visTypes.VIS_TYPE_SINGLE_VALUE:
75
+ return _singleValue.default;
73
76
  case _visTypes.VIS_TYPE_PIE:
74
77
  return _pie.default;
75
78
  case _visTypes.VIS_TYPE_GAUGE:
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = getSingleValue;
7
+ function getSingleValue(acc, seriesIds, categoryIds, idValueMap) {
8
+ const seriesId = seriesIds[0][0];
9
+ acc.push(idValueMap.get(seriesId));
10
+ }
@@ -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;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.shouldUseContrastColor = void 0;
7
+ const shouldUseContrastColor = function () {
8
+ let inputColor = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
9
+ // based on https://stackoverflow.com/questions/3942878/how-to-decide-font-color-in-white-or-black-depending-on-background-color
10
+ var color = inputColor.charAt(0) === '#' ? inputColor.substring(1, 7) : inputColor;
11
+ var r = parseInt(color.substring(0, 2), 16); // hexToR
12
+ var g = parseInt(color.substring(2, 4), 16); // hexToG
13
+ var b = parseInt(color.substring(4, 6), 16); // hexToB
14
+ var uicolors = [r / 255, g / 255, b / 255];
15
+ var c = uicolors.map(col => {
16
+ if (col <= 0.03928) {
17
+ return col / 12.92;
18
+ }
19
+ return Math.pow((col + 0.055) / 1.055, 2.4);
20
+ });
21
+ var L = 0.2126 * c[0] + 0.7152 * c[1] + 0.0722 * c[2];
22
+ return L <= 0.179;
23
+ };
24
+ exports.shouldUseContrastColor = shouldUseContrastColor;