@operato/scene-scichart 7.2.5 → 7.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/db.sqlite +0 -0
  3. package/dist/charts/ox-scichart-multiple copy.d.ts +53 -0
  4. package/dist/charts/ox-scichart-multiple copy.js +411 -0
  5. package/dist/charts/ox-scichart-multiple copy.js.map +1 -0
  6. package/dist/charts/ox-scichart-multiple.d.ts +9 -8
  7. package/dist/charts/ox-scichart-multiple.js +238 -98
  8. package/dist/charts/ox-scichart-multiple.js.map +1 -1
  9. package/dist/charts/scichart-builder copy.d.ts +22 -0
  10. package/dist/charts/scichart-builder copy.js +420 -0
  11. package/dist/charts/scichart-builder copy.js.map +1 -0
  12. package/dist/charts/scichart-builder.d.ts +2 -0
  13. package/dist/charts/scichart-builder.js +44 -30
  14. package/dist/charts/scichart-builder.js.map +1 -1
  15. package/dist/charts/scichart-overview-builder.d.ts +13 -0
  16. package/dist/charts/scichart-overview-builder.js +219 -0
  17. package/dist/charts/scichart-overview-builder.js.map +1 -0
  18. package/dist/templates/scichart-multiple-timeseries.d.ts +1 -1
  19. package/dist/templates/scichart-multiple-timeseries.js +1 -1
  20. package/dist/templates/scichart-multiple-timeseries.js.map +1 -1
  21. package/logs/.08636eb59927f12972f6774f5947c8507b3564c2-audit.json +35 -10
  22. package/logs/.5e5d741d8b7784a2fbad65eedc0fd46946aaf6f2-audit.json +30 -0
  23. package/logs/{application-2024-08-02-17.log → application-2024-08-03-13.log} +8 -8
  24. package/logs/{application-2024-08-02-18.log → application-2024-08-03-14.log} +8 -8
  25. package/logs/application-2024-08-03-15.log +210 -0
  26. package/logs/application-2024-08-04-01.log +105 -0
  27. package/logs/application-2024-08-04-04.log +420 -0
  28. package/logs/application-2024-08-04-18.log +2 -0
  29. package/logs/application-2024-08-04-19.log +105 -0
  30. package/logs/connections-2024-08-03-13.log +50 -0
  31. package/logs/connections-2024-08-03-14.log +50 -0
  32. package/logs/connections-2024-08-03-15.log +100 -0
  33. package/logs/connections-2024-08-04-01.log +50 -0
  34. package/logs/connections-2024-08-04-04.log +200 -0
  35. package/logs/connections-2024-08-04-19.log +50 -0
  36. package/package.json +2 -2
  37. package/src/charts/ox-scichart-multiple.ts +295 -114
  38. package/src/charts/scichart-builder.ts +47 -30
  39. package/src/templates/scichart-multiple-timeseries.ts +1 -1
  40. package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,26 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [7.2.7](https://github.com/things-scene/operato-scene/compare/v7.2.6...v7.2.7) (2024-08-04)
7
+
8
+
9
+ ### :bug: Bug Fix
10
+
11
+ * fallback yAxis for overview chart for scichart ([803f45e](https://github.com/things-scene/operato-scene/commit/803f45e26989280cdbac6a586b3cdfd17568a080))
12
+ * remove default visibleSeries from scichart-multiple-timeseries ([7f1649c](https://github.com/things-scene/operato-scene/commit/7f1649c7eba51728d17fcddcee75dcca9a520718))
13
+ * scichart-multi-timeseries ([c3b02b6](https://github.com/things-scene/operato-scene/commit/c3b02b623fc4619799e9bdaaec0e3820f8baf372))
14
+
15
+
16
+
17
+ ## [7.2.6](https://github.com/things-scene/operato-scene/compare/v7.2.5...v7.2.6) (2024-08-03)
18
+
19
+
20
+ ### :bug: Bug Fix
21
+
22
+ * grouped multiple-timeseries ([747c7eb](https://github.com/things-scene/operato-scene/commit/747c7ebb46691ba7f7cebd3246dd520405aa036b))
23
+
24
+
25
+
6
26
  ## [7.2.5](https://github.com/things-scene/operato-scene/compare/v7.2.4...v7.2.5) (2024-08-03)
7
27
 
8
28
 
package/db.sqlite CHANGED
Binary file
@@ -0,0 +1,53 @@
1
+ import { LitElement } from 'lit';
2
+ import { FastLineRenderableSeries, XyDataSeries } from 'scichart';
3
+ export declare class OxSciChartMultiple extends LitElement {
4
+ config: OperatoChart.ChartConfig | null;
5
+ data: {
6
+ [attr: string]: any;
7
+ }[];
8
+ visibleSeries: string[];
9
+ showOverview: boolean;
10
+ private synchronizer;
11
+ private verticalGroup;
12
+ private overviewChart;
13
+ private overviewDataSeries;
14
+ private groupCharts;
15
+ private initializationQueue;
16
+ private containerId;
17
+ overviewContainer: HTMLDivElement;
18
+ static idx: number;
19
+ static styles: import("lit").CSSResult[];
20
+ initializeSciChart(): Promise<void>;
21
+ updated(changedProperties: Map<string | number | symbol, unknown>): Promise<void>;
22
+ cleanup(): void;
23
+ cleanupGroup(): void;
24
+ cleanupOverview(): void;
25
+ updateDataSeries(): Promise<void>;
26
+ private dataSeriesEqual;
27
+ get dataSet(): {
28
+ xValue: number;
29
+ yValue: number;
30
+ }[][];
31
+ render(): import("lit-html").TemplateResult<1>;
32
+ buildChartGroup(): Promise<void>;
33
+ updateSeries(after: string[], before: string[]): Promise<void>;
34
+ private createChart;
35
+ private destroyChart;
36
+ addChart(dataKey: string): Promise<void>;
37
+ removeChart(dataKey: string): Promise<void>;
38
+ addSeriesToOverviewChart(dataKey: string): Promise<void>;
39
+ removeSeriesFromOverviewChart(dataKey: string): Promise<void>;
40
+ createSeriesForOverview(dataset: any): Promise<{
41
+ series: FastLineRenderableSeries;
42
+ dataSeries: XyDataSeries;
43
+ } | null>;
44
+ groupSorter(group: any[]): any[];
45
+ appendData(appendum: {
46
+ [attr: string]: any;
47
+ }[]): Promise<void>;
48
+ }
49
+ declare global {
50
+ interface HTMLElementTagNameMap {
51
+ 'ox-scichart-multiple': OxSciChartMultiple;
52
+ }
53
+ }
@@ -0,0 +1,411 @@
1
+ var OxSciChartMultiple_1;
2
+ import { __decorate } from "tslib";
3
+ import { LitElement, html, css } from 'lit';
4
+ import { property, query, customElement } from 'lit/decorators.js';
5
+ import { keyed } from 'lit/directives/keyed.js';
6
+ import { calculatePrecision, buildSciChart, buildSciChartOverview, convertColor } from './scichart-builder';
7
+ // import { buildSciChartOverview, createAxisForOverview } from './scichart-overview-builder'
8
+ import { AxisSynchroniser } from './axis-synchronizer';
9
+ import { EAutoRange, FastLineRenderableSeries, NumberRange, NumericAxis, SciChartVerticalGroup, XyDataSeries } from 'scichart';
10
+ import { ScrollbarStyles } from '@operato/styles';
11
+ const DEFAULT_COLOR = '#FF6600';
12
+ let OxSciChartMultiple = OxSciChartMultiple_1 = class OxSciChartMultiple extends LitElement {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.config = null;
16
+ this.data = [];
17
+ this.visibleSeries = [];
18
+ this.showOverview = true;
19
+ this.synchronizer = new AxisSynchroniser(new NumberRange(200, 500));
20
+ this.verticalGroup = new SciChartVerticalGroup();
21
+ this.overviewChart = null;
22
+ this.overviewDataSeries = [];
23
+ this.groupCharts = [];
24
+ this.initializationQueue = Promise.resolve();
25
+ this.containerId = 'ox-scichart-multiple' + ++OxSciChartMultiple_1.idx;
26
+ }
27
+ async initializeSciChart() {
28
+ var _a;
29
+ this.cleanup();
30
+ if (!this.overviewContainer) {
31
+ console.error('Overview container not found!');
32
+ return;
33
+ }
34
+ const overviewDatasets = ((_a = this.config) === null || _a === void 0 ? void 0 : _a.data.datasets.filter(dataset => this.visibleSeries.includes(dataset.dataKey))) || [];
35
+ const { chart, dataSeries } = (await buildSciChartOverview({
36
+ ...this.config,
37
+ data: { datasets: overviewDatasets }
38
+ }, this.overviewContainer, {}, this.synchronizer)) || {};
39
+ if (!chart || !dataSeries) {
40
+ console.error('Failed to create overview chart!');
41
+ return;
42
+ }
43
+ this.verticalGroup.addSurfaceToGroup(chart.sciChartSurface);
44
+ this.overviewChart = chart;
45
+ this.overviewDataSeries = dataSeries;
46
+ }
47
+ async updated(changedProperties) {
48
+ this.initializationQueue = this.initializationQueue
49
+ .then(async () => {
50
+ let needUpdateDataSeries = false;
51
+ if (changedProperties.has('config') && this.config) {
52
+ await this.initializeSciChart();
53
+ await this.buildChartGroup();
54
+ needUpdateDataSeries = true;
55
+ }
56
+ if (changedProperties.has('visibleSeries')) {
57
+ this.cleanupOverview();
58
+ await this.buildChartGroup();
59
+ needUpdateDataSeries = true;
60
+ }
61
+ if (changedProperties.has('data')) {
62
+ needUpdateDataSeries = true;
63
+ }
64
+ if (needUpdateDataSeries) {
65
+ await this.updateDataSeries();
66
+ }
67
+ })
68
+ .catch(error => {
69
+ console.error('Error in updated queue:', error);
70
+ });
71
+ }
72
+ cleanup() {
73
+ this.cleanupGroup();
74
+ this.cleanupOverview();
75
+ }
76
+ cleanupGroup() {
77
+ this.groupCharts.forEach(chart => {
78
+ if (chart.sciChartSurface) {
79
+ this.synchronizer.removeAxis(chart.sciChartSurface.xAxes.get(0));
80
+ this.verticalGroup.removeSurface(chart.sciChartSurface);
81
+ chart.sciChartSurface.delete();
82
+ }
83
+ });
84
+ this.groupCharts.length = 0;
85
+ }
86
+ cleanupOverview() {
87
+ if (this.overviewChart) {
88
+ this.overviewChart.sciChartSurface.renderableSeries.clear(); // 모든 시리즈 제거
89
+ this.overviewDataSeries.forEach(ds => ds.delete()); // 메모리 해제
90
+ this.overviewDataSeries.length = 0; // 데이터 시리즈 목록 초기화
91
+ }
92
+ this.overviewChart = null;
93
+ }
94
+ async updateDataSeries() {
95
+ const { config, data } = this;
96
+ const { datasets = [], labelDataKey: attrX } = (config === null || config === void 0 ? void 0 : config.data) || {};
97
+ if (!(data instanceof Array) || !attrX) {
98
+ return;
99
+ }
100
+ const newData = this.dataSet;
101
+ this.groupCharts.forEach(({ dataKey, dataSeries }) => {
102
+ var _a;
103
+ const relevantDataset = datasets.find(dataset => dataset.dataKey === dataKey);
104
+ if (!relevantDataset) {
105
+ return;
106
+ }
107
+ const dataIndex = datasets.findIndex(ds => ds.dataKey === relevantDataset.dataKey);
108
+ const filteredData = ((_a = newData[dataIndex]) === null || _a === void 0 ? void 0 : _a.filter(d => typeof d.yValue === 'number')) || [];
109
+ dataSeries.forEach(ds => {
110
+ if (ds.count() !== filteredData.length || !this.dataSeriesEqual(ds, filteredData)) {
111
+ ds.clear();
112
+ if (filteredData.length > 0) {
113
+ ds.appendRange(filteredData.map(d => d.xValue), filteredData.map(d => d.yValue));
114
+ }
115
+ }
116
+ });
117
+ });
118
+ this.overviewDataSeries.forEach((ds, index) => {
119
+ var _a;
120
+ const visibleKey = this.visibleSeries[index];
121
+ const dataset = datasets.find(dataset => dataset.dataKey === visibleKey);
122
+ if (!dataset) {
123
+ return;
124
+ }
125
+ const dataIndex = datasets.findIndex(ds => ds.dataKey === dataset.dataKey);
126
+ const filteredData = ((_a = newData[dataIndex]) === null || _a === void 0 ? void 0 : _a.filter(d => typeof d.yValue === 'number')) || [];
127
+ if (ds.count() !== filteredData.length || !this.dataSeriesEqual(ds, filteredData)) {
128
+ ds.clear();
129
+ if (filteredData.length > 0) {
130
+ ds.appendRange(filteredData.map(d => d.xValue), filteredData.map(d => d.yValue));
131
+ }
132
+ }
133
+ });
134
+ }
135
+ dataSeriesEqual(ds, filteredData) {
136
+ for (let i = 0; i < ds.count(); i++) {
137
+ const xValue = ds.getNativeXValues().get(i);
138
+ const yValue = ds.getNativeYValues().get(i);
139
+ if (xValue !== filteredData[i].xValue || yValue !== filteredData[i].yValue) {
140
+ return false;
141
+ }
142
+ }
143
+ return true;
144
+ }
145
+ get dataSet() {
146
+ const { config, data } = this;
147
+ const { datasets = [], labelDataKey: attrX } = (config === null || config === void 0 ? void 0 : config.data) || {};
148
+ if (!(data instanceof Array) || !attrX) {
149
+ return [];
150
+ }
151
+ return datasets.map(dataset => {
152
+ return data
153
+ .map(item => {
154
+ if (!item || typeof item !== 'object') {
155
+ return;
156
+ }
157
+ const xValue = new Date(item[attrX]);
158
+ if (isNaN(xValue.getTime())) {
159
+ console.error('Invalid date:', item[attrX]);
160
+ return;
161
+ }
162
+ return {
163
+ xValue: xValue.getTime() / 1000,
164
+ yValue: item[dataset.dataKey]
165
+ };
166
+ })
167
+ .filter(Boolean);
168
+ });
169
+ }
170
+ render() {
171
+ return html `
172
+ <div id=${this.containerId + '-overview'} class="overview" ?hidden=${!this.showOverview}></div>
173
+ <div id="chart-group">
174
+ ${this.visibleSeries.map(dataKey => keyed(dataKey, html ` <div id=${this.containerId + '-' + dataKey} class="grouped-chart"></div> `))}
175
+ </div>
176
+ `;
177
+ }
178
+ async buildChartGroup() {
179
+ this.cleanupGroup();
180
+ const { config } = this;
181
+ const { datasets = [] } = (config === null || config === void 0 ? void 0 : config.data) || {};
182
+ await Promise.all(datasets
183
+ .filter(dataset => this.visibleSeries.includes(dataset.dataKey))
184
+ .map(async (dataset) => {
185
+ await this.addChart(dataset.dataKey);
186
+ }));
187
+ }
188
+ async updateSeries(after, before) {
189
+ const addSeries = (after === null || after === void 0 ? void 0 : after.filter(series => !before.includes(series))) || [];
190
+ const removeSeries = (before === null || before === void 0 ? void 0 : before.filter(series => !after.includes(series))) || [];
191
+ for (const series of removeSeries) {
192
+ await this.removeChart(series);
193
+ }
194
+ for (const series of addSeries) {
195
+ await this.addChart(series);
196
+ }
197
+ }
198
+ async createChart(dataKey) {
199
+ var _a, _b;
200
+ const { data = {}, options = {} } = this.config || {};
201
+ const { datasets = [] } = data;
202
+ const primaryDataset = datasets.find(dataset => dataset.dataKey == dataKey);
203
+ if (!primaryDataset) {
204
+ return null;
205
+ }
206
+ const relatedDatasets = datasets.filter(dataset => { var _a; return (_a = dataset.dataKey) === null || _a === void 0 ? void 0 : _a.startsWith(dataKey); });
207
+ const yAxis = {
208
+ ...(_b = (_a = options.scales) === null || _a === void 0 ? void 0 : _a.yAxes) === null || _b === void 0 ? void 0 : _b[0],
209
+ axisTitle: primaryDataset === null || primaryDataset === void 0 ? void 0 : primaryDataset.label
210
+ };
211
+ const config = {
212
+ ...this.config,
213
+ data: {
214
+ datasets: relatedDatasets
215
+ },
216
+ options: {
217
+ ...options,
218
+ scales: {
219
+ ...options.scales,
220
+ yAxes: [yAxis]
221
+ }
222
+ }
223
+ };
224
+ const container = this.renderRoot.querySelector(`#${this.containerId + '-' + dataKey}`);
225
+ const { chart, dataSeries } = (await buildSciChart(config, container, { fontSize: 14, fontFamily: 'Roboto', fontColor: undefined }, {
226
+ precision: primaryDataset.valueFormat ? calculatePrecision(primaryDataset.valueFormat) : undefined,
227
+ grouped: this.containerId
228
+ }));
229
+ this.synchronizer.addAxis(chart.sciChartSurface.xAxes.get(0));
230
+ // 각 시리즈에 대해 올바른 데이터를 추가
231
+ const newData = this.dataSet;
232
+ dataSeries.forEach((ds, seriesIndex) => {
233
+ var _a;
234
+ const dataset = relatedDatasets[seriesIndex];
235
+ const filteredData = ((_a = newData[seriesIndex]) === null || _a === void 0 ? void 0 : _a.filter(d => typeof d.yValue === 'number')) || [];
236
+ if (filteredData.length > 0) {
237
+ ds.appendRange(filteredData.map(d => d.xValue), filteredData.map(d => d.yValue));
238
+ }
239
+ });
240
+ return { chart, dataSeries, dataKey };
241
+ }
242
+ destroyChart(groupedChart) {
243
+ this.verticalGroup.removeSurface(groupedChart.sciChartSurface);
244
+ this.synchronizer.removeAxis(groupedChart.sciChartSurface.xAxes.get(0));
245
+ groupedChart.sciChartSurface.delete();
246
+ }
247
+ async addChart(dataKey) {
248
+ const chartData = await this.createChart(dataKey);
249
+ if (chartData) {
250
+ const { chart, dataSeries, dataKey } = chartData;
251
+ this.verticalGroup.addSurfaceToGroup(chart.sciChartSurface);
252
+ this.groupCharts = this.groupSorter([
253
+ ...this.groupCharts,
254
+ { dataKey, sciChartSurface: chart.sciChartSurface, dataSeries }
255
+ ]);
256
+ await this.addSeriesToOverviewChart(dataKey);
257
+ }
258
+ }
259
+ async removeChart(dataKey) {
260
+ const index = this.groupCharts.findIndex(chart => chart.dataKey == dataKey);
261
+ if (index === -1)
262
+ return;
263
+ const [groupedChart] = this.groupCharts.splice(index, 1);
264
+ this.destroyChart(groupedChart);
265
+ this.groupCharts = this.groupSorter(this.groupCharts);
266
+ // await this.removeSeriesFromOverviewChart(dataKey)
267
+ }
268
+ async addSeriesToOverviewChart(dataKey) {
269
+ var _a;
270
+ if (!this.overviewChart || !this.overviewDataSeries) {
271
+ console.error('Overview chart is not initialized.');
272
+ return;
273
+ }
274
+ const dataset = (_a = this.config) === null || _a === void 0 ? void 0 : _a.data.datasets.find(dataset => dataset.dataKey === dataKey);
275
+ if (!dataset) {
276
+ console.error('Dataset not found for dataKey:', dataKey);
277
+ return;
278
+ }
279
+ const newSeries = await this.createSeriesForOverview(dataset);
280
+ if (newSeries) {
281
+ this.overviewChart.sciChartSurface.renderableSeries.add(newSeries.series);
282
+ this.overviewDataSeries.push(newSeries.dataSeries);
283
+ }
284
+ }
285
+ async removeSeriesFromOverviewChart(dataKey) {
286
+ if (!this.overviewChart || !this.overviewDataSeries) {
287
+ console.error('Overview chart is not initialized.');
288
+ return;
289
+ }
290
+ const { sciChartSurface } = this.overviewChart;
291
+ // 오버뷰 차트의 renderableSeries에서 해당 시리즈 제거
292
+ const seriesIndex = sciChartSurface.renderableSeries.asArray().findIndex((series) => {
293
+ return series.dataSeries.dataSeriesName === dataKey;
294
+ });
295
+ if (seriesIndex !== -1) {
296
+ const series = sciChartSurface.renderableSeries.get(seriesIndex);
297
+ const yAxisId = series.yAxisId;
298
+ // 시리즈 제거
299
+ sciChartSurface.renderableSeries.removeAt(seriesIndex);
300
+ this.overviewDataSeries.splice(seriesIndex, 1); // 데이터 시리즈도 제거
301
+ // 고유 Y축 제거
302
+ if (yAxisId) {
303
+ const yAxisIndex = sciChartSurface.yAxes.asArray().findIndex((axis) => axis.id === yAxisId);
304
+ if (yAxisIndex !== -1) {
305
+ sciChartSurface.yAxes.removeAt(yAxisIndex);
306
+ }
307
+ }
308
+ }
309
+ else {
310
+ console.error('Series not found in overview chart for dataKey:', dataKey);
311
+ }
312
+ }
313
+ async createSeriesForOverview(dataset) {
314
+ if (!this.overviewChart)
315
+ return null;
316
+ const { sciChartSurface, wasmContext } = this.overviewChart;
317
+ const dataSeries = new XyDataSeries(wasmContext, {
318
+ dataSeriesName: dataset.dataKey,
319
+ containsNaN: false
320
+ });
321
+ // 새로운 Y축을 추가하여 노멀라이즈 효과를 제공
322
+ const yAxisId = `yAxis_${dataset.dataKey}`;
323
+ const yAxis = new NumericAxis(wasmContext, {
324
+ id: yAxisId,
325
+ autoRange: EAutoRange.Always,
326
+ drawLabels: false,
327
+ drawMajorTickLines: false,
328
+ drawMinorTickLines: false,
329
+ drawMajorGridLines: false,
330
+ drawMinorGridLines: false
331
+ });
332
+ sciChartSurface.yAxes.add(yAxis);
333
+ const series = new FastLineRenderableSeries(wasmContext, {
334
+ dataSeries,
335
+ strokeThickness: 1,
336
+ stroke: convertColor(dataset.color, DEFAULT_COLOR),
337
+ yAxisId
338
+ });
339
+ // 초기 데이터 추가
340
+ const newData = this.dataSet.find((data, index) => { var _a; return ((_a = this.config) === null || _a === void 0 ? void 0 : _a.data.datasets[index].dataKey) === dataset.dataKey; });
341
+ if (newData && newData.length > 0) {
342
+ const xValues = newData.map(d => d.xValue);
343
+ const yValues = newData.map(d => d.yValue).filter(y => typeof y === 'number' && !isNaN(y)); // y 값 검증
344
+ if (yValues.length > 0) {
345
+ // 유효한 y 값이 있을 때만 추가
346
+ dataSeries.appendRange(xValues, yValues);
347
+ }
348
+ else {
349
+ console.warn('No valid yValues found for dataset:', dataset.dataKey);
350
+ }
351
+ }
352
+ return { series, dataSeries };
353
+ }
354
+ groupSorter(group) {
355
+ return group.sort((a, b) => this.visibleSeries.findIndex((s) => s.dataKey == a.dataKey) -
356
+ this.visibleSeries.findIndex((s) => s.dataKey == b.dataKey));
357
+ }
358
+ async appendData(appendum) { }
359
+ };
360
+ OxSciChartMultiple.idx = 0;
361
+ OxSciChartMultiple.styles = [
362
+ ScrollbarStyles,
363
+ css `
364
+ :host {
365
+ display: flex;
366
+ flex-direction: column;
367
+ width: 100%;
368
+ height: 100%;
369
+ }
370
+
371
+ .overview {
372
+ height: 80px;
373
+ }
374
+
375
+ #chart-group {
376
+ flex: 1;
377
+ display: flex;
378
+ flex-direction: column;
379
+ overflow-y: auto;
380
+ }
381
+
382
+ .grouped-chart {
383
+ flex: 1;
384
+ min-height: 25%;
385
+ }
386
+
387
+ [hidden] {
388
+ display: none;
389
+ }
390
+ `
391
+ ];
392
+ __decorate([
393
+ property({ type: Object })
394
+ ], OxSciChartMultiple.prototype, "config", void 0);
395
+ __decorate([
396
+ property({ type: Array })
397
+ ], OxSciChartMultiple.prototype, "data", void 0);
398
+ __decorate([
399
+ property({ type: Array })
400
+ ], OxSciChartMultiple.prototype, "visibleSeries", void 0);
401
+ __decorate([
402
+ property({ type: Boolean, attribute: 'show-overview' })
403
+ ], OxSciChartMultiple.prototype, "showOverview", void 0);
404
+ __decorate([
405
+ query('.overview')
406
+ ], OxSciChartMultiple.prototype, "overviewContainer", void 0);
407
+ OxSciChartMultiple = OxSciChartMultiple_1 = __decorate([
408
+ customElement('ox-scichart-multiple-xxx')
409
+ ], OxSciChartMultiple);
410
+ export { OxSciChartMultiple };
411
+ //# sourceMappingURL=ox-scichart-multiple%20copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ox-scichart-multiple copy.js","sourceRoot":"","sources":["../../src/charts/ox-scichart-multiple copy.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, css } from 'lit'\nimport { property, query, customElement } from 'lit/decorators.js'\nimport { keyed } from 'lit/directives/keyed.js'\n\nimport { calculatePrecision, buildSciChart, buildSciChartOverview, convertColor } from './scichart-builder'\n// import { buildSciChartOverview, createAxisForOverview } from './scichart-overview-builder'\nimport { AxisSynchroniser } from './axis-synchronizer'\nimport {\n EAutoRange,\n FastLineRenderableSeries,\n NumberRange,\n NumericAxis,\n SciChartVerticalGroup,\n XyDataSeries\n} from 'scichart'\n\nimport { ScrollbarStyles } from '@operato/styles'\n\nconst DEFAULT_COLOR = '#FF6600'\n\n@customElement('ox-scichart-multiple-xxx')\nexport class OxSciChartMultiple extends LitElement {\n @property({ type: Object }) config: OperatoChart.ChartConfig | null = null\n @property({ type: Array }) data: { [attr: string]: any }[] = []\n @property({ type: Array }) visibleSeries: string[] = []\n @property({ type: Boolean, attribute: 'show-overview' }) showOverview: boolean = true\n\n private synchronizer: AxisSynchroniser = new AxisSynchroniser(new NumberRange(200, 500))\n private verticalGroup: SciChartVerticalGroup = new SciChartVerticalGroup()\n\n private overviewChart: any = null\n private overviewDataSeries: any[] = []\n private groupCharts: {\n dataKey: string\n sciChartSurface: any\n dataSeries: any[]\n }[] = []\n private initializationQueue: Promise<void> = Promise.resolve()\n\n private containerId: string = 'ox-scichart-multiple' + ++OxSciChartMultiple.idx\n\n @query('.overview') overviewContainer!: HTMLDivElement\n\n static idx: number = 0\n\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n }\n\n .overview {\n height: 80px;\n }\n\n #chart-group {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n }\n\n .grouped-chart {\n flex: 1;\n min-height: 25%;\n }\n\n [hidden] {\n display: none;\n }\n `\n ]\n\n async initializeSciChart() {\n this.cleanup()\n\n if (!this.overviewContainer) {\n console.error('Overview container not found!')\n return\n }\n\n const overviewDatasets =\n this.config?.data.datasets.filter(dataset => this.visibleSeries.includes(dataset.dataKey!)) || []\n\n const { chart, dataSeries } =\n (await buildSciChartOverview(\n {\n ...this.config,\n data: { datasets: overviewDatasets }\n },\n this.overviewContainer,\n {},\n this.synchronizer\n )) || {}\n\n if (!chart || !dataSeries) {\n console.error('Failed to create overview chart!')\n return\n }\n\n this.verticalGroup.addSurfaceToGroup(chart.sciChartSurface)\n this.overviewChart = chart\n this.overviewDataSeries = dataSeries\n }\n\n async updated(changedProperties: Map<string | number | symbol, unknown>) {\n this.initializationQueue = this.initializationQueue\n .then(async () => {\n let needUpdateDataSeries = false\n\n if (changedProperties.has('config') && this.config) {\n await this.initializeSciChart()\n await this.buildChartGroup()\n needUpdateDataSeries = true\n }\n\n if (changedProperties.has('visibleSeries')) {\n this.cleanupOverview()\n await this.buildChartGroup()\n needUpdateDataSeries = true\n }\n\n if (changedProperties.has('data')) {\n needUpdateDataSeries = true\n }\n\n if (needUpdateDataSeries) {\n await this.updateDataSeries()\n }\n })\n .catch(error => {\n console.error('Error in updated queue:', error)\n })\n }\n\n cleanup() {\n this.cleanupGroup()\n this.cleanupOverview()\n }\n\n cleanupGroup() {\n this.groupCharts.forEach(chart => {\n if (chart.sciChartSurface) {\n this.synchronizer.removeAxis(chart.sciChartSurface.xAxes.get(0))\n this.verticalGroup.removeSurface(chart.sciChartSurface)\n chart.sciChartSurface.delete()\n }\n })\n\n this.groupCharts.length = 0\n }\n\n cleanupOverview() {\n if (this.overviewChart) {\n this.overviewChart.sciChartSurface.renderableSeries.clear() // 모든 시리즈 제거\n this.overviewDataSeries.forEach(ds => ds.delete()) // 메모리 해제\n this.overviewDataSeries.length = 0 // 데이터 시리즈 목록 초기화\n }\n\n this.overviewChart = null\n }\n\n async updateDataSeries() {\n const { config, data } = this\n const { datasets = [], labelDataKey: attrX } = config?.data || {}\n\n if (!(data instanceof Array) || !attrX) {\n return\n }\n\n const newData = this.dataSet\n\n this.groupCharts.forEach(({ dataKey, dataSeries }) => {\n const relevantDataset = datasets.find(dataset => dataset.dataKey === dataKey)\n if (!relevantDataset) {\n return\n }\n\n const dataIndex = datasets.findIndex(ds => ds.dataKey === relevantDataset.dataKey)\n const filteredData = newData[dataIndex]?.filter(d => typeof d.yValue === 'number') || []\n\n dataSeries.forEach(ds => {\n if (ds.count() !== filteredData.length || !this.dataSeriesEqual(ds, filteredData)) {\n ds.clear()\n if (filteredData.length > 0) {\n ds.appendRange(\n filteredData.map(d => d.xValue),\n filteredData.map(d => d.yValue)\n )\n }\n }\n })\n })\n\n this.overviewDataSeries.forEach((ds, index) => {\n const visibleKey = this.visibleSeries[index]\n const dataset = datasets.find(dataset => dataset.dataKey === visibleKey)\n if (!dataset) {\n return\n }\n\n const dataIndex = datasets.findIndex(ds => ds.dataKey === dataset.dataKey)\n const filteredData = newData[dataIndex]?.filter(d => typeof d.yValue === 'number') || []\n\n if (ds.count() !== filteredData.length || !this.dataSeriesEqual(ds, filteredData)) {\n ds.clear()\n if (filteredData.length > 0) {\n ds.appendRange(\n filteredData.map(d => d.xValue),\n filteredData.map(d => d.yValue)\n )\n }\n }\n })\n }\n\n private dataSeriesEqual(ds: any, filteredData: { xValue: number; yValue: number }[]): boolean {\n for (let i = 0; i < ds.count(); i++) {\n const xValue = ds.getNativeXValues().get(i)\n const yValue = ds.getNativeYValues().get(i)\n\n if (xValue !== filteredData[i].xValue || yValue !== filteredData[i].yValue) {\n return false\n }\n }\n return true\n }\n\n get dataSet(): { xValue: number; yValue: number }[][] {\n const { config, data } = this\n const { datasets = [], labelDataKey: attrX } = config?.data || {}\n\n if (!(data instanceof Array) || !attrX) {\n return []\n }\n\n return datasets.map(dataset => {\n return data\n .map(item => {\n if (!item || typeof item !== 'object') {\n return\n }\n\n const xValue = new Date(item[attrX])\n if (isNaN(xValue.getTime())) {\n console.error('Invalid date:', item[attrX])\n return\n }\n\n return {\n xValue: xValue.getTime() / 1000,\n yValue: item[dataset.dataKey!]\n }\n })\n .filter(Boolean) as { xValue: number; yValue: number }[]\n })\n }\n\n render() {\n return html`\n <div id=${this.containerId + '-overview'} class=\"overview\" ?hidden=${!this.showOverview}></div>\n <div id=\"chart-group\">\n ${this.visibleSeries.map(dataKey =>\n keyed(dataKey, html` <div id=${this.containerId + '-' + dataKey} class=\"grouped-chart\"></div> `)\n )}\n </div>\n `\n }\n\n async buildChartGroup() {\n this.cleanupGroup()\n\n const { config } = this\n const { datasets = [] } = config?.data || {}\n\n await Promise.all(\n datasets\n .filter(dataset => this.visibleSeries.includes(dataset.dataKey!))\n .map(async dataset => {\n await this.addChart(dataset.dataKey!)\n })\n )\n }\n\n async updateSeries(after: string[], before: string[]) {\n const addSeries = after?.filter(series => !before.includes(series)) || []\n const removeSeries = before?.filter(series => !after.includes(series)) || []\n\n for (const series of removeSeries) {\n await this.removeChart(series)\n }\n\n for (const series of addSeries) {\n await this.addChart(series)\n }\n }\n\n private async createChart(dataKey: string) {\n const { data = {}, options = {} } = this.config || {}\n const { datasets = [] } = data as OperatoChart.ChartData\n const primaryDataset = datasets.find(dataset => dataset.dataKey == dataKey)\n\n if (!primaryDataset) {\n return null\n }\n\n const relatedDatasets = datasets.filter(dataset => dataset.dataKey?.startsWith(dataKey))\n\n const yAxis = {\n ...options.scales?.yAxes?.[0],\n axisTitle: primaryDataset?.label\n }\n\n const config = {\n ...this.config,\n data: {\n datasets: relatedDatasets\n },\n options: {\n ...options,\n scales: {\n ...options.scales,\n yAxes: [yAxis]\n }\n }\n }\n\n const container = this.renderRoot.querySelector(`#${this.containerId + '-' + dataKey}`)\n const { chart, dataSeries } = (await buildSciChart(\n config,\n container,\n { fontSize: 14, fontFamily: 'Roboto', fontColor: undefined },\n {\n precision: primaryDataset.valueFormat ? calculatePrecision(primaryDataset.valueFormat) : undefined,\n grouped: this.containerId\n }\n ))!\n\n this.synchronizer.addAxis(chart.sciChartSurface.xAxes.get(0))\n\n // 각 시리즈에 대해 올바른 데이터를 추가\n const newData = this.dataSet\n dataSeries.forEach((ds, seriesIndex) => {\n const dataset = relatedDatasets[seriesIndex]\n const filteredData = newData[seriesIndex]?.filter(d => typeof d.yValue === 'number') || []\n if (filteredData.length > 0) {\n ds.appendRange(\n filteredData.map(d => d.xValue),\n filteredData.map(d => d.yValue)\n )\n }\n })\n\n return { chart, dataSeries, dataKey }\n }\n\n private destroyChart(groupedChart: { dataKey: string; sciChartSurface: any; dataSeries: any[] }) {\n this.verticalGroup.removeSurface(groupedChart.sciChartSurface)\n this.synchronizer.removeAxis(groupedChart.sciChartSurface.xAxes.get(0))\n groupedChart.sciChartSurface.delete()\n }\n\n async addChart(dataKey: string) {\n const chartData = await this.createChart(dataKey)\n\n if (chartData) {\n const { chart, dataSeries, dataKey } = chartData\n this.verticalGroup.addSurfaceToGroup(chart.sciChartSurface)\n\n this.groupCharts = this.groupSorter([\n ...this.groupCharts,\n { dataKey, sciChartSurface: chart.sciChartSurface, dataSeries }\n ])\n\n await this.addSeriesToOverviewChart(dataKey)\n }\n }\n\n async removeChart(dataKey: string) {\n const index = this.groupCharts.findIndex(chart => chart.dataKey == dataKey)\n if (index === -1) return\n\n const [groupedChart] = this.groupCharts.splice(index, 1)\n this.destroyChart(groupedChart)\n\n this.groupCharts = this.groupSorter(this.groupCharts)\n\n // await this.removeSeriesFromOverviewChart(dataKey)\n }\n\n async addSeriesToOverviewChart(dataKey: string) {\n if (!this.overviewChart || !this.overviewDataSeries) {\n console.error('Overview chart is not initialized.')\n return\n }\n\n const dataset = this.config?.data.datasets.find(dataset => dataset.dataKey === dataKey)\n if (!dataset) {\n console.error('Dataset not found for dataKey:', dataKey)\n return\n }\n\n const newSeries = await this.createSeriesForOverview(dataset)\n\n if (newSeries) {\n this.overviewChart.sciChartSurface.renderableSeries.add(newSeries.series)\n this.overviewDataSeries.push(newSeries.dataSeries)\n }\n }\n\n async removeSeriesFromOverviewChart(dataKey: string) {\n if (!this.overviewChart || !this.overviewDataSeries) {\n console.error('Overview chart is not initialized.')\n return\n }\n\n const { sciChartSurface } = this.overviewChart\n\n // 오버뷰 차트의 renderableSeries에서 해당 시리즈 제거\n const seriesIndex = sciChartSurface.renderableSeries.asArray().findIndex((series: any) => {\n return series.dataSeries.dataSeriesName === dataKey\n })\n\n if (seriesIndex !== -1) {\n const series = sciChartSurface.renderableSeries.get(seriesIndex)\n const yAxisId = series.yAxisId\n\n // 시리즈 제거\n sciChartSurface.renderableSeries.removeAt(seriesIndex)\n this.overviewDataSeries.splice(seriesIndex, 1) // 데이터 시리즈도 제거\n\n // 고유 Y축 제거\n if (yAxisId) {\n const yAxisIndex = sciChartSurface.yAxes.asArray().findIndex((axis: any) => axis.id === yAxisId)\n if (yAxisIndex !== -1) {\n sciChartSurface.yAxes.removeAt(yAxisIndex)\n }\n }\n } else {\n console.error('Series not found in overview chart for dataKey:', dataKey)\n }\n }\n\n async createSeriesForOverview(dataset: any) {\n if (!this.overviewChart) return null\n\n const { sciChartSurface, wasmContext } = this.overviewChart\n const dataSeries = new XyDataSeries(wasmContext, {\n dataSeriesName: dataset.dataKey,\n containsNaN: false\n })\n\n // 새로운 Y축을 추가하여 노멀라이즈 효과를 제공\n const yAxisId = `yAxis_${dataset.dataKey}`\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\n })\n\n // 초기 데이터 추가\n const newData = this.dataSet.find((data, index) => this.config?.data.datasets[index].dataKey === dataset.dataKey)\n if (newData && newData.length > 0) {\n const xValues = newData.map(d => d.xValue)\n const yValues = newData.map(d => d.yValue).filter(y => typeof y === 'number' && !isNaN(y)) // y 값 검증\n\n if (yValues.length > 0) {\n // 유효한 y 값이 있을 때만 추가\n dataSeries.appendRange(xValues, yValues)\n } else {\n console.warn('No valid yValues found for dataset:', dataset.dataKey)\n }\n }\n\n return { series, dataSeries }\n }\n\n groupSorter(group: any[]) {\n return group.sort(\n (a, b) =>\n this.visibleSeries.findIndex((s: any) => s.dataKey == a.dataKey) -\n this.visibleSeries.findIndex((s: any) => s.dataKey == b.dataKey)\n )\n }\n\n async appendData(appendum: { [attr: string]: any }[]) {}\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ox-scichart-multiple': OxSciChartMultiple\n }\n}\n"]}
@@ -8,19 +8,20 @@ export declare class OxSciChartMultiple extends LitElement {
8
8
  showOverview: boolean;
9
9
  private synchronizer;
10
10
  private verticalGroup;
11
- private isInitializing;
12
11
  private overviewChart;
13
12
  private overviewDataSeries;
14
13
  private groupCharts;
14
+ private initializationQueue;
15
15
  private containerId;
16
16
  overviewContainer: HTMLDivElement;
17
17
  static idx: number;
18
18
  static styles: import("lit").CSSResult[];
19
19
  initializeSciChart(): Promise<void>;
20
+ createOverviewChart(): Promise<void>;
20
21
  updated(changedProperties: Map<string | number | symbol, unknown>): Promise<void>;
21
- private ensureInitialization;
22
22
  cleanup(): void;
23
23
  cleanupGroup(): void;
24
+ cleanupOverview(): void;
24
25
  updateDataSeries(): Promise<never[] | undefined>;
25
26
  get dataSet(): {
26
27
  xValue: number;
@@ -30,14 +31,14 @@ export declare class OxSciChartMultiple extends LitElement {
30
31
  buildChartGroup(): Promise<void>;
31
32
  updateSeries(after: string[], before: string[]): Promise<void>;
32
33
  addChart(dataKey: string): Promise<void>;
33
- removeChart(dataKey: string): void;
34
+ removeChart(dataKey: string): Promise<void>;
34
35
  groupSorter(group: any[]): any[];
35
36
  appendData(appendum: {
36
37
  [attr: string]: any;
37
38
  }[]): Promise<void>;
38
- }
39
- declare global {
40
- interface HTMLElementTagNameMap {
41
- 'ox-scichart-multiple': OxSciChartMultiple;
42
- }
39
+ private createChart;
40
+ private destroyChart;
41
+ private addSeriesToOverviewChart;
42
+ private removeSeriesFromOverviewChart;
43
+ private createSeriesForOverview;
43
44
  }