@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
|
@@ -5,10 +5,13 @@ import { getOutlierHelper } from '../../../../modules/outliers/index.js';
|
|
|
5
5
|
import { isStacked, isLegendSetType, VIS_TYPE_SCATTER, VIS_TYPE_GAUGE, VIS_TYPE_LINE } from '../../../../modules/visTypes.js';
|
|
6
6
|
import { defaultMultiAxisTheme1 } from '../../../util/colors/themes.js';
|
|
7
7
|
import addTrendLines, { isRegressionIneligible } from './addTrendLines.js';
|
|
8
|
-
import getChart from './chart.js';
|
|
8
|
+
import getChart from './chart/index.js';
|
|
9
|
+
import getCustomSVGOptions from './customSVGOptions/index.js';
|
|
10
|
+
import getExporting from './exporting.js';
|
|
9
11
|
import getScatterData from './getScatterData.js';
|
|
10
12
|
import getSortedConfig from './getSortedConfig.js';
|
|
11
13
|
import getTrimmedConfig from './getTrimmedConfig.js';
|
|
14
|
+
import getLang from './lang.js';
|
|
12
15
|
import getLegend from './legend.js';
|
|
13
16
|
import { applyLegendSet, getLegendSetTooltip } from './legendSet.js';
|
|
14
17
|
import getNoData from './noData.js';
|
|
@@ -58,11 +61,11 @@ export default function (_ref) {
|
|
|
58
61
|
}
|
|
59
62
|
let config = {
|
|
60
63
|
// type etc
|
|
61
|
-
chart: getChart(_layout, el, _extraOptions
|
|
64
|
+
chart: getChart(_layout, el, _extraOptions, series),
|
|
62
65
|
// title
|
|
63
|
-
title: getTitle(_layout, store.data[0].metaData, _extraOptions
|
|
66
|
+
title: getTitle(_layout, store.data[0].metaData, _extraOptions, series),
|
|
64
67
|
// subtitle
|
|
65
|
-
subtitle: getSubtitle(series, _layout, store.data[0].metaData, _extraOptions
|
|
68
|
+
subtitle: getSubtitle(series, _layout, store.data[0].metaData, _extraOptions),
|
|
66
69
|
// x-axis
|
|
67
70
|
xAxis: getXAxis(store, _layout, _extraOptions, series),
|
|
68
71
|
// y-axis
|
|
@@ -87,20 +90,26 @@ export default function (_ref) {
|
|
|
87
90
|
// pane
|
|
88
91
|
pane: getPane(_layout.type),
|
|
89
92
|
// no data + zoom
|
|
90
|
-
lang:
|
|
91
|
-
|
|
92
|
-
resetZoom: _extraOptions.resetZoom.text
|
|
93
|
-
},
|
|
94
|
-
noData: getNoData(),
|
|
93
|
+
lang: getLang(_layout.type, _extraOptions),
|
|
94
|
+
noData: getNoData(_layout.type),
|
|
95
95
|
// credits
|
|
96
96
|
credits: {
|
|
97
97
|
enabled: false
|
|
98
98
|
},
|
|
99
99
|
// exporting
|
|
100
|
-
exporting:
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
100
|
+
exporting: getExporting(_layout.type),
|
|
101
|
+
/* The config object passed to the Highcharts Chart constructor
|
|
102
|
+
* can contain arbitrary properties, which are made accessible
|
|
103
|
+
* under the Chart instance's `userOptions` member. This means
|
|
104
|
+
* that in event callback functions the custom SVG options are
|
|
105
|
+
* accessible as `this.userOptions.customSVGOptions` */
|
|
106
|
+
customSVGOptions: getCustomSVGOptions({
|
|
107
|
+
extraConfig,
|
|
108
|
+
layout: _layout,
|
|
109
|
+
extraOptions: _extraOptions,
|
|
110
|
+
metaData: store.data[0].metaData,
|
|
111
|
+
series
|
|
112
|
+
})
|
|
104
113
|
};
|
|
105
114
|
|
|
106
115
|
// get plot options for scatter
|
|
@@ -176,5 +185,6 @@ export default function (_ref) {
|
|
|
176
185
|
|
|
177
186
|
// force apply extra config
|
|
178
187
|
Object.assign(config, extraConfig);
|
|
188
|
+
console.log(objectClean(config));
|
|
179
189
|
return objectClean(config);
|
|
180
190
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { VIS_TYPE_SINGLE_VALUE } from '../../../../modules/visTypes.js';
|
|
2
|
+
export default function getLang(visType, extraOptions) {
|
|
3
|
+
return {
|
|
4
|
+
/* The SingleValue visualization consists of some custom SVG elements
|
|
5
|
+
* rendered on an empty chart. Since the chart is empty, there is never
|
|
6
|
+
* any data and Highcharts will show the noData text. To avoid this we
|
|
7
|
+
* clear the text here. */
|
|
8
|
+
noData: visType === VIS_TYPE_SINGLE_VALUE ? undefined : extraOptions.noData.text,
|
|
9
|
+
resetZoom: extraOptions.resetZoom.text
|
|
10
|
+
};
|
|
11
|
+
}
|
|
@@ -2,7 +2,7 @@ import { colors } from '@dhis2/ui';
|
|
|
2
2
|
import { hasCustomAxes } from '../../../../../modules/axis.js';
|
|
3
3
|
import { axisHasRelativeItems } from '../../../../../modules/layout/axisHasRelativeItems.js';
|
|
4
4
|
import { getLegendSetByDisplayStrategy } from '../../../../../modules/legends.js';
|
|
5
|
-
import { VIS_TYPE_PIE, VIS_TYPE_GAUGE, isDualAxisType, isYearOverYear, VIS_TYPE_LINE, VIS_TYPE_SCATTER } from '../../../../../modules/visTypes.js';
|
|
5
|
+
import { VIS_TYPE_PIE, VIS_TYPE_GAUGE, isDualAxisType, isYearOverYear, VIS_TYPE_LINE, VIS_TYPE_SCATTER, VIS_TYPE_SINGLE_VALUE } from '../../../../../modules/visTypes.js';
|
|
6
6
|
import { getAxisStringFromId } from '../../../../util/axisId.js';
|
|
7
7
|
import { colorSets, COLOR_SET_PATTERNS } from '../../../../util/colors/colorSets.js';
|
|
8
8
|
import { generateColors } from '../../../../util/colors/gradientColorGenerator.js';
|
|
@@ -153,6 +153,7 @@ function getDefault(_ref) {
|
|
|
153
153
|
return series;
|
|
154
154
|
}
|
|
155
155
|
export default function (_ref2) {
|
|
156
|
+
var _series;
|
|
156
157
|
let {
|
|
157
158
|
series,
|
|
158
159
|
metaData,
|
|
@@ -163,6 +164,9 @@ export default function (_ref2) {
|
|
|
163
164
|
displayStrategy
|
|
164
165
|
} = _ref2;
|
|
165
166
|
switch (layout.type) {
|
|
167
|
+
case VIS_TYPE_SINGLE_VALUE:
|
|
168
|
+
series = [];
|
|
169
|
+
break;
|
|
166
170
|
case VIS_TYPE_PIE:
|
|
167
171
|
series = getPie(series, Object.values(getIdColorMap(series, layout, extraOptions)));
|
|
168
172
|
break;
|
|
@@ -183,7 +187,7 @@ export default function (_ref2) {
|
|
|
183
187
|
displayStrategy
|
|
184
188
|
});
|
|
185
189
|
}
|
|
186
|
-
series.forEach(seriesObj => {
|
|
190
|
+
(_series = series) === null || _series === void 0 ? void 0 : _series.forEach(seriesObj => {
|
|
187
191
|
// animation
|
|
188
192
|
seriesObj.animation = {
|
|
189
193
|
duration: getAnimation(extraOptions.animation, DEFAULT_ANIMATION_DURATION)
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import getSingleValueSubtitle from '../singleValue.js';
|
|
2
|
+
jest.mock('../../../../../util/getFilterText', () => () => 'The default filter text');
|
|
3
|
+
describe('getSingleValueSubtitle', () => {
|
|
4
|
+
it('returns empty subtitle when flag hideSubtitle exists', () => {
|
|
5
|
+
expect(getSingleValueSubtitle({
|
|
6
|
+
hideSubtitle: true
|
|
7
|
+
})).toEqual('');
|
|
8
|
+
});
|
|
9
|
+
it('returns the subtitle provided in the layout', () => {
|
|
10
|
+
const subtitle = 'The subtitle was already set';
|
|
11
|
+
expect(getSingleValueSubtitle({
|
|
12
|
+
subtitle
|
|
13
|
+
})).toEqual(subtitle);
|
|
14
|
+
});
|
|
15
|
+
it('returns an empty string when layout does not have filters', () => {
|
|
16
|
+
expect(getSingleValueSubtitle({})).toEqual('');
|
|
17
|
+
});
|
|
18
|
+
it('returns the filter text', () => {
|
|
19
|
+
expect(getSingleValueSubtitle({
|
|
20
|
+
filters: []
|
|
21
|
+
})).toEqual('The default filter text');
|
|
22
|
+
});
|
|
23
|
+
describe('not dashboard', () => {
|
|
24
|
+
describe('layout does not include title', () => {
|
|
25
|
+
it('returns empty subtitle', () => {
|
|
26
|
+
expect(getSingleValueSubtitle({
|
|
27
|
+
filters: undefined
|
|
28
|
+
}, {}, false)).toEqual('');
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
/* All these tests have been moved and adjusted from here:
|
|
33
|
+
* src/visualizations/config/adapters/dhis_dhis/title/__tests__`
|
|
34
|
+
* The test below asserted the default subtitle behaviour, for
|
|
35
|
+
* visualization types other than SingleValue. It expected that
|
|
36
|
+
* the title was being used as subtitle. It fails now, and I
|
|
37
|
+
* believe that this behaviour does not make sense. So instead
|
|
38
|
+
* of fixing it, I disabled it. */
|
|
39
|
+
// describe('layout includes title', () => {
|
|
40
|
+
// it('returns filter title as subtitle', () => {
|
|
41
|
+
// expect(
|
|
42
|
+
// getSingleValueSubtitle(
|
|
43
|
+
// { filters: undefined, title: 'Chart title' },
|
|
44
|
+
// {},
|
|
45
|
+
// false
|
|
46
|
+
// )
|
|
47
|
+
// ).toEqual('The default filter text')
|
|
48
|
+
// })
|
|
49
|
+
// })
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
describe('dashboard', () => {
|
|
53
|
+
it('returns filter title as subtitle', () => {
|
|
54
|
+
expect(getSingleValueSubtitle({
|
|
55
|
+
filters: {}
|
|
56
|
+
}, {}, true)).toEqual('The default filter text');
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
});
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import isString from 'd2-utilizr/lib/isString';
|
|
2
|
-
import { FONT_STYLE_OPTION_ITALIC, FONT_STYLE_OPTION_BOLD, FONT_STYLE_OPTION_TEXT_COLOR, FONT_STYLE_OPTION_FONT_SIZE, FONT_STYLE_OPTION_TEXT_ALIGN, FONT_STYLE_VISUALIZATION_SUBTITLE, mergeFontStyleWithDefault } from '../../../../../modules/fontStyle.js';
|
|
3
|
-
import { VIS_TYPE_YEAR_OVER_YEAR_LINE, VIS_TYPE_YEAR_OVER_YEAR_COLUMN, isVerticalType, VIS_TYPE_SCATTER } from '../../../../../modules/visTypes.js';
|
|
2
|
+
import { FONT_STYLE_OPTION_ITALIC, FONT_STYLE_OPTION_BOLD, FONT_STYLE_OPTION_TEXT_COLOR, FONT_STYLE_OPTION_FONT_SIZE, FONT_STYLE_OPTION_TEXT_ALIGN, FONT_STYLE_VISUALIZATION_SUBTITLE, mergeFontStyleWithDefault, defaultFontStyle } from '../../../../../modules/fontStyle.js';
|
|
3
|
+
import { VIS_TYPE_YEAR_OVER_YEAR_LINE, VIS_TYPE_YEAR_OVER_YEAR_COLUMN, isVerticalType, VIS_TYPE_SCATTER, VIS_TYPE_SINGLE_VALUE } from '../../../../../modules/visTypes.js';
|
|
4
4
|
import getFilterText from '../../../../util/getFilterText.js';
|
|
5
5
|
import { getTextAlignOption } from '../getTextAlignOption.js';
|
|
6
6
|
import getYearOverYearTitle from '../title/yearOverYear.js';
|
|
7
|
+
import getSingleValueSubtitle, { getSingleValueSubtitleColor } from './singleValue.js';
|
|
7
8
|
const DASHBOARD_SUBTITLE = {
|
|
8
9
|
style: {
|
|
9
10
|
// DHIS2-578: dynamically truncate subtitle when it's taking more than 1 line
|
|
@@ -16,18 +17,33 @@ const DASHBOARD_SUBTITLE = {
|
|
|
16
17
|
}
|
|
17
18
|
};
|
|
18
19
|
function getDefault(layout, dashboard, filterTitle) {
|
|
19
|
-
return
|
|
20
|
-
text: dashboard || isString(layout.title) ? filterTitle : undefined
|
|
21
|
-
};
|
|
20
|
+
return dashboard || isString(layout.title) ? filterTitle : undefined;
|
|
22
21
|
}
|
|
23
|
-
export default function (series, layout, metaData,
|
|
24
|
-
const fontStyle = mergeFontStyleWithDefault(layout.fontStyle && layout.fontStyle[FONT_STYLE_VISUALIZATION_SUBTITLE], FONT_STYLE_VISUALIZATION_SUBTITLE);
|
|
25
|
-
let subtitle = {
|
|
26
|
-
text: undefined
|
|
27
|
-
};
|
|
22
|
+
export default function (series, layout, metaData, extraOptions) {
|
|
28
23
|
if (layout.hideSubtitle) {
|
|
29
24
|
return null;
|
|
30
25
|
}
|
|
26
|
+
const {
|
|
27
|
+
dashboard,
|
|
28
|
+
legendSets
|
|
29
|
+
} = extraOptions;
|
|
30
|
+
const legendOptions = layout.legend;
|
|
31
|
+
const fontStyle = mergeFontStyleWithDefault(layout.fontStyle && layout.fontStyle[FONT_STYLE_VISUALIZATION_SUBTITLE], FONT_STYLE_VISUALIZATION_SUBTITLE);
|
|
32
|
+
const subtitle = Object.assign({
|
|
33
|
+
text: undefined
|
|
34
|
+
}, dashboard ? DASHBOARD_SUBTITLE : {
|
|
35
|
+
align: getTextAlignOption(fontStyle[FONT_STYLE_OPTION_TEXT_ALIGN], FONT_STYLE_VISUALIZATION_SUBTITLE, isVerticalType(layout.type)),
|
|
36
|
+
style: {
|
|
37
|
+
// DHIS2-578: dynamically truncate subtitle when it's taking more than 1 line
|
|
38
|
+
color: undefined,
|
|
39
|
+
fontSize: `${fontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`,
|
|
40
|
+
fontWeight: fontStyle[FONT_STYLE_OPTION_BOLD] ? FONT_STYLE_OPTION_BOLD : 'normal',
|
|
41
|
+
fontStyle: fontStyle[FONT_STYLE_OPTION_ITALIC] ? FONT_STYLE_OPTION_ITALIC : 'normal',
|
|
42
|
+
whiteSpace: 'nowrap',
|
|
43
|
+
overflow: 'hidden',
|
|
44
|
+
textOverflow: 'ellipsis'
|
|
45
|
+
}
|
|
46
|
+
});
|
|
31
47
|
|
|
32
48
|
// DHIS2-578: allow for optional custom subtitle
|
|
33
49
|
const customSubtitle = layout.subtitle && layout.displaySubtitle || layout.subtitle;
|
|
@@ -36,6 +52,9 @@ export default function (series, layout, metaData, dashboard) {
|
|
|
36
52
|
} else {
|
|
37
53
|
const filterTitle = getFilterText(layout.filters, metaData);
|
|
38
54
|
switch (layout.type) {
|
|
55
|
+
case VIS_TYPE_SINGLE_VALUE:
|
|
56
|
+
subtitle.text = getSingleValueSubtitle(layout, metaData);
|
|
57
|
+
break;
|
|
39
58
|
case VIS_TYPE_YEAR_OVER_YEAR_LINE:
|
|
40
59
|
case VIS_TYPE_YEAR_OVER_YEAR_COLUMN:
|
|
41
60
|
subtitle.text = getYearOverYearTitle(layout, metaData, Boolean(!dashboard));
|
|
@@ -44,20 +63,33 @@ export default function (series, layout, metaData, dashboard) {
|
|
|
44
63
|
subtitle.text = filterTitle;
|
|
45
64
|
break;
|
|
46
65
|
default:
|
|
47
|
-
subtitle = getDefault(layout, dashboard, filterTitle);
|
|
66
|
+
subtitle.text = getDefault(layout, dashboard, filterTitle);
|
|
48
67
|
}
|
|
49
68
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
69
|
+
switch (layout.type) {
|
|
70
|
+
case VIS_TYPE_SINGLE_VALUE:
|
|
71
|
+
{
|
|
72
|
+
var _defaultFontStyle$FON, _layout$fontStyle, _layout$fontStyle$FON;
|
|
73
|
+
const defaultColor = defaultFontStyle === null || defaultFontStyle === void 0 ? void 0 : (_defaultFontStyle$FON = defaultFontStyle[FONT_STYLE_VISUALIZATION_SUBTITLE]) === null || _defaultFontStyle$FON === void 0 ? void 0 : _defaultFontStyle$FON[FONT_STYLE_OPTION_TEXT_COLOR];
|
|
74
|
+
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[FONT_STYLE_VISUALIZATION_SUBTITLE]) === null || _layout$fontStyle$FON === void 0 ? void 0 : _layout$fontStyle$FON[FONT_STYLE_OPTION_TEXT_COLOR];
|
|
75
|
+
subtitle.style.color = getSingleValueSubtitleColor(customColor, defaultColor, series[0], legendOptions, legendSets);
|
|
76
|
+
if (dashboard) {
|
|
77
|
+
// Single value subtitle text should be multiline
|
|
78
|
+
/* TODO: The default color of the subtitle now is #4a5768 but the
|
|
79
|
+
* original implementation used #666, which is a lighter grey.
|
|
80
|
+
* If we want to keep this color, changes are needed here. */
|
|
81
|
+
Object.assign(subtitle.style, {
|
|
82
|
+
wordWrap: 'normal',
|
|
83
|
+
whiteSpace: 'normal',
|
|
84
|
+
overflow: 'visible',
|
|
85
|
+
textOverflow: 'initial'
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
break;
|
|
90
|
+
default:
|
|
91
|
+
subtitle.style.color = fontStyle[FONT_STYLE_OPTION_TEXT_COLOR];
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
return subtitle;
|
|
63
95
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import getFilterText from '../../../../util/getFilterText.js';
|
|
2
|
+
export { getSingleValueTitleColor as getSingleValueSubtitleColor } from '../customSVGOptions/singleValue/getSingleValueTitleColor.js';
|
|
3
|
+
export default function getSingleValueSubtitle(layout, metaData) {
|
|
4
|
+
if (layout.hideSubtitle || 1 === 0) {
|
|
5
|
+
return '';
|
|
6
|
+
}
|
|
7
|
+
if (typeof layout.subtitle === 'string' && layout.subtitle.length) {
|
|
8
|
+
return layout.subtitle;
|
|
9
|
+
}
|
|
10
|
+
if (layout.filters) {
|
|
11
|
+
return getFilterText(layout.filters, metaData);
|
|
12
|
+
}
|
|
13
|
+
return '';
|
|
14
|
+
}
|
package/build/es/visualizations/config/adapters/dhis_highcharts/title/__tests__/singleValue.spec.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { getSingleValueTitleText } from '../singleValue.js';
|
|
2
|
+
jest.mock('../../../../../util/getFilterText', () => () => 'The filter text');
|
|
3
|
+
describe('getSingleValueTitle', () => {
|
|
4
|
+
it('returns empty title when flag hideTitle exists', () => {
|
|
5
|
+
expect(getSingleValueTitleText({
|
|
6
|
+
hideTitle: true
|
|
7
|
+
})).toEqual('');
|
|
8
|
+
});
|
|
9
|
+
it('returns the title provided in the layout', () => {
|
|
10
|
+
const title = 'The title was already set';
|
|
11
|
+
expect(getSingleValueTitleText({
|
|
12
|
+
title
|
|
13
|
+
})).toEqual(title);
|
|
14
|
+
});
|
|
15
|
+
it('returns null when layout does not have columns', () => {
|
|
16
|
+
expect(getSingleValueTitleText({})).toEqual('');
|
|
17
|
+
});
|
|
18
|
+
it('returns the filter text based on column items', () => {
|
|
19
|
+
expect(getSingleValueTitleText({
|
|
20
|
+
columns: [{
|
|
21
|
+
items: [{}]
|
|
22
|
+
}]
|
|
23
|
+
})).toEqual('The filter text');
|
|
24
|
+
});
|
|
25
|
+
describe('not dashboard', () => {
|
|
26
|
+
it('returns filter text as title', () => {
|
|
27
|
+
expect(getSingleValueTitleText({
|
|
28
|
+
columns: [{
|
|
29
|
+
items: [{}]
|
|
30
|
+
}],
|
|
31
|
+
filters: []
|
|
32
|
+
}, {}, false)).toEqual('The filter text');
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
describe('dashboard', () => {
|
|
36
|
+
it('returns empty string', () => {
|
|
37
|
+
expect(getSingleValueTitleText({
|
|
38
|
+
filters: {}
|
|
39
|
+
}, {}, true)).toEqual('');
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
});
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import isString from 'd2-utilizr/lib/isString';
|
|
2
|
-
import { FONT_STYLE_OPTION_ITALIC, FONT_STYLE_OPTION_BOLD, FONT_STYLE_OPTION_TEXT_COLOR, FONT_STYLE_OPTION_FONT_SIZE, FONT_STYLE_OPTION_TEXT_ALIGN, FONT_STYLE_VISUALIZATION_TITLE, mergeFontStyleWithDefault } from '../../../../../modules/fontStyle.js';
|
|
3
|
-
import { VIS_TYPE_YEAR_OVER_YEAR_LINE, VIS_TYPE_YEAR_OVER_YEAR_COLUMN, VIS_TYPE_GAUGE, isVerticalType, VIS_TYPE_SCATTER } from '../../../../../modules/visTypes.js';
|
|
2
|
+
import { FONT_STYLE_OPTION_ITALIC, FONT_STYLE_OPTION_BOLD, FONT_STYLE_OPTION_TEXT_COLOR, FONT_STYLE_OPTION_FONT_SIZE, FONT_STYLE_OPTION_TEXT_ALIGN, FONT_STYLE_VISUALIZATION_TITLE, mergeFontStyleWithDefault, defaultFontStyle } from '../../../../../modules/fontStyle.js';
|
|
3
|
+
import { VIS_TYPE_YEAR_OVER_YEAR_LINE, VIS_TYPE_YEAR_OVER_YEAR_COLUMN, VIS_TYPE_GAUGE, isVerticalType, VIS_TYPE_SCATTER, VIS_TYPE_SINGLE_VALUE } from '../../../../../modules/visTypes.js';
|
|
4
4
|
import getFilterText from '../../../../util/getFilterText.js';
|
|
5
5
|
import { getTextAlignOption } from '../getTextAlignOption.js';
|
|
6
6
|
import getScatterTitle from './scatter.js';
|
|
7
|
+
import { getSingleValueTitleColor, getSingleValueTitleText } from './singleValue.js';
|
|
7
8
|
import getYearOverYearTitle from './yearOverYear.js';
|
|
8
9
|
const DASHBOARD_TITLE_STYLE = {
|
|
9
10
|
margin: 15,
|
|
@@ -23,19 +24,41 @@ function getDefault(layout, metaData, dashboard) {
|
|
|
23
24
|
}
|
|
24
25
|
return null;
|
|
25
26
|
}
|
|
26
|
-
export default function (layout, metaData,
|
|
27
|
-
const fontStyle = mergeFontStyleWithDefault(layout.fontStyle && layout.fontStyle[FONT_STYLE_VISUALIZATION_TITLE], FONT_STYLE_VISUALIZATION_TITLE);
|
|
28
|
-
const title = {
|
|
29
|
-
text: undefined
|
|
30
|
-
};
|
|
27
|
+
export default function (layout, metaData, extraOptions, series) {
|
|
31
28
|
if (layout.hideTitle) {
|
|
32
|
-
return
|
|
29
|
+
return {
|
|
30
|
+
text: undefined
|
|
31
|
+
};
|
|
33
32
|
}
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
const {
|
|
34
|
+
dashboard,
|
|
35
|
+
legendSets
|
|
36
|
+
} = extraOptions;
|
|
37
|
+
const legendOptions = layout.legend;
|
|
38
|
+
const fontStyle = mergeFontStyleWithDefault(layout.fontStyle && layout.fontStyle[FONT_STYLE_VISUALIZATION_TITLE], FONT_STYLE_VISUALIZATION_TITLE);
|
|
39
|
+
const title = Object.assign({
|
|
40
|
+
text: undefined
|
|
41
|
+
}, dashboard ? DASHBOARD_TITLE_STYLE : {
|
|
42
|
+
margin: 30,
|
|
43
|
+
align: getTextAlignOption(fontStyle[FONT_STYLE_OPTION_TEXT_ALIGN], FONT_STYLE_VISUALIZATION_TITLE, isVerticalType(layout.type)),
|
|
44
|
+
style: {
|
|
45
|
+
color: undefined,
|
|
46
|
+
fontSize: `${fontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`,
|
|
47
|
+
fontWeight: fontStyle[FONT_STYLE_OPTION_BOLD] ? FONT_STYLE_OPTION_BOLD : 'normal',
|
|
48
|
+
fontStyle: fontStyle[FONT_STYLE_OPTION_ITALIC] ? FONT_STYLE_OPTION_ITALIC : 'normal',
|
|
49
|
+
whiteSpace: 'nowrap',
|
|
50
|
+
overflow: 'hidden',
|
|
51
|
+
textOverflow: 'ellipsis'
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
const customTitleText = layout.title && layout.displayTitle || layout.title;
|
|
55
|
+
if (isString(customTitleText) && customTitleText.length) {
|
|
56
|
+
title.text = customTitleText;
|
|
37
57
|
} else {
|
|
38
58
|
switch (layout.type) {
|
|
59
|
+
case VIS_TYPE_SINGLE_VALUE:
|
|
60
|
+
title.text = getSingleValueTitleText(layout, metaData, dashboard);
|
|
61
|
+
break;
|
|
39
62
|
case VIS_TYPE_GAUGE:
|
|
40
63
|
case VIS_TYPE_YEAR_OVER_YEAR_LINE:
|
|
41
64
|
case VIS_TYPE_YEAR_OVER_YEAR_COLUMN:
|
|
@@ -49,17 +72,22 @@ export default function (layout, metaData, dashboard) {
|
|
|
49
72
|
break;
|
|
50
73
|
}
|
|
51
74
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
75
|
+
switch (layout.type) {
|
|
76
|
+
case VIS_TYPE_SINGLE_VALUE:
|
|
77
|
+
{
|
|
78
|
+
var _defaultFontStyle$FON, _layout$fontStyle, _layout$fontStyle$FON;
|
|
79
|
+
const defaultColor = defaultFontStyle === null || defaultFontStyle === void 0 ? void 0 : (_defaultFontStyle$FON = defaultFontStyle[FONT_STYLE_VISUALIZATION_TITLE]) === null || _defaultFontStyle$FON === void 0 ? void 0 : _defaultFontStyle$FON[FONT_STYLE_OPTION_TEXT_COLOR];
|
|
80
|
+
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[FONT_STYLE_VISUALIZATION_TITLE]) === null || _layout$fontStyle$FON === void 0 ? void 0 : _layout$fontStyle$FON[FONT_STYLE_OPTION_TEXT_COLOR];
|
|
81
|
+
title.style.color = getSingleValueTitleColor(customColor, defaultColor, series[0], legendOptions, legendSets);
|
|
82
|
+
if (dashboard) {
|
|
83
|
+
// TODO: is this always what we want?
|
|
84
|
+
title.style.fontWeight = 'normal';
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
break;
|
|
88
|
+
default:
|
|
89
|
+
title.style.color = fontStyle[FONT_STYLE_OPTION_TEXT_COLOR];
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
return title;
|
|
65
93
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import getFilterText from '../../../../util/getFilterText.js';
|
|
2
|
+
export { getSingleValueTitleColor } from '../customSVGOptions/singleValue/getSingleValueTitleColor.js';
|
|
3
|
+
export function getSingleValueTitleText(layout, metaData) {
|
|
4
|
+
if (layout.hideTitle) {
|
|
5
|
+
return '';
|
|
6
|
+
}
|
|
7
|
+
if (typeof layout.title === 'string' && layout.title.length) {
|
|
8
|
+
return layout.title;
|
|
9
|
+
}
|
|
10
|
+
if (layout.columns) {
|
|
11
|
+
const firstItem = layout.columns[0].items[0];
|
|
12
|
+
const column = Object.assign({}, layout.columns[0], {
|
|
13
|
+
items: [firstItem]
|
|
14
|
+
});
|
|
15
|
+
return getFilterText([column], metaData);
|
|
16
|
+
}
|
|
17
|
+
return '';
|
|
18
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { VIS_TYPE_BAR, VIS_TYPE_STACKED_BAR, VIS_TYPE_LINE, VIS_TYPE_YEAR_OVER_YEAR_LINE, VIS_TYPE_AREA, VIS_TYPE_STACKED_AREA, VIS_TYPE_PIE, VIS_TYPE_RADAR, VIS_TYPE_GAUGE, VIS_TYPE_COLUMN, VIS_TYPE_STACKED_COLUMN, VIS_TYPE_YEAR_OVER_YEAR_COLUMN, VIS_TYPE_SCATTER } from '../../../../modules/visTypes.js';
|
|
1
|
+
import { VIS_TYPE_BAR, VIS_TYPE_STACKED_BAR, VIS_TYPE_LINE, VIS_TYPE_YEAR_OVER_YEAR_LINE, VIS_TYPE_AREA, VIS_TYPE_STACKED_AREA, VIS_TYPE_PIE, VIS_TYPE_RADAR, VIS_TYPE_GAUGE, VIS_TYPE_COLUMN, VIS_TYPE_STACKED_COLUMN, VIS_TYPE_YEAR_OVER_YEAR_COLUMN, VIS_TYPE_SCATTER, VIS_TYPE_SINGLE_VALUE } from '../../../../modules/visTypes.js';
|
|
2
2
|
export default function (type) {
|
|
3
3
|
switch (type) {
|
|
4
4
|
case VIS_TYPE_BAR:
|
|
@@ -34,6 +34,8 @@ export default function (type) {
|
|
|
34
34
|
type: 'scatter',
|
|
35
35
|
zoomType: 'xy'
|
|
36
36
|
};
|
|
37
|
+
case VIS_TYPE_SINGLE_VALUE:
|
|
38
|
+
return {};
|
|
37
39
|
case VIS_TYPE_COLUMN:
|
|
38
40
|
case VIS_TYPE_STACKED_COLUMN:
|
|
39
41
|
case VIS_TYPE_YEAR_OVER_YEAR_COLUMN:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import objectClean from 'd2-utilizr/lib/objectClean';
|
|
2
2
|
import { FONT_STYLE_HORIZONTAL_AXIS_TITLE, FONT_STYLE_AXIS_LABELS, FONT_STYLE_OPTION_TEXT_COLOR, FONT_STYLE_OPTION_FONT_SIZE, FONT_STYLE_OPTION_BOLD, FONT_STYLE_OPTION_ITALIC, mergeFontStyleWithDefault } from '../../../../../modules/fontStyle.js';
|
|
3
|
-
import { VIS_TYPE_GAUGE, VIS_TYPE_YEAR_OVER_YEAR_LINE, VIS_TYPE_YEAR_OVER_YEAR_COLUMN, VIS_TYPE_PIE, VIS_TYPE_RADAR, VIS_TYPE_SCATTER, isTwoCategoryChartType } from '../../../../../modules/visTypes.js';
|
|
3
|
+
import { VIS_TYPE_GAUGE, VIS_TYPE_YEAR_OVER_YEAR_LINE, VIS_TYPE_YEAR_OVER_YEAR_COLUMN, VIS_TYPE_PIE, VIS_TYPE_RADAR, VIS_TYPE_SCATTER, isTwoCategoryChartType, VIS_TYPE_SINGLE_VALUE } from '../../../../../modules/visTypes.js';
|
|
4
4
|
import { getAxis } from '../../../../util/axes.js';
|
|
5
5
|
import getAxisTitle from '../getAxisTitle.js';
|
|
6
6
|
import getCategories from '../getCategories.js';
|
|
@@ -44,6 +44,7 @@ export default function (store, layout, extraOptions, series) {
|
|
|
44
44
|
switch (layout.type) {
|
|
45
45
|
case VIS_TYPE_PIE:
|
|
46
46
|
case VIS_TYPE_GAUGE:
|
|
47
|
+
case VIS_TYPE_SINGLE_VALUE:
|
|
47
48
|
xAxis = noAxis();
|
|
48
49
|
break;
|
|
49
50
|
case VIS_TYPE_YEAR_OVER_YEAR_LINE:
|
|
@@ -2,7 +2,7 @@ import arrayClean from 'd2-utilizr/lib/arrayClean';
|
|
|
2
2
|
import objectClean from 'd2-utilizr/lib/objectClean';
|
|
3
3
|
import i18n from '../../../../../locales/index.js';
|
|
4
4
|
import { FONT_STYLE_VERTICAL_AXIS_TITLE, mergeFontStyleWithDefault, TEXT_ALIGN_RIGHT } from '../../../../../modules/fontStyle.js';
|
|
5
|
-
import { isDualAxisType, isStacked, VIS_TYPE_GAUGE, VIS_TYPE_SCATTER } from '../../../../../modules/visTypes.js';
|
|
5
|
+
import { isDualAxisType, isStacked, VIS_TYPE_GAUGE, VIS_TYPE_SCATTER, VIS_TYPE_SINGLE_VALUE } from '../../../../../modules/visTypes.js';
|
|
6
6
|
import { getAxis } from '../../../../util/axes.js';
|
|
7
7
|
import { getAxisStringFromId } from '../../../../util/axisId.js';
|
|
8
8
|
import { getGridLineColor, getLabels, getMaxValue, getMinValue, getRegressionLine } from '../axis.js';
|
|
@@ -100,13 +100,12 @@ function getDefault(layout, series, extraOptions) {
|
|
|
100
100
|
return axes;
|
|
101
101
|
}
|
|
102
102
|
export default function (layout, series, extraOptions) {
|
|
103
|
-
let yAxis;
|
|
104
103
|
switch (layout.type) {
|
|
104
|
+
case VIS_TYPE_SINGLE_VALUE:
|
|
105
|
+
return null;
|
|
105
106
|
case VIS_TYPE_GAUGE:
|
|
106
|
-
|
|
107
|
-
break;
|
|
107
|
+
return getGauge(layout, series, extraOptions.legendSets[0]);
|
|
108
108
|
default:
|
|
109
|
-
|
|
109
|
+
return getDefault(layout, series, extraOptions);
|
|
110
110
|
}
|
|
111
|
-
return yAxis;
|
|
112
111
|
}
|
|
@@ -3,16 +3,24 @@ import HM from 'highcharts/highcharts-more';
|
|
|
3
3
|
import HB from 'highcharts/modules/boost';
|
|
4
4
|
import HE from 'highcharts/modules/exporting';
|
|
5
5
|
import HNDTD from 'highcharts/modules/no-data-to-display';
|
|
6
|
+
import HOE from 'highcharts/modules/offline-exporting';
|
|
6
7
|
import HPF from 'highcharts/modules/pattern-fill';
|
|
7
8
|
import HSG from 'highcharts/modules/solid-gauge';
|
|
9
|
+
import PEBFP from './pdfExportBugFixPlugin/index.js';
|
|
8
10
|
|
|
9
11
|
// apply
|
|
10
12
|
HM(H);
|
|
11
13
|
HSG(H);
|
|
12
14
|
HNDTD(H);
|
|
13
15
|
HE(H);
|
|
16
|
+
HOE(H);
|
|
14
17
|
HPF(H);
|
|
15
18
|
HB(H);
|
|
19
|
+
PEBFP(H);
|
|
20
|
+
|
|
21
|
+
/* Whitelist some additional SVG attributes here. Without this,
|
|
22
|
+
* the PDF export for the SingleValue visualization breaks. */
|
|
23
|
+
H.AST.allowedAttributes.push('fill-rule', 'clip-rule');
|
|
16
24
|
function drawLegendSymbolWrap() {
|
|
17
25
|
const pick = H.pick;
|
|
18
26
|
H.wrap(H.seriesTypes.column.prototype, 'drawLegendSymbol', function (proceed, legend, item) {
|
package/build/es/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/nonASCIIFont.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/* This is a workaround for https://github.com/highcharts/highcharts/issues/22008
|
|
2
|
+
* We add some transparent text in a non-ASCII script to the chart to prevent
|
|
3
|
+
* the chart from being exported in a serif font */
|
|
4
|
+
|
|
5
|
+
export default function (H) {
|
|
6
|
+
H.addEvent(H.Chart, 'load', function () {
|
|
7
|
+
this.renderer.text('모', 20, 20).attr({
|
|
8
|
+
opacity: 0
|
|
9
|
+
}).add();
|
|
10
|
+
});
|
|
11
|
+
}
|