@operato/scene-scichart 7.2.6 → 7.2.8
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +20 -0
- package/db.sqlite +0 -0
- package/dist/charts/ox-scichart-multiple copy.d.ts +53 -0
- package/dist/charts/ox-scichart-multiple copy.js +411 -0
- package/dist/charts/ox-scichart-multiple copy.js.map +1 -0
- package/dist/charts/ox-scichart-multiple.d.ts +9 -8
- package/dist/charts/ox-scichart-multiple.js +207 -85
- package/dist/charts/ox-scichart-multiple.js.map +1 -1
- package/dist/charts/scichart-builder copy.d.ts +22 -0
- package/dist/charts/scichart-builder copy.js +420 -0
- package/dist/charts/scichart-builder copy.js.map +1 -0
- package/dist/charts/scichart-builder.d.ts +2 -0
- package/dist/charts/scichart-builder.js +44 -30
- package/dist/charts/scichart-builder.js.map +1 -1
- package/dist/charts/scichart-overview-builder.d.ts +13 -0
- package/dist/charts/scichart-overview-builder.js +219 -0
- package/dist/charts/scichart-overview-builder.js.map +1 -0
- package/dist/templates/scichart-multiple-timeseries.d.ts +1 -1
- package/dist/templates/scichart-multiple-timeseries.js +1 -1
- package/dist/templates/scichart-multiple-timeseries.js.map +1 -1
- package/logs/.08636eb59927f12972f6774f5947c8507b3564c2-audit.json +20 -10
- package/logs/.5e5d741d8b7784a2fbad65eedc0fd46946aaf6f2-audit.json +15 -0
- package/logs/{application-2024-08-02-17.log → application-2024-08-04-01.log} +8 -8
- package/logs/application-2024-08-04-04.log +420 -0
- package/logs/application-2024-08-04-18.log +2 -0
- package/logs/{application-2024-08-02-18.log → application-2024-08-04-19.log} +8 -8
- package/logs/connections-2024-08-04-01.log +50 -0
- package/logs/connections-2024-08-04-04.log +200 -0
- package/logs/connections-2024-08-04-19.log +50 -0
- package/package.json +2 -2
- package/src/charts/ox-scichart-multiple.ts +256 -99
- package/src/charts/scichart-builder.ts +47 -30
- package/src/templates/scichart-multiple-timeseries.ts +1 -1
- package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,420 @@
|
|
1
|
+
import { TinyColor } from '@ctrl/tinycolor';
|
2
|
+
import { SciChartSurface, SciChartJSLightTheme, SciChartJSDarkv2Theme, XyDataSeries, FastLineRenderableSeries, SplineLineRenderableSeries, FastColumnRenderableSeries, StackedColumnRenderableSeries, StackedMountainRenderableSeries, StackedColumnCollection, StackedMountainCollection, NumericAxis, DateTimeNumericAxis, EAutoRange, EAxisAlignment, EExecuteOn, ECoordinateMode, EHorizontalAnchorPoint, EVerticalAnchorPoint, NumberRange, MouseWheelZoomModifier, RubberBandXyZoomModifier, ZoomPanModifier, ZoomExtentsModifier, RolloverModifier, NumericLabelProvider, SmartDateLabelProvider, EllipsePointMarker, SquarePointMarker, TrianglePointMarker, CrossPointMarker, XPointMarker, WaveAnimation, LegendModifier, ELegendPlacement, EXyDirection, XAxisDragModifier, YAxisDragModifier, TextAnnotation, LineAnnotation, BoxAnnotation, HorizontalLineAnnotation, VerticalLineAnnotation, OverviewRangeSelectionModifier, ENumericFormat } from 'scichart';
|
3
|
+
SciChartSurface.UseCommunityLicense();
|
4
|
+
SciChartSurface.configure({
|
5
|
+
dataUrl: `/node_modules/scichart/_wasm/scichart2d.data`,
|
6
|
+
wasmUrl: `/node_modules/scichart/_wasm/scichart2d.wasm`
|
7
|
+
});
|
8
|
+
const DEFAULT_COLOR = '#FF6600';
|
9
|
+
const DEFAULT_STROKE = '#000000';
|
10
|
+
const POINT_MARKER_SIZE = 10;
|
11
|
+
const STROKE_THICKNESS = 2;
|
12
|
+
const ANIMATION_DURATION = 1000;
|
13
|
+
function getLocalTimeOffset() {
|
14
|
+
const now = new Date();
|
15
|
+
return now.getTimezoneOffset() * -60;
|
16
|
+
}
|
17
|
+
function getBaseColorFromTheme(theme) {
|
18
|
+
return new TinyColor(theme == 'dark' ? '#fff' : '#000');
|
19
|
+
}
|
20
|
+
function getThemeFromBrowser() {
|
21
|
+
return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
22
|
+
}
|
23
|
+
export function convertColor(color, defaultColor) {
|
24
|
+
const tinyColor = new TinyColor(color);
|
25
|
+
return tinyColor.toHex8String() || defaultColor;
|
26
|
+
}
|
27
|
+
export function calculatePrecision(format = '') {
|
28
|
+
const formatString = format.toString();
|
29
|
+
if (formatString.indexOf('.') !== -1) {
|
30
|
+
return formatString.split('.')[1].length;
|
31
|
+
}
|
32
|
+
return 0;
|
33
|
+
}
|
34
|
+
function createPointMarker(wasmContext, dataset, color = DEFAULT_COLOR) {
|
35
|
+
const { pointStyle, pointRadius = POINT_MARKER_SIZE } = dataset || {};
|
36
|
+
if (!pointStyle) {
|
37
|
+
return;
|
38
|
+
}
|
39
|
+
const pointMarkerOptions = {
|
40
|
+
width: pointRadius,
|
41
|
+
height: pointRadius,
|
42
|
+
strokeThickness: STROKE_THICKNESS,
|
43
|
+
fill: color,
|
44
|
+
stroke: DEFAULT_STROKE
|
45
|
+
};
|
46
|
+
switch (pointStyle) {
|
47
|
+
case 'triangle':
|
48
|
+
return new TrianglePointMarker(wasmContext, pointMarkerOptions);
|
49
|
+
case 'rect':
|
50
|
+
return new SquarePointMarker(wasmContext, pointMarkerOptions);
|
51
|
+
case 'cross':
|
52
|
+
return new CrossPointMarker(wasmContext, pointMarkerOptions);
|
53
|
+
case 'crossRot':
|
54
|
+
return new XPointMarker(wasmContext, pointMarkerOptions);
|
55
|
+
default:
|
56
|
+
return new EllipsePointMarker(wasmContext, pointMarkerOptions);
|
57
|
+
}
|
58
|
+
}
|
59
|
+
function createAxis(wasmContext, axis, index, isXAxis, fontColor, fontFamily, fontSize, precision, options) {
|
60
|
+
const { axisTitle, ticks } = axis;
|
61
|
+
const { autoMax, autoMin, min, max, stepSize, beginAtZero, color = fontColor, textStrokeColor = fontColor, display = false } = ticks || {};
|
62
|
+
const axisOptions = {
|
63
|
+
axisTitle,
|
64
|
+
autoRange: autoMin || autoMax ? EAutoRange.Always : EAutoRange.Once,
|
65
|
+
axisAlignment: isXAxis ? EAxisAlignment.Bottom : index === 0 ? EAxisAlignment.Left : EAxisAlignment.Right,
|
66
|
+
visibleRange: min !== undefined && max !== undefined ? new NumberRange(min, max) : undefined,
|
67
|
+
majorDelta: stepSize,
|
68
|
+
growBy: beginAtZero ? new NumberRange(0.1, 0.1) : undefined,
|
69
|
+
labelStyle: {
|
70
|
+
fontFamily,
|
71
|
+
fontSize,
|
72
|
+
color
|
73
|
+
},
|
74
|
+
axisTitleStyle: {
|
75
|
+
fontFamily,
|
76
|
+
fontSize,
|
77
|
+
color: textStrokeColor
|
78
|
+
},
|
79
|
+
...options,
|
80
|
+
drawLabels: display
|
81
|
+
};
|
82
|
+
const labelProvider = isXAxis
|
83
|
+
? new SmartDateLabelProvider({
|
84
|
+
showWiderDateOnFirstLabel: true,
|
85
|
+
showYearOnWiderDate: false,
|
86
|
+
dateOffset: getLocalTimeOffset()
|
87
|
+
})
|
88
|
+
: new NumericLabelProvider();
|
89
|
+
if (isXAxis) {
|
90
|
+
labelProvider.cursorNumericFormat = ENumericFormat.Date_HHMMSS;
|
91
|
+
}
|
92
|
+
else {
|
93
|
+
labelProvider.numericFormat = ENumericFormat.Decimal;
|
94
|
+
labelProvider.precision = precision || calculatePrecision(stepSize || 0.1);
|
95
|
+
labelProvider.cursorNumericFormat = ENumericFormat.NoFormat;
|
96
|
+
}
|
97
|
+
return isXAxis
|
98
|
+
? new DateTimeNumericAxis(wasmContext, {
|
99
|
+
...axisOptions,
|
100
|
+
labelProvider
|
101
|
+
})
|
102
|
+
: new NumericAxis(wasmContext, {
|
103
|
+
...axisOptions,
|
104
|
+
id: index !== 0 ? `yAxis${index}` : undefined,
|
105
|
+
labelProvider
|
106
|
+
});
|
107
|
+
}
|
108
|
+
function createSeries(wasmContext, dataset, index, stacked, animation, yAxisId) {
|
109
|
+
const dataSeries = new XyDataSeries(wasmContext, {
|
110
|
+
dataSeriesName: dataset.label,
|
111
|
+
containsNaN: false
|
112
|
+
});
|
113
|
+
const stackGroupId = dataset.stack || `__stack${index}__`;
|
114
|
+
const color = convertColor(dataset.backgroundColor, DEFAULT_COLOR);
|
115
|
+
const strokeColor = convertColor(dataset.color, DEFAULT_COLOR);
|
116
|
+
const borderWidth = dataset.borderWidth || STROKE_THICKNESS;
|
117
|
+
const pointMarker = createPointMarker(wasmContext, dataset, strokeColor);
|
118
|
+
let series;
|
119
|
+
if (dataset.type === 'bar') {
|
120
|
+
series = stacked
|
121
|
+
? new StackedColumnRenderableSeries(wasmContext, {
|
122
|
+
dataSeries,
|
123
|
+
strokeThickness: borderWidth,
|
124
|
+
fill: color,
|
125
|
+
stackedGroupId: stackGroupId
|
126
|
+
})
|
127
|
+
: new FastColumnRenderableSeries(wasmContext, {
|
128
|
+
dataSeries,
|
129
|
+
strokeThickness: borderWidth,
|
130
|
+
fill: color,
|
131
|
+
animation: animation ? new WaveAnimation({ duration: ANIMATION_DURATION, fadeEffect: true }) : undefined,
|
132
|
+
yAxisId
|
133
|
+
});
|
134
|
+
}
|
135
|
+
else {
|
136
|
+
series = stacked
|
137
|
+
? new StackedMountainRenderableSeries(wasmContext, {
|
138
|
+
dataSeries,
|
139
|
+
strokeThickness: borderWidth,
|
140
|
+
stroke: strokeColor,
|
141
|
+
fill: color
|
142
|
+
})
|
143
|
+
: dataset.lineTension && dataset.lineTension > 0
|
144
|
+
? new SplineLineRenderableSeries(wasmContext, {
|
145
|
+
dataSeries,
|
146
|
+
strokeThickness: borderWidth,
|
147
|
+
stroke: strokeColor,
|
148
|
+
pointMarker,
|
149
|
+
animation: animation ? new WaveAnimation({ duration: ANIMATION_DURATION, fadeEffect: true }) : undefined,
|
150
|
+
yAxisId
|
151
|
+
})
|
152
|
+
: new FastLineRenderableSeries(wasmContext, {
|
153
|
+
dataSeries,
|
154
|
+
strokeThickness: borderWidth,
|
155
|
+
stroke: strokeColor,
|
156
|
+
pointMarker,
|
157
|
+
animation: animation ? new WaveAnimation({ duration: ANIMATION_DURATION, fadeEffect: true }) : undefined,
|
158
|
+
yAxisId
|
159
|
+
});
|
160
|
+
}
|
161
|
+
return { series, dataSeries };
|
162
|
+
}
|
163
|
+
export async function buildSciChart(config, container, { fontSize = 14, fontFamily = 'Roboto', fontColor }, { grouped, precision }) {
|
164
|
+
if (!config)
|
165
|
+
return;
|
166
|
+
const { type: chartType, options, data: fromData } = config;
|
167
|
+
const { datasets = [] } = fromData || {};
|
168
|
+
var { theme, tooltip = true, animation = true, legend = {
|
169
|
+
display: true,
|
170
|
+
position: 'top'
|
171
|
+
}, scales: fromScales, xGridLine = false, yGridLine = false, y2ndGridLine = false, stacked = false, multiAxis = false, annotations = [] } = options || {};
|
172
|
+
var baseColor = getBaseColorFromTheme(theme);
|
173
|
+
if (theme === 'auto') {
|
174
|
+
theme = getThemeFromBrowser();
|
175
|
+
}
|
176
|
+
fontColor = fontColor || baseColor.clone().toString();
|
177
|
+
const { xAxes = [], yAxes = [] } = fromScales || {};
|
178
|
+
const chart = await SciChartSurface.create(container, {
|
179
|
+
theme: theme == 'dark' ? new SciChartJSDarkv2Theme() : new SciChartJSLightTheme()
|
180
|
+
});
|
181
|
+
const { sciChartSurface, wasmContext } = chart;
|
182
|
+
xAxes.forEach((axis, index) => {
|
183
|
+
const xAxis = createAxis(wasmContext, axis, index, true, fontColor, fontFamily, fontSize, undefined, {
|
184
|
+
drawMajorTickLines: true,
|
185
|
+
drawMinorTickLines: true,
|
186
|
+
drawMajorGridLines: xGridLine,
|
187
|
+
drawMinorGridLines: xGridLine
|
188
|
+
});
|
189
|
+
sciChartSurface.xAxes.add(xAxis);
|
190
|
+
});
|
191
|
+
(multiAxis ? yAxes : [yAxes[0]]).forEach((axis, index) => {
|
192
|
+
const yAxis = createAxis(wasmContext, axis, index, false, fontColor, fontFamily, fontSize, precision, {
|
193
|
+
drawMajorTickLines: true,
|
194
|
+
drawMinorTickLines: true,
|
195
|
+
drawMajorGridLines: index == 0 ? yGridLine : y2ndGridLine,
|
196
|
+
drawMinorGridLines: index == 0 ? yGridLine : y2ndGridLine
|
197
|
+
});
|
198
|
+
sciChartSurface.yAxes.add(yAxis);
|
199
|
+
});
|
200
|
+
const dataSeriesArray = datasets.map((dataset, index) => {
|
201
|
+
const yAxisId = dataset.yAxisID == 'right' && multiAxis ? 'yAxis1' : undefined;
|
202
|
+
const { series, dataSeries } = createSeries(wasmContext, dataset, index, !!stacked, !!animation, yAxisId);
|
203
|
+
sciChartSurface.renderableSeries.add(series);
|
204
|
+
if (tooltip) {
|
205
|
+
const rolloverModifier = new RolloverModifier({
|
206
|
+
showTooltip: true,
|
207
|
+
showAxisLabel: true /* show x-axis label for cursor */,
|
208
|
+
modifierGroup: grouped,
|
209
|
+
tooltipDataTemplate: (seriesInfo) => {
|
210
|
+
const valuesWithLabels = [];
|
211
|
+
const xySeriesInfo = seriesInfo;
|
212
|
+
valuesWithLabels.push(xySeriesInfo.formattedYValue);
|
213
|
+
return valuesWithLabels;
|
214
|
+
}
|
215
|
+
});
|
216
|
+
sciChartSurface.chartModifiers.add(rolloverModifier);
|
217
|
+
}
|
218
|
+
return dataSeries;
|
219
|
+
});
|
220
|
+
if (stacked) {
|
221
|
+
const stackedColumnCollection = new StackedColumnCollection(wasmContext);
|
222
|
+
const stackedMountainCollection = new StackedMountainCollection(wasmContext);
|
223
|
+
sciChartSurface.renderableSeries.asArray().forEach((series) => {
|
224
|
+
if (series instanceof StackedColumnRenderableSeries) {
|
225
|
+
stackedColumnCollection.add(series);
|
226
|
+
}
|
227
|
+
else if (series instanceof StackedMountainRenderableSeries) {
|
228
|
+
stackedMountainCollection.add(series);
|
229
|
+
}
|
230
|
+
});
|
231
|
+
if (stackedColumnCollection.size() > 0) {
|
232
|
+
sciChartSurface.renderableSeries.add(stackedColumnCollection);
|
233
|
+
}
|
234
|
+
if (stackedMountainCollection.size() > 0) {
|
235
|
+
sciChartSurface.renderableSeries.add(stackedMountainCollection);
|
236
|
+
}
|
237
|
+
}
|
238
|
+
if (annotations) {
|
239
|
+
annotations.forEach(annotation => {
|
240
|
+
let sciAnnotation;
|
241
|
+
let horizontalAnchorPoint = annotation.horizontalAnchorPoint == 'Right'
|
242
|
+
? EHorizontalAnchorPoint.Right
|
243
|
+
: annotation.horizontalAnchorPoint == 'Left'
|
244
|
+
? EHorizontalAnchorPoint.Left
|
245
|
+
: EHorizontalAnchorPoint.Center;
|
246
|
+
let verticalAnchorPoint = annotation.verticalAnchorPoint == 'Top'
|
247
|
+
? EVerticalAnchorPoint.Top
|
248
|
+
: annotation.verticalAnchorPoint == 'Bottom'
|
249
|
+
? EVerticalAnchorPoint.Bottom
|
250
|
+
: EVerticalAnchorPoint.Center;
|
251
|
+
switch (annotation.type) {
|
252
|
+
case 'text':
|
253
|
+
sciAnnotation = new TextAnnotation({
|
254
|
+
x1: annotation.x1,
|
255
|
+
y1: annotation.y1,
|
256
|
+
text: annotation.text,
|
257
|
+
horizontalAnchorPoint,
|
258
|
+
verticalAnchorPoint,
|
259
|
+
fontSize: annotation.fontSize,
|
260
|
+
fontFamily: annotation.fontFamily,
|
261
|
+
textColor: convertColor(annotation.stroke, fontColor),
|
262
|
+
xCoordinateMode: (annotation.xCoordinateMode || ECoordinateMode.DataValue),
|
263
|
+
yCoordinateMode: (annotation.yCoordinateMode || ECoordinateMode.DataValue)
|
264
|
+
});
|
265
|
+
break;
|
266
|
+
case 'line':
|
267
|
+
sciAnnotation = new LineAnnotation({
|
268
|
+
x1: annotation.x1,
|
269
|
+
y1: annotation.y1,
|
270
|
+
x2: annotation.x2,
|
271
|
+
y2: annotation.y2,
|
272
|
+
stroke: convertColor(annotation.stroke, '#FF0000'),
|
273
|
+
strokeThickness: annotation.strokeThickness,
|
274
|
+
xCoordinateMode: (annotation.xCoordinateMode || ECoordinateMode.DataValue),
|
275
|
+
yCoordinateMode: (annotation.yCoordinateMode || ECoordinateMode.DataValue)
|
276
|
+
});
|
277
|
+
break;
|
278
|
+
case 'box':
|
279
|
+
sciAnnotation = new BoxAnnotation({
|
280
|
+
x1: annotation.x1,
|
281
|
+
y1: annotation.y1,
|
282
|
+
x2: annotation.x2,
|
283
|
+
y2: annotation.y2,
|
284
|
+
fill: convertColor(annotation.fill, '#FF0000'),
|
285
|
+
stroke: convertColor(annotation.stroke, '#FF0000'),
|
286
|
+
strokeThickness: annotation.strokeThickness,
|
287
|
+
xCoordinateMode: (annotation.xCoordinateMode || ECoordinateMode.DataValue),
|
288
|
+
yCoordinateMode: (annotation.yCoordinateMode || ECoordinateMode.DataValue)
|
289
|
+
});
|
290
|
+
break;
|
291
|
+
case 'horizontalLine':
|
292
|
+
sciAnnotation = new HorizontalLineAnnotation({
|
293
|
+
y1: annotation.y1,
|
294
|
+
stroke: convertColor(annotation.stroke, '#FF0000'),
|
295
|
+
strokeThickness: annotation.strokeThickness,
|
296
|
+
xCoordinateMode: (annotation.xCoordinateMode || ECoordinateMode.DataValue),
|
297
|
+
yCoordinateMode: (annotation.yCoordinateMode || ECoordinateMode.DataValue)
|
298
|
+
});
|
299
|
+
break;
|
300
|
+
case 'verticalLine':
|
301
|
+
sciAnnotation = new VerticalLineAnnotation({
|
302
|
+
x1: annotation.x1,
|
303
|
+
stroke: convertColor(annotation.stroke, '#FF0000'),
|
304
|
+
strokeThickness: annotation.strokeThickness,
|
305
|
+
xCoordinateMode: (annotation.xCoordinateMode || ECoordinateMode.DataValue),
|
306
|
+
yCoordinateMode: (annotation.yCoordinateMode || ECoordinateMode.DataValue)
|
307
|
+
});
|
308
|
+
break;
|
309
|
+
default:
|
310
|
+
break;
|
311
|
+
}
|
312
|
+
if (sciAnnotation) {
|
313
|
+
sciChartSurface.annotations.add(sciAnnotation);
|
314
|
+
}
|
315
|
+
});
|
316
|
+
}
|
317
|
+
sciChartSurface.chartModifiers.add(new RubberBandXyZoomModifier({ executeOn: EExecuteOn.MouseRightButton, modifierGroup: grouped }),
|
318
|
+
// new ZoomPanModifier({ xyDirection: EXyDirection.XDirection }),
|
319
|
+
new ZoomPanModifier({ xyDirection: EXyDirection.XDirection }), new MouseWheelZoomModifier({ xyDirection: EXyDirection.XDirection }), new ZoomExtentsModifier(), new XAxisDragModifier(), new YAxisDragModifier());
|
320
|
+
if (legend === null || legend === void 0 ? void 0 : legend.display) {
|
321
|
+
const legendModifier = new LegendModifier({
|
322
|
+
showCheckboxes: true,
|
323
|
+
showSeriesMarkers: true,
|
324
|
+
showLegend: true,
|
325
|
+
placement: legend.position == 'top'
|
326
|
+
? ELegendPlacement.TopLeft
|
327
|
+
: legend.position == 'left'
|
328
|
+
? ELegendPlacement.BottomLeft
|
329
|
+
: legend.position == 'bottom'
|
330
|
+
? ELegendPlacement.BottomRight
|
331
|
+
: ELegendPlacement.TopRight
|
332
|
+
});
|
333
|
+
sciChartSurface.chartModifiers.add(legendModifier);
|
334
|
+
}
|
335
|
+
return { chart, dataSeries: dataSeriesArray };
|
336
|
+
}
|
337
|
+
export async function buildSciChartOverview(config, container, { fontSize = 14, fontFamily = 'Roboto', fontColor }, axisSynchroniser) {
|
338
|
+
if (!config)
|
339
|
+
return;
|
340
|
+
const { type: chartType, options, data: fromData } = config;
|
341
|
+
const { datasets = [] } = fromData || {};
|
342
|
+
var { theme, scales: fromScales } = options || {};
|
343
|
+
var baseColor = getBaseColorFromTheme(theme);
|
344
|
+
if (theme === 'auto') {
|
345
|
+
theme = getThemeFromBrowser();
|
346
|
+
}
|
347
|
+
fontColor = fontColor || baseColor.clone().toString();
|
348
|
+
const { xAxes = [], yAxes = [] } = fromScales || {};
|
349
|
+
const chart = await SciChartSurface.create(container, {
|
350
|
+
theme: theme == 'dark' ? new SciChartJSDarkv2Theme() : new SciChartJSLightTheme()
|
351
|
+
});
|
352
|
+
const { sciChartSurface, wasmContext } = chart;
|
353
|
+
xAxes.forEach((axis, index) => {
|
354
|
+
const xAxis = createAxis(wasmContext, axis, index, true, fontColor, fontFamily, fontSize, undefined, {
|
355
|
+
drawMajorTickLines: false,
|
356
|
+
drawMinorTickLines: false,
|
357
|
+
drawMajorGridLines: false,
|
358
|
+
drawMinorGridLines: false
|
359
|
+
});
|
360
|
+
sciChartSurface.xAxes.add(xAxis);
|
361
|
+
});
|
362
|
+
const dataSeriesArray = datasets.map((dataset, index) => {
|
363
|
+
const yAxisId = `yAxis${index}`;
|
364
|
+
const dataSeries = new XyDataSeries(wasmContext, {
|
365
|
+
dataSeriesName: dataset.label,
|
366
|
+
containsNaN: false
|
367
|
+
});
|
368
|
+
const yAxis = new NumericAxis(wasmContext, {
|
369
|
+
id: yAxisId,
|
370
|
+
autoRange: EAutoRange.Always,
|
371
|
+
drawLabels: false,
|
372
|
+
drawMajorTickLines: false,
|
373
|
+
drawMinorTickLines: false,
|
374
|
+
drawMajorGridLines: false,
|
375
|
+
drawMinorGridLines: false
|
376
|
+
});
|
377
|
+
sciChartSurface.yAxes.add(yAxis);
|
378
|
+
const series = new FastLineRenderableSeries(wasmContext, {
|
379
|
+
dataSeries,
|
380
|
+
strokeThickness: 1,
|
381
|
+
stroke: convertColor(dataset.color, DEFAULT_COLOR),
|
382
|
+
yAxisId: yAxisId
|
383
|
+
});
|
384
|
+
sciChartSurface.renderableSeries.add(series);
|
385
|
+
return dataSeries;
|
386
|
+
});
|
387
|
+
if (dataSeriesArray.length == 0) {
|
388
|
+
getDefaultYAxis(wasmContext, sciChartSurface);
|
389
|
+
}
|
390
|
+
const rangeSelectionModifier = new OverviewRangeSelectionModifier();
|
391
|
+
rangeSelectionModifier.onSelectedAreaChanged = (selectedRange) => {
|
392
|
+
if (!selectedRange.equals(axisSynchroniser.visibleRange)) {
|
393
|
+
axisSynchroniser.publishChange({ visibleRange: selectedRange });
|
394
|
+
}
|
395
|
+
};
|
396
|
+
rangeSelectionModifier.selectedArea = axisSynchroniser.visibleRange;
|
397
|
+
sciChartSurface.chartModifiers.add(rangeSelectionModifier);
|
398
|
+
axisSynchroniser.visibleRangeChanged.subscribe(({ visibleRange }) => {
|
399
|
+
const xAxis = sciChartSurface.xAxes.get(0);
|
400
|
+
const updatedSelectedRange = visibleRange.clip(xAxis.visibleRange);
|
401
|
+
const shouldUpdateSelectedRange = !updatedSelectedRange.equals(rangeSelectionModifier.selectedArea);
|
402
|
+
if (shouldUpdateSelectedRange) {
|
403
|
+
rangeSelectionModifier.selectedArea = updatedSelectedRange;
|
404
|
+
}
|
405
|
+
});
|
406
|
+
return { chart, dataSeries: dataSeriesArray };
|
407
|
+
}
|
408
|
+
function getDefaultYAxis(wasmContext, sciChartSurface) {
|
409
|
+
const yAxis = new NumericAxis(wasmContext, {
|
410
|
+
id: 'DefaultAxisId',
|
411
|
+
autoRange: EAutoRange.Always,
|
412
|
+
drawLabels: false,
|
413
|
+
drawMajorTickLines: false,
|
414
|
+
drawMinorTickLines: false,
|
415
|
+
drawMajorGridLines: false,
|
416
|
+
drawMinorGridLines: false
|
417
|
+
});
|
418
|
+
sciChartSurface.yAxes.add(yAxis);
|
419
|
+
}
|
420
|
+
//# sourceMappingURL=scichart-builder%20copy.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"scichart-builder copy.js","sourceRoot":"","sources":["../../src/charts/scichart-builder copy.ts"],"names":[],"mappings":"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","sourcesContent":["import { TinyColor } from '@ctrl/tinycolor'\nimport {\n SciChartSurface,\n SciChartJSLightTheme,\n SciChartJSDarkv2Theme,\n XyDataSeries,\n FastLineRenderableSeries,\n SplineLineRenderableSeries,\n FastColumnRenderableSeries,\n StackedColumnRenderableSeries,\n StackedMountainRenderableSeries,\n StackedColumnCollection,\n StackedMountainCollection,\n NumericAxis,\n DateTimeNumericAxis,\n EAutoRange,\n EAxisAlignment,\n EExecuteOn,\n ECoordinateMode,\n EHorizontalAnchorPoint,\n EVerticalAnchorPoint,\n NumberRange,\n MouseWheelZoomModifier,\n RubberBandXyZoomModifier,\n ZoomPanModifier,\n ZoomExtentsModifier,\n RolloverModifier,\n NumericLabelProvider,\n SmartDateLabelProvider,\n EllipsePointMarker,\n SquarePointMarker,\n TrianglePointMarker,\n CrossPointMarker,\n XPointMarker,\n WaveAnimation,\n LegendModifier,\n ELegendPlacement,\n EXyDirection,\n XAxisDragModifier,\n YAxisDragModifier,\n TextAnnotation,\n LineAnnotation,\n BoxAnnotation,\n HorizontalLineAnnotation,\n VerticalLineAnnotation,\n OverviewRangeSelectionModifier,\n ENumericFormat,\n XySeriesInfo\n} from 'scichart'\nimport { AxisSynchroniser } from './axis-synchronizer'\n\nSciChartSurface.UseCommunityLicense()\n\nSciChartSurface.configure({\n dataUrl: `/node_modules/scichart/_wasm/scichart2d.data`,\n wasmUrl: `/node_modules/scichart/_wasm/scichart2d.wasm`\n})\n\nconst DEFAULT_COLOR = '#FF6600'\nconst DEFAULT_STROKE = '#000000'\nconst POINT_MARKER_SIZE = 10\nconst STROKE_THICKNESS = 2\nconst ANIMATION_DURATION = 1000\n\nfunction getLocalTimeOffset() {\n const now = new Date()\n return now.getTimezoneOffset() * -60\n}\n\nfunction getBaseColorFromTheme(theme?: 'light' | 'dark' | 'auto') {\n return new TinyColor(theme == 'dark' ? '#fff' : '#000')\n}\n\nfunction getThemeFromBrowser() {\n return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'\n}\n\nexport function convertColor(color: string | string[] | undefined, defaultColor?: string) {\n const tinyColor = new TinyColor(color as string)\n return tinyColor.toHex8String() || defaultColor\n}\n\nexport function calculatePrecision(format: string | number = '') {\n const formatString = format.toString()\n\n if (formatString.indexOf('.') !== -1) {\n return formatString.split('.')[1].length\n }\n\n return 0\n}\n\nfunction createPointMarker(wasmContext: any, dataset: any, color: string = DEFAULT_COLOR) {\n const { pointStyle, pointRadius = POINT_MARKER_SIZE } = dataset || {}\n\n if (!pointStyle) {\n return\n }\n\n const pointMarkerOptions = {\n width: pointRadius,\n height: pointRadius,\n strokeThickness: STROKE_THICKNESS,\n fill: color,\n stroke: DEFAULT_STROKE\n }\n\n switch (pointStyle) {\n case 'triangle':\n return new TrianglePointMarker(wasmContext, pointMarkerOptions)\n case 'rect':\n return new SquarePointMarker(wasmContext, pointMarkerOptions)\n case 'cross':\n return new CrossPointMarker(wasmContext, pointMarkerOptions)\n case 'crossRot':\n return new XPointMarker(wasmContext, pointMarkerOptions)\n default:\n return new EllipsePointMarker(wasmContext, pointMarkerOptions)\n }\n}\n\nfunction createAxis(\n wasmContext: any,\n axis: any,\n index: number,\n isXAxis: boolean,\n fontColor: string,\n fontFamily?: string,\n fontSize?: number,\n precision?: number,\n options?: any\n) {\n const { axisTitle, ticks } = axis\n const {\n autoMax,\n autoMin,\n min,\n max,\n stepSize,\n beginAtZero,\n color = fontColor,\n textStrokeColor = fontColor,\n display = false\n } = ticks || {}\n\n const axisOptions = {\n axisTitle,\n autoRange: autoMin || autoMax ? EAutoRange.Always : EAutoRange.Once,\n axisAlignment: isXAxis ? EAxisAlignment.Bottom : index === 0 ? EAxisAlignment.Left : EAxisAlignment.Right,\n visibleRange: min !== undefined && max !== undefined ? new NumberRange(min, max) : undefined,\n majorDelta: stepSize,\n growBy: beginAtZero ? new NumberRange(0.1, 0.1) : undefined,\n labelStyle: {\n fontFamily,\n fontSize,\n color\n },\n axisTitleStyle: {\n fontFamily,\n fontSize,\n color: textStrokeColor\n },\n ...options,\n drawLabels: display\n }\n\n const labelProvider = isXAxis\n ? new SmartDateLabelProvider({\n showWiderDateOnFirstLabel: true,\n showYearOnWiderDate: false,\n dateOffset: getLocalTimeOffset()\n })\n : new NumericLabelProvider()\n\n if (isXAxis) {\n labelProvider!.cursorNumericFormat = ENumericFormat.Date_HHMMSS\n } else {\n labelProvider!.numericFormat = ENumericFormat.Decimal\n labelProvider!.precision = precision || calculatePrecision(stepSize || 0.1)\n labelProvider!.cursorNumericFormat = ENumericFormat.NoFormat\n }\n\n return isXAxis\n ? new DateTimeNumericAxis(wasmContext, {\n ...axisOptions,\n labelProvider\n })\n : new NumericAxis(wasmContext, {\n ...axisOptions,\n id: index !== 0 ? `yAxis${index}` : undefined,\n labelProvider\n })\n}\n\nfunction createSeries(\n wasmContext: any,\n dataset: any,\n index: number,\n stacked: boolean,\n animation: boolean,\n yAxisId: string | undefined\n) {\n const dataSeries = new XyDataSeries(wasmContext, {\n dataSeriesName: dataset.label,\n containsNaN: false\n })\n\n const stackGroupId = dataset.stack || `__stack${index}__`\n const color = convertColor(dataset.backgroundColor, DEFAULT_COLOR)\n const strokeColor = convertColor(dataset.color, DEFAULT_COLOR)\n const borderWidth = dataset.borderWidth || STROKE_THICKNESS\n const pointMarker = createPointMarker(wasmContext, dataset, strokeColor)\n\n let series\n if (dataset.type === 'bar') {\n series = stacked\n ? new StackedColumnRenderableSeries(wasmContext, {\n dataSeries,\n strokeThickness: borderWidth,\n fill: color,\n stackedGroupId: stackGroupId\n })\n : new FastColumnRenderableSeries(wasmContext, {\n dataSeries,\n strokeThickness: borderWidth,\n fill: color,\n animation: animation ? new WaveAnimation({ duration: ANIMATION_DURATION, fadeEffect: true }) : undefined,\n yAxisId\n })\n } else {\n series = stacked\n ? new StackedMountainRenderableSeries(wasmContext, {\n dataSeries,\n strokeThickness: borderWidth,\n stroke: strokeColor,\n fill: color\n })\n : dataset.lineTension && dataset.lineTension > 0\n ? new SplineLineRenderableSeries(wasmContext, {\n dataSeries,\n strokeThickness: borderWidth,\n stroke: strokeColor,\n pointMarker,\n animation: animation ? new WaveAnimation({ duration: ANIMATION_DURATION, fadeEffect: true }) : undefined,\n yAxisId\n })\n : new FastLineRenderableSeries(wasmContext, {\n dataSeries,\n strokeThickness: borderWidth,\n stroke: strokeColor,\n pointMarker,\n animation: animation ? new WaveAnimation({ duration: ANIMATION_DURATION, fadeEffect: true }) : undefined,\n yAxisId\n })\n }\n\n return { series, dataSeries }\n}\n\nexport async function buildSciChart(\n config: OperatoChart.ChartConfig | undefined | null,\n container: any,\n { fontSize = 14, fontFamily = 'Roboto', fontColor }: { fontSize?: number; fontFamily?: string; fontColor?: string },\n { grouped, precision }: { grouped?: string; precision?: number }\n): Promise<{ chart: any; dataSeries: any[] } | undefined> {\n if (!config) return\n\n const { type: chartType, options, data: fromData } = config\n const { datasets = [] } = fromData || {}\n var {\n theme,\n tooltip = true,\n animation = true,\n legend = {\n display: true,\n position: 'top'\n },\n scales: fromScales,\n xGridLine = false,\n yGridLine = false,\n y2ndGridLine = false,\n stacked = false,\n multiAxis = false,\n annotations = []\n } = options || {}\n\n var baseColor = getBaseColorFromTheme(theme)\n\n if (theme === 'auto') {\n theme = getThemeFromBrowser()\n }\n\n fontColor = fontColor || baseColor.clone().toString()\n\n const { xAxes = [], yAxes = [] } = fromScales || {}\n\n const chart = await SciChartSurface.create(container, {\n theme: theme == 'dark' ? new SciChartJSDarkv2Theme() : new SciChartJSLightTheme()\n })\n const { sciChartSurface, wasmContext } = chart\n\n xAxes.forEach((axis, index) => {\n const xAxis = createAxis(wasmContext, axis, index, true, fontColor, fontFamily, fontSize, undefined, {\n drawMajorTickLines: true,\n drawMinorTickLines: true,\n drawMajorGridLines: xGridLine,\n drawMinorGridLines: xGridLine\n })\n sciChartSurface.xAxes.add(xAxis)\n })\n ;(multiAxis ? yAxes : [yAxes[0]]).forEach((axis, index) => {\n const yAxis = createAxis(wasmContext, axis, index, false, fontColor, fontFamily, fontSize, precision, {\n drawMajorTickLines: true,\n drawMinorTickLines: true,\n drawMajorGridLines: index == 0 ? yGridLine : y2ndGridLine,\n drawMinorGridLines: index == 0 ? yGridLine : y2ndGridLine\n })\n sciChartSurface.yAxes.add(yAxis)\n })\n\n const dataSeriesArray = datasets.map((dataset, index) => {\n const yAxisId = dataset.yAxisID == 'right' && multiAxis ? 'yAxis1' : undefined\n const { series, dataSeries } = createSeries(wasmContext, dataset, index, !!stacked, !!animation, yAxisId)\n\n sciChartSurface.renderableSeries.add(series)\n\n if (tooltip) {\n const rolloverModifier = new RolloverModifier({\n showTooltip: true,\n showAxisLabel: true /* show x-axis label for cursor */,\n modifierGroup: grouped,\n tooltipDataTemplate: (seriesInfo: XySeriesInfo): string[] => {\n const valuesWithLabels: string[] = []\n const xySeriesInfo = seriesInfo as XySeriesInfo\n valuesWithLabels.push(xySeriesInfo.formattedYValue)\n return valuesWithLabels\n }\n })\n\n sciChartSurface.chartModifiers.add(rolloverModifier)\n }\n\n return dataSeries\n })\n\n if (stacked) {\n const stackedColumnCollection = new StackedColumnCollection(wasmContext)\n const stackedMountainCollection = new StackedMountainCollection(wasmContext)\n\n sciChartSurface.renderableSeries.asArray().forEach((series: any) => {\n if (series instanceof StackedColumnRenderableSeries) {\n stackedColumnCollection.add(series)\n } else if (series instanceof StackedMountainRenderableSeries) {\n stackedMountainCollection.add(series)\n }\n })\n\n if (stackedColumnCollection.size() > 0) {\n sciChartSurface.renderableSeries.add(stackedColumnCollection)\n }\n\n if (stackedMountainCollection.size() > 0) {\n sciChartSurface.renderableSeries.add(stackedMountainCollection)\n }\n }\n\n if (annotations) {\n annotations.forEach(annotation => {\n let sciAnnotation\n let horizontalAnchorPoint: EHorizontalAnchorPoint =\n annotation.horizontalAnchorPoint == 'Right'\n ? EHorizontalAnchorPoint.Right\n : annotation.horizontalAnchorPoint == 'Left'\n ? EHorizontalAnchorPoint.Left\n : EHorizontalAnchorPoint.Center\n let verticalAnchorPoint: EVerticalAnchorPoint =\n annotation.verticalAnchorPoint == 'Top'\n ? EVerticalAnchorPoint.Top\n : annotation.verticalAnchorPoint == 'Bottom'\n ? EVerticalAnchorPoint.Bottom\n : EVerticalAnchorPoint.Center\n\n switch (annotation.type) {\n case 'text':\n sciAnnotation = new TextAnnotation({\n x1: annotation.x1,\n y1: annotation.y1,\n text: annotation.text,\n horizontalAnchorPoint,\n verticalAnchorPoint,\n fontSize: annotation.fontSize,\n fontFamily: annotation.fontFamily,\n textColor: convertColor(annotation.stroke, fontColor),\n xCoordinateMode: (annotation.xCoordinateMode || ECoordinateMode.DataValue) as ECoordinateMode,\n yCoordinateMode: (annotation.yCoordinateMode || ECoordinateMode.DataValue) as ECoordinateMode\n })\n break\n case 'line':\n sciAnnotation = new LineAnnotation({\n x1: annotation.x1,\n y1: annotation.y1,\n x2: annotation.x2,\n y2: annotation.y2,\n stroke: convertColor(annotation.stroke, '#FF0000'),\n strokeThickness: annotation.strokeThickness,\n xCoordinateMode: (annotation.xCoordinateMode || ECoordinateMode.DataValue) as ECoordinateMode,\n yCoordinateMode: (annotation.yCoordinateMode || ECoordinateMode.DataValue) as ECoordinateMode\n })\n break\n case 'box':\n sciAnnotation = new BoxAnnotation({\n x1: annotation.x1,\n y1: annotation.y1,\n x2: annotation.x2,\n y2: annotation.y2,\n fill: convertColor(annotation.fill, '#FF0000'),\n stroke: convertColor(annotation.stroke, '#FF0000'),\n strokeThickness: annotation.strokeThickness,\n xCoordinateMode: (annotation.xCoordinateMode || ECoordinateMode.DataValue) as ECoordinateMode,\n yCoordinateMode: (annotation.yCoordinateMode || ECoordinateMode.DataValue) as ECoordinateMode\n })\n break\n case 'horizontalLine':\n sciAnnotation = new HorizontalLineAnnotation({\n y1: annotation.y1,\n stroke: convertColor(annotation.stroke, '#FF0000'),\n strokeThickness: annotation.strokeThickness,\n xCoordinateMode: (annotation.xCoordinateMode || ECoordinateMode.DataValue) as ECoordinateMode,\n yCoordinateMode: (annotation.yCoordinateMode || ECoordinateMode.DataValue) as ECoordinateMode\n })\n break\n case 'verticalLine':\n sciAnnotation = new VerticalLineAnnotation({\n x1: annotation.x1,\n stroke: convertColor(annotation.stroke, '#FF0000'),\n strokeThickness: annotation.strokeThickness,\n xCoordinateMode: (annotation.xCoordinateMode || ECoordinateMode.DataValue) as ECoordinateMode,\n yCoordinateMode: (annotation.yCoordinateMode || ECoordinateMode.DataValue) as ECoordinateMode\n })\n break\n default:\n break\n }\n if (sciAnnotation) {\n sciChartSurface.annotations.add(sciAnnotation)\n }\n })\n }\n\n sciChartSurface.chartModifiers.add(\n new RubberBandXyZoomModifier({ executeOn: EExecuteOn.MouseRightButton, modifierGroup: grouped }),\n // new ZoomPanModifier({ xyDirection: EXyDirection.XDirection }),\n new ZoomPanModifier({ xyDirection: EXyDirection.XDirection }),\n new MouseWheelZoomModifier({ xyDirection: EXyDirection.XDirection }),\n new ZoomExtentsModifier(),\n new XAxisDragModifier(),\n new YAxisDragModifier()\n )\n\n if (legend?.display) {\n const legendModifier = new LegendModifier({\n showCheckboxes: true,\n showSeriesMarkers: true,\n showLegend: true,\n placement:\n legend.position == 'top'\n ? ELegendPlacement.TopLeft\n : legend.position == 'left'\n ? ELegendPlacement.BottomLeft\n : legend.position == 'bottom'\n ? ELegendPlacement.BottomRight\n : ELegendPlacement.TopRight\n })\n\n sciChartSurface.chartModifiers.add(legendModifier)\n }\n\n return { chart, dataSeries: dataSeriesArray }\n}\n\nexport async function buildSciChartOverview(\n config: OperatoChart.ChartConfig | undefined | null,\n container: any,\n { fontSize = 14, fontFamily = 'Roboto', fontColor }: { fontSize?: number; fontFamily?: string; fontColor?: string },\n axisSynchroniser: AxisSynchroniser\n): Promise<{ chart: any; dataSeries: any[] } | undefined> {\n if (!config) return\n\n const { type: chartType, options, data: fromData } = config\n const { datasets = [] } = fromData || {}\n var { theme, scales: fromScales } = options || {}\n\n var baseColor = getBaseColorFromTheme(theme)\n\n if (theme === 'auto') {\n theme = getThemeFromBrowser()\n }\n\n fontColor = fontColor || baseColor.clone().toString()\n\n const { xAxes = [], yAxes = [] } = fromScales || {}\n\n const chart = await SciChartSurface.create(container, {\n theme: theme == 'dark' ? new SciChartJSDarkv2Theme() : new SciChartJSLightTheme()\n })\n const { sciChartSurface, wasmContext } = chart\n\n xAxes.forEach((axis, index) => {\n const xAxis = createAxis(wasmContext, axis, index, true, fontColor, fontFamily, fontSize, undefined, {\n drawMajorTickLines: false,\n drawMinorTickLines: false,\n drawMajorGridLines: false,\n drawMinorGridLines: false\n })\n sciChartSurface.xAxes.add(xAxis)\n })\n\n const dataSeriesArray = datasets.map((dataset, index) => {\n const yAxisId = `yAxis${index}`\n const dataSeries = new XyDataSeries(wasmContext, {\n dataSeriesName: dataset.label,\n containsNaN: false\n })\n\n const yAxis = new NumericAxis(wasmContext, {\n id: yAxisId,\n autoRange: EAutoRange.Always,\n drawLabels: false,\n drawMajorTickLines: false,\n drawMinorTickLines: false,\n drawMajorGridLines: false,\n drawMinorGridLines: false\n })\n\n sciChartSurface.yAxes.add(yAxis)\n\n const series = new FastLineRenderableSeries(wasmContext, {\n dataSeries,\n strokeThickness: 1,\n stroke: convertColor(dataset.color, DEFAULT_COLOR),\n yAxisId: yAxisId\n })\n\n sciChartSurface.renderableSeries.add(series)\n\n return dataSeries\n })\n\n if (dataSeriesArray.length == 0) {\n getDefaultYAxis(wasmContext, sciChartSurface)\n }\n\n const rangeSelectionModifier = new OverviewRangeSelectionModifier()\n rangeSelectionModifier.onSelectedAreaChanged = (selectedRange?: NumberRange) => {\n if (!selectedRange!.equals(axisSynchroniser.visibleRange)) {\n axisSynchroniser.publishChange({ visibleRange: selectedRange! })\n }\n }\n\n rangeSelectionModifier.selectedArea = axisSynchroniser.visibleRange\n sciChartSurface.chartModifiers.add(rangeSelectionModifier)\n\n axisSynchroniser.visibleRangeChanged.subscribe(({ visibleRange }: any) => {\n const xAxis = sciChartSurface.xAxes.get(0)\n const updatedSelectedRange = visibleRange.clip(xAxis.visibleRange)\n const shouldUpdateSelectedRange = !updatedSelectedRange.equals(rangeSelectionModifier.selectedArea)\n if (shouldUpdateSelectedRange) {\n rangeSelectionModifier.selectedArea = updatedSelectedRange\n }\n })\n\n return { chart, dataSeries: dataSeriesArray }\n}\n\nfunction getDefaultYAxis(wasmContext: any, sciChartSurface: any): void {\n const yAxis = new NumericAxis(wasmContext, {\n id: 'DefaultAxisId',\n autoRange: EAutoRange.Always,\n drawLabels: false,\n drawMajorTickLines: false,\n drawMinorTickLines: false,\n drawMajorGridLines: false,\n drawMinorGridLines: false\n })\n\n sciChartSurface.yAxes.add(yAxis)\n}\n"]}
|
@@ -1,4 +1,6 @@
|
|
1
1
|
import { AxisSynchroniser } from './axis-synchronizer';
|
2
|
+
export declare const DEFAULT_COLOR = "#FF6600";
|
3
|
+
export declare function convertColor(color: string | string[] | undefined, defaultColor?: string): string | undefined;
|
2
4
|
export declare function calculatePrecision(format?: string | number): number;
|
3
5
|
export declare function buildSciChart(config: OperatoChart.ChartConfig | undefined | null, container: any, { fontSize, fontFamily, fontColor }: {
|
4
6
|
fontSize?: number;
|
@@ -5,7 +5,7 @@ SciChartSurface.configure({
|
|
5
5
|
dataUrl: `/node_modules/scichart/_wasm/scichart2d.data`,
|
6
6
|
wasmUrl: `/node_modules/scichart/_wasm/scichart2d.wasm`
|
7
7
|
});
|
8
|
-
const DEFAULT_COLOR = '#FF6600';
|
8
|
+
export const DEFAULT_COLOR = '#FF6600';
|
9
9
|
const DEFAULT_STROKE = '#000000';
|
10
10
|
const POINT_MARKER_SIZE = 10;
|
11
11
|
const STROKE_THICKNESS = 2;
|
@@ -20,7 +20,7 @@ function getBaseColorFromTheme(theme) {
|
|
20
20
|
function getThemeFromBrowser() {
|
21
21
|
return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
22
22
|
}
|
23
|
-
function convertColor(color, defaultColor) {
|
23
|
+
export function convertColor(color, defaultColor) {
|
24
24
|
const tinyColor = new TinyColor(color);
|
25
25
|
return tinyColor.toHex8String() || defaultColor;
|
26
26
|
}
|
@@ -339,7 +339,7 @@ export async function buildSciChartOverview(config, container, { fontSize = 14,
|
|
339
339
|
return;
|
340
340
|
const { type: chartType, options, data: fromData } = config;
|
341
341
|
const { datasets = [] } = fromData || {};
|
342
|
-
var { theme,
|
342
|
+
var { theme, scales: fromScales } = options || {};
|
343
343
|
var baseColor = getBaseColorFromTheme(theme);
|
344
344
|
if (theme === 'auto') {
|
345
345
|
theme = getThemeFromBrowser();
|
@@ -359,31 +359,32 @@ export async function buildSciChartOverview(config, container, { fontSize = 14,
|
|
359
359
|
});
|
360
360
|
sciChartSurface.xAxes.add(xAxis);
|
361
361
|
});
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
362
|
+
getDefaultYAxis(wasmContext, sciChartSurface);
|
363
|
+
// const dataSeriesArray = datasets.map((dataset, index) => {
|
364
|
+
// const yAxisId = `yAxis${index}`
|
365
|
+
// const dataSeries = new XyDataSeries(wasmContext, {
|
366
|
+
// dataSeriesName: dataset.label,
|
367
|
+
// containsNaN: false
|
368
|
+
// })
|
369
|
+
// const yAxis = new NumericAxis(wasmContext, {
|
370
|
+
// id: yAxisId,
|
371
|
+
// autoRange: EAutoRange.Always,
|
372
|
+
// drawLabels: false,
|
373
|
+
// drawMajorTickLines: false,
|
374
|
+
// drawMinorTickLines: false,
|
375
|
+
// drawMajorGridLines: false,
|
376
|
+
// drawMinorGridLines: false
|
377
|
+
// })
|
378
|
+
// sciChartSurface.yAxes.add(yAxis)
|
379
|
+
// const series = new FastLineRenderableSeries(wasmContext, {
|
380
|
+
// dataSeries,
|
381
|
+
// strokeThickness: 1,
|
382
|
+
// stroke: convertColor(dataset.color, DEFAULT_COLOR),
|
383
|
+
// yAxisId: yAxisId
|
384
|
+
// })
|
385
|
+
// sciChartSurface.renderableSeries.add(series)
|
386
|
+
// return dataSeries
|
387
|
+
// })
|
387
388
|
const rangeSelectionModifier = new OverviewRangeSelectionModifier();
|
388
389
|
rangeSelectionModifier.onSelectedAreaChanged = (selectedRange) => {
|
389
390
|
if (!selectedRange.equals(axisSynchroniser.visibleRange)) {
|
@@ -393,12 +394,25 @@ export async function buildSciChartOverview(config, container, { fontSize = 14,
|
|
393
394
|
rangeSelectionModifier.selectedArea = axisSynchroniser.visibleRange;
|
394
395
|
sciChartSurface.chartModifiers.add(rangeSelectionModifier);
|
395
396
|
axisSynchroniser.visibleRangeChanged.subscribe(({ visibleRange }) => {
|
396
|
-
const
|
397
|
+
const xAxis = sciChartSurface.xAxes.get(0);
|
398
|
+
const updatedSelectedRange = visibleRange.clip(xAxis.visibleRange);
|
397
399
|
const shouldUpdateSelectedRange = !updatedSelectedRange.equals(rangeSelectionModifier.selectedArea);
|
398
400
|
if (shouldUpdateSelectedRange) {
|
399
401
|
rangeSelectionModifier.selectedArea = updatedSelectedRange;
|
400
402
|
}
|
401
403
|
});
|
402
|
-
return { chart, dataSeries:
|
404
|
+
return { chart, dataSeries: [] };
|
405
|
+
}
|
406
|
+
function getDefaultYAxis(wasmContext, sciChartSurface) {
|
407
|
+
const yAxis = new NumericAxis(wasmContext, {
|
408
|
+
id: 'DefaultAxisId',
|
409
|
+
autoRange: EAutoRange.Always,
|
410
|
+
drawLabels: false,
|
411
|
+
drawMajorTickLines: false,
|
412
|
+
drawMinorTickLines: false,
|
413
|
+
drawMajorGridLines: false,
|
414
|
+
drawMinorGridLines: false
|
415
|
+
});
|
416
|
+
sciChartSurface.yAxes.add(yAxis);
|
403
417
|
}
|
404
418
|
//# sourceMappingURL=scichart-builder.js.map
|