@operato/scene-chartjs 0.0.5
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/CHANGELOG.md +17 -0
- package/LICENSE +21 -0
- package/README.md +21 -0
- package/assets/bar-chart.png +0 -0
- package/assets/doughnut-chart.png +0 -0
- package/assets/horizontal-bar-chart.png +0 -0
- package/assets/line-chart.png +0 -0
- package/assets/mixed-chart.png +0 -0
- package/assets/pie-chart.png +0 -0
- package/assets/polar-area-chart.png +0 -0
- package/assets/radar-chart.png +0 -0
- package/demo/bar.html +266 -0
- package/demo/chartjs.html +73 -0
- package/demo/index.html +547 -0
- package/demo/legend.html +267 -0
- package/demo/things-scene-chartjs.html +7 -0
- package/dist/chartjs.d.ts +27 -0
- package/dist/chartjs.js +109 -0
- package/dist/chartjs.js.map +1 -0
- package/dist/config-converter.d.ts +1 -0
- package/dist/config-converter.js +343 -0
- package/dist/config-converter.js.map +1 -0
- package/dist/editors/index.d.ts +5 -0
- package/dist/editors/index.js +11 -0
- package/dist/editors/index.js.map +1 -0
- package/dist/editors/property-editor-chartjs-abstract.d.ts +44 -0
- package/dist/editors/property-editor-chartjs-abstract.js +250 -0
- package/dist/editors/property-editor-chartjs-abstract.js.map +1 -0
- package/dist/editors/property-editor-chartjs-hbar.d.ts +9 -0
- package/dist/editors/property-editor-chartjs-hbar.js +160 -0
- package/dist/editors/property-editor-chartjs-hbar.js.map +1 -0
- package/dist/editors/property-editor-chartjs-mixed.d.ts +20 -0
- package/dist/editors/property-editor-chartjs-mixed.js +193 -0
- package/dist/editors/property-editor-chartjs-mixed.js.map +1 -0
- package/dist/editors/property-editor-chartjs-multi-series-abstract.d.ts +31 -0
- package/dist/editors/property-editor-chartjs-multi-series-abstract.js +373 -0
- package/dist/editors/property-editor-chartjs-multi-series-abstract.js.map +1 -0
- package/dist/editors/property-editor-chartjs-pie.d.ts +14 -0
- package/dist/editors/property-editor-chartjs-pie.js +70 -0
- package/dist/editors/property-editor-chartjs-pie.js.map +1 -0
- package/dist/editors/property-editor-chartjs-radar.d.ts +10 -0
- package/dist/editors/property-editor-chartjs-radar.js +42 -0
- package/dist/editors/property-editor-chartjs-radar.js.map +1 -0
- package/dist/editors/property-editor-chartjs-styles.d.ts +1 -0
- package/dist/editors/property-editor-chartjs-styles.js +165 -0
- package/dist/editors/property-editor-chartjs-styles.js.map +1 -0
- package/dist/editors/property-editor-chartjs.d.ts +14 -0
- package/dist/editors/property-editor-chartjs.js +83 -0
- package/dist/editors/property-editor-chartjs.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/ox-chart.d.ts +20 -0
- package/dist/ox-chart.js +137 -0
- package/dist/ox-chart.js.map +1 -0
- package/dist/plugins/chart-series-highlight.d.ts +5 -0
- package/dist/plugins/chart-series-highlight.js +37 -0
- package/dist/plugins/chart-series-highlight.js.map +1 -0
- package/dist/plugins/chartjs-plugin-data-binder.d.ts +5 -0
- package/dist/plugins/chartjs-plugin-data-binder.js +111 -0
- package/dist/plugins/chartjs-plugin-data-binder.js.map +1 -0
- package/helps/scene/component/chartjs.ko.md +332 -0
- package/helps/scene/component/chartjs.md +333 -0
- package/helps/scene/component/chartjs.zh.md +331 -0
- package/helps/scene/images/chart-bar-01.png +0 -0
- package/helps/scene/images/chart-bar-02.png +0 -0
- package/helps/scene/images/chart-bar-03.png +0 -0
- package/helps/scene/images/chart-bar-08.png +0 -0
- package/helps/scene/images/chart-bar-12.png +0 -0
- package/helps/scene/images/chart-data-01.png +0 -0
- package/helps/scene/images/chart-data-04.png +0 -0
- package/helps/scene/images/chart-doughnut-01.png +0 -0
- package/helps/scene/images/chart-horizontal-bar-01.png +0 -0
- package/helps/scene/images/chart-line-01.png +0 -0
- package/helps/scene/images/chart-mix-01.png +0 -0
- package/helps/scene/images/chart-mix-02.png +0 -0
- package/helps/scene/images/chart-pie-01.png +0 -0
- package/helps/scene/images/chart-polar-01.png +0 -0
- package/helps/scene/images/chart-radar-01.png +0 -0
- package/package.json +78 -0
- package/src/chartjs.ts +134 -0
- package/src/config-converter.ts +401 -0
- package/src/editors/index.ts +11 -0
- package/src/editors/property-editor-chartjs-abstract.ts +301 -0
- package/src/editors/property-editor-chartjs-hbar.ts +163 -0
- package/src/editors/property-editor-chartjs-mixed.ts +204 -0
- package/src/editors/property-editor-chartjs-multi-series-abstract.ts +393 -0
- package/src/editors/property-editor-chartjs-pie.ts +79 -0
- package/src/editors/property-editor-chartjs-radar.ts +43 -0
- package/src/editors/property-editor-chartjs-styles.ts +165 -0
- package/src/editors/property-editor-chartjs.ts +88 -0
- package/src/index.ts +7 -0
- package/src/ox-chart.ts +150 -0
- package/src/plugins/chart-series-highlight.ts +43 -0
- package/src/plugins/chartjs-plugin-data-binder.ts +138 -0
- package/src/scene-chart.d.ts +152 -0
- package/templates/bar-chart.js +124 -0
- package/templates/doughnut-chart.js +58 -0
- package/templates/horizontal-bar-chart.js +121 -0
- package/templates/index.js +22 -0
- package/templates/line-chart.js +155 -0
- package/templates/mixed-chart.js +152 -0
- package/templates/pie-chart.js +58 -0
- package/templates/polar-area-chart.js +92 -0
- package/templates/radar-chart.js +98 -0
- package/test/basic-test.html +61 -0
- package/test/index.html +20 -0
- package/things-scene.config.js +7 -0
- package/translations/en.json +5 -0
- package/translations/ko.json +5 -0
- package/translations/ms.json +5 -0
- package/translations/zh.json +5 -0
- package/tsconfig.json +22 -0
- package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,343 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
3
|
+
*/
|
4
|
+
import { TinyColor } from '@ctrl/tinycolor';
|
5
|
+
export function convertConfigure(chart) {
|
6
|
+
if (!chart)
|
7
|
+
return;
|
8
|
+
var data = chart.data || {};
|
9
|
+
var datasets = data.datasets || [];
|
10
|
+
var options = chart.options || {};
|
11
|
+
var scales = options.scales || {};
|
12
|
+
var xAxes;
|
13
|
+
var yAxes;
|
14
|
+
var scale;
|
15
|
+
var legend = options.legend || {};
|
16
|
+
var tooltips = (options.tooltips = options.tooltips || {});
|
17
|
+
var multiAxis = options.multiAxis;
|
18
|
+
var stacked = false;
|
19
|
+
var yStacked = [false, false];
|
20
|
+
var fontSize = Number(options.defaultFontSize);
|
21
|
+
var fontFamily = options.defaultFontFamily;
|
22
|
+
var fontColor = options.defaultFontColor;
|
23
|
+
var theme = options.theme;
|
24
|
+
// backward compatible
|
25
|
+
_configureBackwardsCompatible(chart.type, options);
|
26
|
+
// setup series configure
|
27
|
+
for (let i in datasets) {
|
28
|
+
let series = datasets[i];
|
29
|
+
if (options.stacked && !series.stack) {
|
30
|
+
series.stack = 'A';
|
31
|
+
}
|
32
|
+
/*
|
33
|
+
* TODO from chartjs 2.9, categoryPercentage, barPercentage properties move to dataset.
|
34
|
+
* so need to move related properties - categorySpacing, barSpacing should be moved to series.
|
35
|
+
*/
|
36
|
+
if (chart.type == 'bar') {
|
37
|
+
let categorySpacing = (scales.xAxes && scales.xAxes[0].categorySpacing) || 0;
|
38
|
+
let barSpacing = (scales.xAxes && scales.xAxes[0].barSpacing) || 0;
|
39
|
+
series.categoryPercentage = 1 - categorySpacing || 1;
|
40
|
+
series.barPercentage = 1 - barSpacing || 0.8;
|
41
|
+
}
|
42
|
+
else if (chart.type == 'horizontalBar') {
|
43
|
+
let categorySpacing = (scales.yAxes && scales.yAxes[0].categorySpacing) || 0;
|
44
|
+
let barSpacing = (scales.yAxes && scales.yAxes[0].barSpacing) || 0;
|
45
|
+
series.categoryPercentage = 1 - categorySpacing || 1;
|
46
|
+
series.barPercentage = 1 - barSpacing || 0.8;
|
47
|
+
}
|
48
|
+
_setSeriesConfigures(series, chart);
|
49
|
+
if (!multiAxis) {
|
50
|
+
if (series.yAxisID == 'right')
|
51
|
+
series.yAxisID = 'left';
|
52
|
+
}
|
53
|
+
}
|
54
|
+
delete options.stacked;
|
55
|
+
var leftSeries = datasets.filter(d => d.yAxisID == 'left');
|
56
|
+
var rightSeries = datasets.filter(d => d.yAxisID == 'right');
|
57
|
+
leftSeries.forEach(s => {
|
58
|
+
var filtered = leftSeries.filter(ss => s.stack == ss.stack);
|
59
|
+
if (filtered.length > 1) {
|
60
|
+
yStacked[0] = true;
|
61
|
+
return;
|
62
|
+
}
|
63
|
+
});
|
64
|
+
rightSeries.forEach(s => {
|
65
|
+
var filtered = rightSeries.filter(ss => s.stack == ss.stack);
|
66
|
+
if (filtered.length > 1) {
|
67
|
+
yStacked[1] = true;
|
68
|
+
return;
|
69
|
+
}
|
70
|
+
});
|
71
|
+
stacked = yStacked[0] || yStacked[1];
|
72
|
+
// setup options
|
73
|
+
// 1. setup scales
|
74
|
+
switch (chart.type) {
|
75
|
+
case 'line':
|
76
|
+
case 'bar':
|
77
|
+
case 'horizontalBar':
|
78
|
+
xAxes = scales.xAxes || [];
|
79
|
+
yAxes = scales.yAxes || [];
|
80
|
+
if (chart.type == 'horizontalBar') {
|
81
|
+
xAxes = scales.yAxes || [];
|
82
|
+
yAxes = scales.xAxes || [];
|
83
|
+
}
|
84
|
+
// 1-1. setup xAxes
|
85
|
+
for (let i in xAxes) {
|
86
|
+
let axis = xAxes[i];
|
87
|
+
_setStacked(axis, stacked);
|
88
|
+
_setScalesFont(axis, {
|
89
|
+
fontSize,
|
90
|
+
fontFamily
|
91
|
+
});
|
92
|
+
_setScalesAutoMinMax(axis);
|
93
|
+
_setScalesTickRotation(axis);
|
94
|
+
_setAxisTitle(axis);
|
95
|
+
_setScalesTheme(axis, theme, fontColor);
|
96
|
+
_appendTickCallback(axis.ticks);
|
97
|
+
axis.gridLines.display = options.xGridLine;
|
98
|
+
}
|
99
|
+
// 1-2. setup yAxes
|
100
|
+
for (let i in yAxes) {
|
101
|
+
let axis = yAxes[i];
|
102
|
+
//@ts-ignore
|
103
|
+
if (i == 1) {
|
104
|
+
_setMultiAxis(axis, multiAxis);
|
105
|
+
}
|
106
|
+
_setStacked(axis, yStacked[i]);
|
107
|
+
_setScalesFont(axis, {
|
108
|
+
fontSize,
|
109
|
+
fontFamily
|
110
|
+
});
|
111
|
+
_setScalesAutoMinMax(axis);
|
112
|
+
_setAxisTitle(axis);
|
113
|
+
_setScalesTheme(axis, theme, fontColor);
|
114
|
+
_appendTickCallback(axis.ticks);
|
115
|
+
//@ts-ignore
|
116
|
+
if (i == 0)
|
117
|
+
axis.gridLines.display = options.yGridLine;
|
118
|
+
//@ts-ignore
|
119
|
+
if (i == 1)
|
120
|
+
axis.gridLines.display = options.y2ndGridLine;
|
121
|
+
}
|
122
|
+
break;
|
123
|
+
case 'pie':
|
124
|
+
case 'doughnut':
|
125
|
+
break;
|
126
|
+
default:
|
127
|
+
scale = options.scale || {};
|
128
|
+
_setScalesFont(scale, {
|
129
|
+
fontSize,
|
130
|
+
fontFamily
|
131
|
+
});
|
132
|
+
break;
|
133
|
+
}
|
134
|
+
// 2. setup legend
|
135
|
+
_setLegendFont(legend, {
|
136
|
+
fontSize,
|
137
|
+
fontFamily
|
138
|
+
});
|
139
|
+
legend.labels && (legend.labels.boxWidth = 15);
|
140
|
+
_setLegendTheme(legend, theme, fontColor);
|
141
|
+
// 3. setup tooltips
|
142
|
+
_setTooltipFont(tooltips, {
|
143
|
+
fontSize,
|
144
|
+
fontFamily
|
145
|
+
});
|
146
|
+
_setTooltipCallback(tooltips);
|
147
|
+
}
|
148
|
+
function _configureBackwardsCompatible(type, options) {
|
149
|
+
switch (type) {
|
150
|
+
case 'horizontalBar':
|
151
|
+
if (!options.scales)
|
152
|
+
options.scales = {};
|
153
|
+
break;
|
154
|
+
case 'radar':
|
155
|
+
case 'polarArea':
|
156
|
+
if (options.defaultFontColor) {
|
157
|
+
options.scale.ticks.fontColor = options.defaultFontColor;
|
158
|
+
if (options.scale.pointLabels) {
|
159
|
+
options.scale.pointLabels.fontColor = options.defaultFontColor;
|
160
|
+
}
|
161
|
+
else {
|
162
|
+
options.scale.pointLabels = { fontColor: options.defaultFontColor };
|
163
|
+
}
|
164
|
+
}
|
165
|
+
options.scale.ticks.backdropColor = options.fillStyle ? options.fillStyle : '#00ff0000';
|
166
|
+
break;
|
167
|
+
case 'line':
|
168
|
+
case 'bar':
|
169
|
+
if (!options.scales)
|
170
|
+
options.scales = {};
|
171
|
+
if (!options.scales.yAxes)
|
172
|
+
options.scales.yAxes = [];
|
173
|
+
if (options.scales.yAxes.length === 1) {
|
174
|
+
let yAxes = options.scales.yAxes;
|
175
|
+
yAxes.push({
|
176
|
+
position: 'right',
|
177
|
+
id: 'right',
|
178
|
+
display: options.multiAxis || false,
|
179
|
+
gridLines: {
|
180
|
+
display: (yAxes[0] && yAxes[0].gridLines && yAxes[0].gridLines.display) || false
|
181
|
+
},
|
182
|
+
ticks: {
|
183
|
+
beginAtZero: false,
|
184
|
+
callback: function (value, index, values) {
|
185
|
+
var returnValue = value;
|
186
|
+
if (typeof returnValue == 'number') {
|
187
|
+
returnValue = returnValue.toLocaleString();
|
188
|
+
}
|
189
|
+
return returnValue;
|
190
|
+
}
|
191
|
+
}
|
192
|
+
});
|
193
|
+
}
|
194
|
+
break;
|
195
|
+
case 'pie':
|
196
|
+
case 'doughnut':
|
197
|
+
break;
|
198
|
+
default:
|
199
|
+
if (!options.scale)
|
200
|
+
options.scale = {};
|
201
|
+
break;
|
202
|
+
}
|
203
|
+
}
|
204
|
+
function _setStacked(axis, stacked) {
|
205
|
+
axis.stacked = stacked;
|
206
|
+
}
|
207
|
+
function _setMultiAxis(axis, multiAxis) {
|
208
|
+
axis.display = multiAxis;
|
209
|
+
}
|
210
|
+
function _setAxisTitle(axis) {
|
211
|
+
if (!axis.scaleLabel)
|
212
|
+
axis.scaleLabel = {};
|
213
|
+
axis.scaleLabel.labelString = axis.axisTitle;
|
214
|
+
axis.scaleLabel.display = axis.axisTitle ? true : false;
|
215
|
+
}
|
216
|
+
function _setScalesFont(axis, { fontSize, fontFamily }) {
|
217
|
+
axis.ticks = axis.ticks ? axis.ticks : {};
|
218
|
+
axis.ticks.fontSize = fontSize;
|
219
|
+
if (fontFamily) {
|
220
|
+
axis.ticks.fontFamily = fontFamily;
|
221
|
+
}
|
222
|
+
;
|
223
|
+
axis.pointLabels = {
|
224
|
+
fontSize,
|
225
|
+
fontFamily
|
226
|
+
};
|
227
|
+
}
|
228
|
+
function _setScalesAutoMinMax(axis) {
|
229
|
+
axis.ticks = axis.ticks ? axis.ticks : {};
|
230
|
+
let autoMin = axis.ticks.autoMin;
|
231
|
+
let autoMax = axis.ticks.autoMax;
|
232
|
+
if (autoMin === true) {
|
233
|
+
delete axis.ticks.min;
|
234
|
+
}
|
235
|
+
if (autoMax === true) {
|
236
|
+
delete axis.ticks.max;
|
237
|
+
}
|
238
|
+
}
|
239
|
+
function _setScalesTickRotation(axis) {
|
240
|
+
axis.ticks = axis.ticks ? axis.ticks : {};
|
241
|
+
// axis.ticks.maxRotation = 0
|
242
|
+
}
|
243
|
+
function _setScalesTheme(axis, theme, fontColor) {
|
244
|
+
var baseColor = _getBaseColorFromTheme(theme);
|
245
|
+
axis.gridLines = axis.gridLines ? axis.gridLines : {};
|
246
|
+
if (axis.gridLines) {
|
247
|
+
axis.gridLines.zeroLineColor = baseColor.clone().setAlpha(0.5).toString();
|
248
|
+
axis.gridLines.color = baseColor.clone().setAlpha(0.1).toString();
|
249
|
+
}
|
250
|
+
axis.ticks = axis.ticks ? axis.ticks : {};
|
251
|
+
axis.ticks.fontColor = fontColor ? fontColor : baseColor.clone().setAlpha(0.5).toString();
|
252
|
+
}
|
253
|
+
function _setLegendFont(legend, { fontFamily, fontSize }) {
|
254
|
+
legend.labels = legend.labels ? legend.labels : {};
|
255
|
+
legend.labels.fontSize = fontSize;
|
256
|
+
if (fontFamily)
|
257
|
+
legend.labels.fontFamily = fontFamily;
|
258
|
+
}
|
259
|
+
function _setLegendTheme(legend, theme, fontColor) {
|
260
|
+
var baseColor = _getBaseColorFromTheme(theme);
|
261
|
+
legend.labels = legend.labels ? legend.labels : {};
|
262
|
+
legend.labels.fontColor = fontColor ? fontColor : baseColor.clone().setAlpha(0.5).toString();
|
263
|
+
}
|
264
|
+
function _getBaseColorFromTheme(theme) {
|
265
|
+
let darkColor = '#000';
|
266
|
+
let lightColor = '#fff';
|
267
|
+
var baseColor;
|
268
|
+
switch (theme) {
|
269
|
+
case 'light':
|
270
|
+
baseColor = lightColor;
|
271
|
+
break;
|
272
|
+
case 'dark':
|
273
|
+
default:
|
274
|
+
baseColor = darkColor;
|
275
|
+
break;
|
276
|
+
}
|
277
|
+
baseColor = new TinyColor(baseColor);
|
278
|
+
return baseColor;
|
279
|
+
}
|
280
|
+
function _setSeriesConfigures(series, chart) {
|
281
|
+
var type = series.type || chart.type;
|
282
|
+
var stackGroup = `${type} ${series.yAxisID} ${series.stack || series.dataKey}`;
|
283
|
+
var color = series.color ? series.color : series.backgroundColor;
|
284
|
+
switch (type) {
|
285
|
+
case 'bar':
|
286
|
+
case 'horizontalBar':
|
287
|
+
series.borderColor = series.backgroundColor = color;
|
288
|
+
break;
|
289
|
+
case 'line':
|
290
|
+
case 'radar':
|
291
|
+
color = series.color ? series.color : series.borderColor;
|
292
|
+
series.pointBackgroundColor = series.pointBorderColor = series.borderColor = series.backgroundColor = color;
|
293
|
+
series.pointBorderWidth = series.borderWidth * 0.5;
|
294
|
+
series.pointHoverRadius = series.pointRadius;
|
295
|
+
if (series.fill == undefined)
|
296
|
+
series.fill = false;
|
297
|
+
break;
|
298
|
+
default:
|
299
|
+
series.borderColor = series.backgroundColor = color;
|
300
|
+
break;
|
301
|
+
}
|
302
|
+
series.stack = stackGroup;
|
303
|
+
}
|
304
|
+
function _appendTickCallback(ticks) {
|
305
|
+
if (!ticks) {
|
306
|
+
return;
|
307
|
+
}
|
308
|
+
ticks.callback = function (value, index, values) {
|
309
|
+
var returnValue;
|
310
|
+
if (!Number.isNaN(Number(value))) {
|
311
|
+
returnValue = Number(value).toLocaleString();
|
312
|
+
}
|
313
|
+
else {
|
314
|
+
returnValue = value;
|
315
|
+
}
|
316
|
+
if (returnValue)
|
317
|
+
return returnValue;
|
318
|
+
};
|
319
|
+
}
|
320
|
+
function _setTooltipFont(tooltips, { fontSize, fontFamily }) {
|
321
|
+
tooltips.titleFontSize = tooltips.bodyFontSize = tooltips.footerFontSize = fontSize;
|
322
|
+
if (fontFamily)
|
323
|
+
tooltips.titleFontFamily = tooltips.bodyFontFamily = tooltips.footerFontFamily = fontFamily;
|
324
|
+
}
|
325
|
+
function _setTooltipCallback(tooltips) {
|
326
|
+
tooltips.callbacks = tooltips.callbacks || {};
|
327
|
+
tooltips.intersect = false;
|
328
|
+
tooltips.mode = 'index';
|
329
|
+
tooltips.callbacks.label = function (tooltipItem, data) {
|
330
|
+
var _a, _b, _c, _d, _e, _f;
|
331
|
+
var value = (_b = (_a = data.datasets) === null || _a === void 0 ? void 0 : _a[tooltipItem.datasetIndex || 0].data) === null || _b === void 0 ? void 0 : _b[tooltipItem.index || 0];
|
332
|
+
var datasetLabel = (_c = data.datasets) === null || _c === void 0 ? void 0 : _c[tooltipItem.datasetIndex || 0].label;
|
333
|
+
var label = datasetLabel || ((_d = data.labels) === null || _d === void 0 ? void 0 : _d[tooltipItem.index || 0]);
|
334
|
+
var toNumValue = Number(value);
|
335
|
+
if (!isNaN(toNumValue)) {
|
336
|
+
value = toNumValue;
|
337
|
+
}
|
338
|
+
var prefix = ((_e = data.datasets) === null || _e === void 0 ? void 0 : _e[tooltipItem.datasetIndex || 0].valuePrefix) || '';
|
339
|
+
var suffix = ((_f = data.datasets) === null || _f === void 0 ? void 0 : _f[tooltipItem.datasetIndex || 0].valueSuffix) || '';
|
340
|
+
return `${label}: ${prefix + (value === null || value === void 0 ? void 0 : value.toLocaleString()) + suffix}`;
|
341
|
+
};
|
342
|
+
}
|
343
|
+
//# sourceMappingURL=config-converter.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"config-converter.js","sourceRoot":"","sources":["../src/config-converter.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { TinyColor } from '@ctrl/tinycolor'\n\nexport function convertConfigure(chart: SceneChart.ChartConfig) {\n if (!chart) return\n\n var data = chart.data || {}\n var datasets = data.datasets || []\n var options = chart.options || {}\n var scales = options.scales || {}\n var xAxes: Array<SceneChart.ChartXAxe>\n var yAxes: Array<SceneChart.ChartYAxe>\n var scale\n var legend = options.legend || {}\n var tooltips = (options.tooltips = options.tooltips || {})\n\n var multiAxis = options.multiAxis\n var stacked = false\n var yStacked = [false, false]\n var fontSize = Number(options.defaultFontSize)\n var fontFamily = options.defaultFontFamily\n var fontColor = options.defaultFontColor\n var theme = options.theme\n\n // backward compatible\n _configureBackwardsCompatible(chart.type, options)\n\n // setup series configure\n for (let i in datasets) {\n let series = datasets[i]\n\n if (options.stacked && !series.stack) {\n series.stack = 'A'\n }\n\n /*\n * TODO from chartjs 2.9, categoryPercentage, barPercentage properties move to dataset.\n * so need to move related properties - categorySpacing, barSpacing should be moved to series.\n */\n if (chart.type == 'bar') {\n let categorySpacing = (scales.xAxes && scales.xAxes[0].categorySpacing) || 0\n let barSpacing = (scales.xAxes && scales.xAxes[0].barSpacing) || 0\n\n series.categoryPercentage = 1 - categorySpacing || 1\n series.barPercentage = 1 - barSpacing || 0.8\n } else if (chart.type == 'horizontalBar') {\n let categorySpacing = (scales.yAxes && scales.yAxes[0].categorySpacing) || 0\n let barSpacing = (scales.yAxes && scales.yAxes[0].barSpacing) || 0\n\n series.categoryPercentage = 1 - categorySpacing || 1\n series.barPercentage = 1 - barSpacing || 0.8\n }\n\n _setSeriesConfigures(series, chart)\n\n if (!multiAxis) {\n if (series.yAxisID == 'right') series.yAxisID = 'left'\n }\n }\n\n delete options.stacked\n\n var leftSeries = datasets.filter(d => d.yAxisID == 'left')\n var rightSeries = datasets.filter(d => d.yAxisID == 'right')\n\n leftSeries.forEach(s => {\n var filtered = leftSeries.filter(ss => s.stack == ss.stack)\n if (filtered.length > 1) {\n yStacked[0] = true\n return\n }\n })\n\n rightSeries.forEach(s => {\n var filtered = rightSeries.filter(ss => s.stack == ss.stack)\n if (filtered.length > 1) {\n yStacked[1] = true\n return\n }\n })\n\n stacked = yStacked[0] || yStacked[1]\n\n // setup options\n // 1. setup scales\n switch (chart.type) {\n case 'line':\n case 'bar':\n case 'horizontalBar':\n xAxes = scales.xAxes || []\n yAxes = scales.yAxes || []\n\n if (chart.type == 'horizontalBar') {\n xAxes = scales.yAxes || []\n yAxes = scales.xAxes || []\n }\n\n // 1-1. setup xAxes\n for (let i in xAxes) {\n let axis = xAxes[i]\n _setStacked(axis, stacked)\n _setScalesFont(axis, {\n fontSize,\n fontFamily\n })\n _setScalesAutoMinMax(axis)\n _setScalesTickRotation(axis)\n _setAxisTitle(axis)\n _setScalesTheme(axis, theme, fontColor)\n _appendTickCallback(axis.ticks)\n\n axis.gridLines!.display = options.xGridLine\n }\n\n // 1-2. setup yAxes\n for (let i in yAxes) {\n let axis = yAxes[i]\n\n //@ts-ignore\n if (i == 1) {\n _setMultiAxis(axis, multiAxis)\n }\n _setStacked(axis, yStacked[i])\n _setScalesFont(axis, {\n fontSize,\n fontFamily\n })\n _setScalesAutoMinMax(axis)\n _setAxisTitle(axis)\n _setScalesTheme(axis, theme, fontColor)\n _appendTickCallback(axis.ticks)\n\n //@ts-ignore\n if (i == 0) axis.gridLines.display = options.yGridLine\n\n //@ts-ignore\n if (i == 1) axis.gridLines.display = options.y2ndGridLine\n }\n\n break\n case 'pie':\n case 'doughnut':\n break\n default:\n scale = options.scale || {}\n _setScalesFont(scale, {\n fontSize,\n fontFamily\n })\n break\n }\n\n // 2. setup legend\n _setLegendFont(legend, {\n fontSize,\n fontFamily\n })\n legend.labels && (legend.labels.boxWidth = 15)\n _setLegendTheme(legend, theme, fontColor)\n\n // 3. setup tooltips\n _setTooltipFont(tooltips, {\n fontSize,\n fontFamily\n })\n _setTooltipCallback(tooltips)\n}\n\nfunction _configureBackwardsCompatible(type: string, options: SceneChart.ChartOptions) {\n switch (type) {\n case 'horizontalBar':\n if (!options.scales) options.scales = {}\n break\n case 'radar':\n case 'polarArea':\n if (options.defaultFontColor) {\n options.scale!.ticks!.fontColor = options.defaultFontColor\n if (options.scale.pointLabels) {\n options.scale.pointLabels.fontColor = options.defaultFontColor\n } else {\n options.scale.pointLabels = { fontColor: options.defaultFontColor }\n }\n }\n options.scale!.ticks!.backdropColor = options.fillStyle ? options.fillStyle : '#00ff0000'\n break\n case 'line':\n case 'bar':\n if (!options.scales) options.scales = {}\n if (!options.scales.yAxes) options.scales.yAxes = []\n\n if (options.scales.yAxes.length === 1) {\n let yAxes = options.scales.yAxes\n yAxes.push({\n position: 'right',\n id: 'right',\n display: options.multiAxis || false,\n gridLines: {\n display: (yAxes[0] && yAxes[0].gridLines && yAxes[0].gridLines.display) || false\n },\n ticks: {\n beginAtZero: false,\n callback: function (value: any, index: number, values: any[]) {\n var returnValue = value\n if (typeof returnValue == 'number') {\n returnValue = returnValue.toLocaleString()\n }\n\n return returnValue\n }\n }\n })\n }\n break\n case 'pie':\n case 'doughnut':\n break\n default:\n if (!options.scale) options.scale = {}\n\n break\n }\n}\n\nfunction _setStacked(axis: SceneChart.ChartXAxe, stacked: boolean) {\n axis.stacked = stacked\n}\n\nfunction _setMultiAxis(axis: SceneChart.ChartXAxe, multiAxis: boolean) {\n axis.display = multiAxis\n}\n\nfunction _setAxisTitle(axis: SceneChart.ChartXAxe) {\n if (!axis.scaleLabel) axis.scaleLabel = {}\n axis.scaleLabel.labelString = axis.axisTitle\n axis.scaleLabel.display = axis.axisTitle ? true : false\n}\n\nfunction _setScalesFont(\n axis: SceneChart.ChartXAxe | SceneChart.RadialLinearScale,\n { fontSize, fontFamily }: { fontSize: number; fontFamily: string }\n) {\n axis.ticks = axis.ticks ? axis.ticks : {}\n axis.ticks.fontSize = fontSize\n\n if (fontFamily) {\n axis.ticks.fontFamily = fontFamily\n }\n\n ;(axis as SceneChart.RadialLinearScale).pointLabels = {\n fontSize,\n fontFamily\n }\n}\n\nfunction _setScalesAutoMinMax(axis: SceneChart.ChartXAxe) {\n axis.ticks = axis.ticks ? axis.ticks : {}\n\n let autoMin = axis.ticks.autoMin\n let autoMax = axis.ticks.autoMax\n\n if (autoMin === true) {\n delete axis.ticks.min\n }\n if (autoMax === true) {\n delete axis.ticks.max\n }\n}\n\nfunction _setScalesTickRotation(axis: SceneChart.ChartXAxe) {\n axis.ticks = axis.ticks ? axis.ticks : {}\n // axis.ticks.maxRotation = 0\n}\n\nfunction _setScalesTheme(axis: SceneChart.ChartXAxe, theme: SceneChart.Theme, fontColor: string) {\n var baseColor = _getBaseColorFromTheme(theme)\n\n axis.gridLines = axis.gridLines ? axis.gridLines : {}\n if (axis.gridLines) {\n axis.gridLines.zeroLineColor = baseColor.clone().setAlpha(0.5).toString()\n axis.gridLines.color = baseColor.clone().setAlpha(0.1).toString()\n }\n\n axis.ticks = axis.ticks ? axis.ticks : {}\n axis.ticks.fontColor = fontColor ? fontColor : baseColor.clone().setAlpha(0.5).toString()\n}\n\nfunction _setLegendFont(\n legend: SceneChart.ChartLegendOptions,\n { fontFamily, fontSize }: { fontFamily: string; fontSize: number }\n) {\n legend.labels = legend.labels ? legend.labels : {}\n legend.labels.fontSize = fontSize\n if (fontFamily) legend.labels.fontFamily = fontFamily\n}\n\nfunction _setLegendTheme(legend: SceneChart.ChartLegendOptions, theme: SceneChart.Theme, fontColor: string) {\n var baseColor = _getBaseColorFromTheme(theme)\n\n legend.labels = legend.labels ? legend.labels : {}\n legend.labels.fontColor = fontColor ? fontColor : baseColor.clone().setAlpha(0.5).toString()\n}\n\nfunction _getBaseColorFromTheme(theme: SceneChart.Theme) {\n let darkColor = '#000'\n let lightColor = '#fff'\n\n var baseColor\n\n switch (theme) {\n case 'light':\n baseColor = lightColor\n break\n case 'dark':\n default:\n baseColor = darkColor\n break\n }\n\n baseColor = new TinyColor(baseColor)\n\n return baseColor\n}\n\nfunction _setSeriesConfigures(series: SceneChart.ChartDataSets, chart: SceneChart.ChartConfig) {\n var type = series.type || chart.type\n var stackGroup = `${type} ${series.yAxisID} ${series.stack || series.dataKey}`\n var color = series.color ? series.color : series.backgroundColor\n\n switch (type) {\n case 'bar':\n case 'horizontalBar':\n series.borderColor = series.backgroundColor = color\n break\n\n case 'line':\n case 'radar':\n color = series.color ? series.color : series.borderColor\n series.pointBackgroundColor = series.pointBorderColor = series.borderColor = series.backgroundColor = color\n series.pointBorderWidth = (series.borderWidth as number) * 0.5\n series.pointHoverRadius = series.pointRadius\n if (series.fill == undefined) series.fill = false\n break\n\n default:\n series.borderColor = series.backgroundColor = color\n break\n }\n\n series.stack = stackGroup\n}\n\nfunction _appendTickCallback(ticks: SceneChart.TickOptions | undefined) {\n if (!ticks) {\n return\n }\n\n ticks.callback = function (value, index, values) {\n var returnValue\n if (!Number.isNaN(Number(value))) {\n returnValue = Number(value).toLocaleString()\n } else {\n returnValue = value\n }\n\n if (returnValue) return returnValue\n }\n}\n\nfunction _setTooltipFont(\n tooltips: SceneChart.ChartTooltipOptions,\n { fontSize, fontFamily }: { fontSize: number; fontFamily: string }\n) {\n tooltips.titleFontSize = tooltips.bodyFontSize = tooltips.footerFontSize = fontSize\n if (fontFamily) tooltips.titleFontFamily = tooltips.bodyFontFamily = tooltips.footerFontFamily = fontFamily\n}\n\nfunction _setTooltipCallback(tooltips: SceneChart.ChartTooltipOptions) {\n tooltips.callbacks = tooltips.callbacks || {}\n\n tooltips.intersect = false\n tooltips.mode = 'index'\n\n tooltips.callbacks.label = function (tooltipItem: SceneChart.ChartTooltipItem, data: SceneChart.ChartData) {\n var value = data.datasets?.[tooltipItem.datasetIndex || 0].data?.[tooltipItem.index || 0]\n var datasetLabel = data.datasets?.[tooltipItem.datasetIndex || 0].label\n var label = datasetLabel || data.labels?.[tooltipItem.index || 0]\n var toNumValue = Number(value)\n\n if (!isNaN(toNumValue)) {\n value = toNumValue\n }\n\n var prefix = data.datasets?.[tooltipItem.datasetIndex || 0].valuePrefix || ''\n var suffix = data.datasets?.[tooltipItem.datasetIndex || 0].valueSuffix || ''\n\n return `${label}: ${prefix + value?.toLocaleString() + suffix}`\n }\n}\n"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/editors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,aAAa,MAAM,2BAA2B,CAAA;AAErD,eAAe;IACb;QACE,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,aAAa,CAAC,EAAE;KAC1B;CACF,CAAA","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport ChartJSEditor from './property-editor-chartjs'\n\nexport default [\n {\n type: 'chartjs',\n element: ChartJSEditor.is\n }\n]\n"]}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
import { LitElement } from 'lit';
|
2
|
+
import { TinyColor } from '@ctrl/tinycolor';
|
3
|
+
export default class PropertyEditorChartJSAbstract extends LitElement {
|
4
|
+
static styles: import("lit").CSSResult[];
|
5
|
+
value: any;
|
6
|
+
currentSeriesIndex: number;
|
7
|
+
render(): import("lit-html").TemplateResult<1>;
|
8
|
+
firstUpdated(): void;
|
9
|
+
displayValueTemplate(): import("lit-html").TemplateResult<1>;
|
10
|
+
editorTemplate(props: any): import("lit-html").TemplateResult<1>;
|
11
|
+
get data(): any;
|
12
|
+
set data(data: any);
|
13
|
+
get datasets(): any;
|
14
|
+
set datasets(datasets: any);
|
15
|
+
get series(): any;
|
16
|
+
set series(series: any);
|
17
|
+
set dataKey(key: any);
|
18
|
+
get dataKey(): any;
|
19
|
+
get legend(): any;
|
20
|
+
set legend(legend: any);
|
21
|
+
get theme(): any;
|
22
|
+
set theme(theme: any);
|
23
|
+
get scales(): any;
|
24
|
+
set scales(scales: any);
|
25
|
+
get display(): any;
|
26
|
+
set display(display: any);
|
27
|
+
get position(): any;
|
28
|
+
set position(position: any);
|
29
|
+
get stacked(): any;
|
30
|
+
set stacked(stacked: any);
|
31
|
+
get labelDataKey(): any;
|
32
|
+
set labelDataKey(labelDataKey: any);
|
33
|
+
set options(options: any);
|
34
|
+
get options(): any;
|
35
|
+
onValuesChanged(e: Event): void;
|
36
|
+
onTapAddTab(e: Event): void;
|
37
|
+
onTapRemoveCurrentTab(e: Event): void;
|
38
|
+
_getSeriesModel({ chartType, datasetsLength, lastSeriesColor }: {
|
39
|
+
chartType: any;
|
40
|
+
datasetsLength: number;
|
41
|
+
lastSeriesColor: TinyColor;
|
42
|
+
}): any;
|
43
|
+
_getElementValue(element: HTMLElement): any;
|
44
|
+
}
|