@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.
- package/build/cjs/__demo__/SingleValue.stories.js +706 -0
- package/build/cjs/locales/lo/translations.json +16 -12
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart/default.js +26 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart/index.js +18 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart/singleValue.js +19 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/index.js +36 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueBackgroundColor.js +12 -0
- package/build/cjs/visualizations/config/adapters/{dhis_dhis/value/index.js → dhis_highcharts/customSVGOptions/singleValue/getSingleValueFormattedValue.js} +8 -6
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueLegendColor.js +11 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueSubtext.js +11 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTextColor.js +20 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTitleColor.js +26 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/index.js +31 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/index.js +24 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/index.js +18 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/addIconElement.js +34 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/checkIfFitsWithinContainer.js +19 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeLayoutRect.js +39 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeSpacingTop.js +21 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/constants.js +11 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/getAvailableSpace.js +14 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/index.js +48 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/positionElements.js +46 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/styles.js +109 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/exporting.js +30 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/index.js +33 -23
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/lang.js +17 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/plotOptions.js +1 -1
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/series/index.js +5 -1
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/__tests__/singleValue.spec.js +62 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/index.js +56 -22
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/singleValue.js +27 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/__tests__/singleValue.spec.js +44 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/index.js +50 -22
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/singleValue.js +31 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/type.js +2 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/xAxis/index.js +1 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/yAxis/index.js +4 -5
- package/build/cjs/visualizations/config/adapters/index.js +2 -4
- package/build/cjs/visualizations/config/generators/highcharts/index.js +8 -0
- package/build/cjs/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/index.js +13 -0
- package/build/cjs/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/nonASCIIFont.js +17 -0
- package/build/cjs/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/textShadow.js +289 -0
- package/build/cjs/visualizations/config/generators/index.js +2 -4
- package/build/cjs/visualizations/store/adapters/dhis_highcharts/index.js +3 -0
- package/build/cjs/visualizations/store/adapters/dhis_highcharts/singleValue.js +10 -0
- package/build/cjs/visualizations/store/adapters/index.js +2 -4
- package/build/cjs/visualizations/util/shouldUseContrastColor.js +24 -0
- package/build/es/__demo__/SingleValue.stories.js +702 -0
- package/build/es/locales/lo/translations.json +16 -12
- package/build/es/visualizations/config/adapters/dhis_highcharts/chart/default.js +19 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/chart/index.js +11 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/chart/singleValue.js +12 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/index.js +29 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueBackgroundColor.js +6 -0
- package/build/es/visualizations/config/adapters/{dhis_dhis/value/index.js → dhis_highcharts/customSVGOptions/singleValue/getSingleValueFormattedValue.js} +4 -4
- package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueLegendColor.js +5 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueSubtext.js +5 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTextColor.js +14 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTitleColor.js +20 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/index.js +25 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/events/index.js +16 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/index.js +11 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/addIconElement.js +28 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/checkIfFitsWithinContainer.js +13 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeLayoutRect.js +33 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeSpacingTop.js +15 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/constants.js +4 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/getAvailableSpace.js +8 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/index.js +42 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/positionElements.js +40 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/styles.js +101 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/exporting.js +23 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/index.js +23 -13
- package/build/es/visualizations/config/adapters/dhis_highcharts/lang.js +11 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/plotOptions.js +1 -1
- package/build/es/visualizations/config/adapters/dhis_highcharts/series/index.js +6 -2
- package/build/es/visualizations/config/adapters/dhis_highcharts/subtitle/__tests__/singleValue.spec.js +59 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/subtitle/index.js +56 -24
- package/build/es/visualizations/config/adapters/dhis_highcharts/subtitle/singleValue.js +14 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/title/__tests__/singleValue.spec.js +42 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/title/index.js +52 -24
- package/build/es/visualizations/config/adapters/dhis_highcharts/title/singleValue.js +18 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/type.js +3 -1
- package/build/es/visualizations/config/adapters/dhis_highcharts/xAxis/index.js +2 -1
- package/build/es/visualizations/config/adapters/dhis_highcharts/yAxis/index.js +5 -6
- package/build/es/visualizations/config/adapters/index.js +1 -3
- package/build/es/visualizations/config/generators/highcharts/index.js +8 -0
- package/build/es/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/index.js +6 -0
- package/build/es/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/nonASCIIFont.js +11 -0
- package/build/es/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/textShadow.js +283 -0
- package/build/es/visualizations/config/generators/index.js +1 -3
- package/build/es/visualizations/store/adapters/dhis_highcharts/index.js +4 -1
- package/build/es/visualizations/store/adapters/dhis_highcharts/singleValue.js +4 -0
- package/build/es/visualizations/store/adapters/index.js +1 -3
- package/build/es/visualizations/util/shouldUseContrastColor.js +17 -0
- package/package.json +1 -1
- package/build/cjs/visualizations/config/adapters/dhis_dhis/index.js +0 -39
- package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/index.spec.js +0 -49
- package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/singleValue.spec.js +0 -15
- package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/index.js +0 -34
- package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/singleValue.js +0 -11
- package/build/cjs/visualizations/config/adapters/dhis_dhis/title/__tests__/index.spec.js +0 -39
- package/build/cjs/visualizations/config/adapters/dhis_dhis/title/__tests__/singleValue.spec.js +0 -17
- package/build/cjs/visualizations/config/adapters/dhis_dhis/title/index.js +0 -31
- package/build/cjs/visualizations/config/adapters/dhis_dhis/title/singleValue.js +0 -18
- package/build/cjs/visualizations/config/adapters/dhis_dhis/type.js +0 -19
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart.js +0 -39
- package/build/cjs/visualizations/config/generators/dhis/index.js +0 -28
- package/build/cjs/visualizations/config/generators/dhis/singleValue.js +0 -359
- package/build/cjs/visualizations/store/adapters/dhis_dhis/index.js +0 -83
- package/build/cjs/visualizations/store/adapters/dhis_dhis/singleValue.js +0 -10
- package/build/es/visualizations/config/adapters/dhis_dhis/index.js +0 -30
- package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/index.spec.js +0 -46
- package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/singleValue.spec.js +0 -12
- package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/index.js +0 -27
- package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/singleValue.js +0 -4
- package/build/es/visualizations/config/adapters/dhis_dhis/title/__tests__/index.spec.js +0 -36
- package/build/es/visualizations/config/adapters/dhis_dhis/title/__tests__/singleValue.spec.js +0 -14
- package/build/es/visualizations/config/adapters/dhis_dhis/title/index.js +0 -24
- package/build/es/visualizations/config/adapters/dhis_dhis/title/singleValue.js +0 -11
- package/build/es/visualizations/config/adapters/dhis_dhis/type.js +0 -13
- package/build/es/visualizations/config/adapters/dhis_highcharts/chart.js +0 -32
- package/build/es/visualizations/config/generators/dhis/index.js +0 -21
- package/build/es/visualizations/config/generators/dhis/singleValue.js +0 -353
- package/build/es/visualizations/store/adapters/dhis_dhis/index.js +0 -76
- 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
|
+
}
|
|
@@ -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
|
-
|
|
114
|
-
break;
|
|
114
|
+
return (0, _gauge.default)(layout, series, extraOptions.legendSets[0]);
|
|
115
115
|
default:
|
|
116
|
-
|
|
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("./
|
|
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:
|
|
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
|
+
}
|
package/build/cjs/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/nonASCIIFont.js
ADDED
|
@@ -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
|
+
}
|
package/build/cjs/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/textShadow.js
ADDED
|
@@ -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("./
|
|
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:
|
|
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("./
|
|
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:
|
|
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;
|