@operato/scene-scichart 7.2.4 → 7.2.6
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 +18 -0
- package/db.sqlite +0 -0
- package/dist/charts/ox-scichart-multiple.js +42 -27
- package/dist/charts/ox-scichart-multiple.js.map +1 -1
- package/dist/charts/ox-scichart.js +8 -4
- package/dist/charts/ox-scichart.js.map +1 -1
- package/dist/charts/scichart-builder.js +51 -28
- package/dist/charts/scichart-builder.js.map +1 -1
- package/logs/.08636eb59927f12972f6774f5947c8507b3564c2-audit.json +25 -0
- package/logs/.5e5d741d8b7784a2fbad65eedc0fd46946aaf6f2-audit.json +25 -0
- package/logs/application-2024-08-03-02.log +105 -0
- package/logs/application-2024-08-03-11.log +105 -0
- package/logs/application-2024-08-03-13.log +105 -0
- package/logs/application-2024-08-03-14.log +105 -0
- package/logs/application-2024-08-03-15.log +210 -0
- package/logs/connections-2024-08-03-02.log +50 -0
- package/logs/connections-2024-08-03-11.log +50 -0
- package/logs/connections-2024-08-03-13.log +50 -0
- package/logs/connections-2024-08-03-14.log +50 -0
- package/logs/connections-2024-08-03-15.log +100 -0
- package/package.json +2 -2
- package/src/charts/ox-scichart-multiple.ts +53 -30
- package/src/charts/ox-scichart.ts +7 -3
- package/src/charts/scichart-builder.ts +63 -39
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
2024-08-03T15:13:56+09:00 info: Initializing ConnectionManager...
|
|
2
|
+
2024-08-03T15:13:56+09:00 info: Connector 'echo-back-server' started to ready
|
|
3
|
+
2024-08-03T15:13:56+09:00 info: Connector 'echo-back' started to ready
|
|
4
|
+
2024-08-03T15:13:56+09:00 info: Connector 'http-connector' started to ready
|
|
5
|
+
2024-08-03T15:13:56+09:00 info: Connector 'graphql-connector' started to ready
|
|
6
|
+
2024-08-03T15:13:56+09:00 info: Connector 'sqlite-connector' started to ready
|
|
7
|
+
2024-08-03T15:13:56+09:00 info: Connector 'postgresql-connector' started to ready
|
|
8
|
+
2024-08-03T15:13:56+09:00 info: Connector 'mqtt-connector' started to ready
|
|
9
|
+
2024-08-03T15:13:56+09:00 info: Connector 'mssql-connector' started to ready
|
|
10
|
+
2024-08-03T15:13:56+09:00 info: Connector 'oracle-connector' started to ready
|
|
11
|
+
2024-08-03T15:13:56+09:00 info: Connector 'mysql-connector' started to ready
|
|
12
|
+
2024-08-03T15:13:56+09:00 info: Connector 'socket-server' started to ready
|
|
13
|
+
2024-08-03T15:13:56+09:00 info: Connector 'operato-connector' started to ready
|
|
14
|
+
2024-08-03T15:13:56+09:00 info: Connector 'email-connector' started to ready
|
|
15
|
+
2024-08-03T15:13:56+09:00 info: Connector 'influxdb-connector' started to ready
|
|
16
|
+
2024-08-03T15:13:56+09:00 info: Connector 'msgraph-connector' started to ready
|
|
17
|
+
2024-08-03T15:13:56+09:00 info: Connector 'proxy-connector' started to ready
|
|
18
|
+
2024-08-03T15:13:56+09:00 info: echo-back-servers are ready
|
|
19
|
+
2024-08-03T15:13:56+09:00 info: echo-back connections are ready
|
|
20
|
+
2024-08-03T15:13:56+09:00 info: http-connector connections are ready
|
|
21
|
+
2024-08-03T15:13:56+09:00 info: graphql-connector connections are ready
|
|
22
|
+
2024-08-03T15:13:56+09:00 info: sqlite-connector connections are ready
|
|
23
|
+
2024-08-03T15:13:56+09:00 info: postgresql-connector connections are ready
|
|
24
|
+
2024-08-03T15:13:56+09:00 info: mqtt-connector connections are ready
|
|
25
|
+
2024-08-03T15:13:56+09:00 info: mssql-connector connections are ready
|
|
26
|
+
2024-08-03T15:13:56+09:00 info: oracle-connector connections are ready
|
|
27
|
+
2024-08-03T15:13:56+09:00 info: mysql-connector connections are ready
|
|
28
|
+
2024-08-03T15:13:56+09:00 info: socket servers are ready
|
|
29
|
+
2024-08-03T15:13:56+09:00 info: operato-connector connections are ready
|
|
30
|
+
2024-08-03T15:13:56+09:00 info: email connections are ready
|
|
31
|
+
2024-08-03T15:13:56+09:00 info: influxdb connections are ready
|
|
32
|
+
2024-08-03T15:13:56+09:00 info: msgraph-connector connections are ready
|
|
33
|
+
2024-08-03T15:13:56+09:00 info: proxy-connector connections are ready
|
|
34
|
+
2024-08-03T15:13:56+09:00 info: All connector for 'echo-back-server' ready
|
|
35
|
+
2024-08-03T15:13:56+09:00 info: All connector for 'echo-back' ready
|
|
36
|
+
2024-08-03T15:13:56+09:00 info: All connector for 'http-connector' ready
|
|
37
|
+
2024-08-03T15:13:56+09:00 info: All connector for 'graphql-connector' ready
|
|
38
|
+
2024-08-03T15:13:56+09:00 info: All connector for 'sqlite-connector' ready
|
|
39
|
+
2024-08-03T15:13:56+09:00 info: All connector for 'postgresql-connector' ready
|
|
40
|
+
2024-08-03T15:13:56+09:00 info: All connector for 'mqtt-connector' ready
|
|
41
|
+
2024-08-03T15:13:56+09:00 info: All connector for 'mssql-connector' ready
|
|
42
|
+
2024-08-03T15:13:56+09:00 info: All connector for 'oracle-connector' ready
|
|
43
|
+
2024-08-03T15:13:56+09:00 info: All connector for 'mysql-connector' ready
|
|
44
|
+
2024-08-03T15:13:56+09:00 info: All connector for 'socket-server' ready
|
|
45
|
+
2024-08-03T15:13:56+09:00 info: All connector for 'operato-connector' ready
|
|
46
|
+
2024-08-03T15:13:56+09:00 info: All connector for 'email-connector' ready
|
|
47
|
+
2024-08-03T15:13:56+09:00 info: All connector for 'influxdb-connector' ready
|
|
48
|
+
2024-08-03T15:13:56+09:00 info: All connector for 'msgraph-connector' ready
|
|
49
|
+
2024-08-03T15:13:56+09:00 info: All connector for 'proxy-connector' ready
|
|
50
|
+
2024-08-03T15:13:56+09:00 info: ConnectionManager initialization done:
|
|
51
|
+
2024-08-03T15:29:18+09:00 info: Initializing ConnectionManager...
|
|
52
|
+
2024-08-03T15:29:18+09:00 info: Connector 'echo-back-server' started to ready
|
|
53
|
+
2024-08-03T15:29:18+09:00 info: Connector 'echo-back' started to ready
|
|
54
|
+
2024-08-03T15:29:18+09:00 info: Connector 'http-connector' started to ready
|
|
55
|
+
2024-08-03T15:29:18+09:00 info: Connector 'graphql-connector' started to ready
|
|
56
|
+
2024-08-03T15:29:18+09:00 info: Connector 'sqlite-connector' started to ready
|
|
57
|
+
2024-08-03T15:29:18+09:00 info: Connector 'postgresql-connector' started to ready
|
|
58
|
+
2024-08-03T15:29:18+09:00 info: Connector 'mqtt-connector' started to ready
|
|
59
|
+
2024-08-03T15:29:18+09:00 info: Connector 'mssql-connector' started to ready
|
|
60
|
+
2024-08-03T15:29:18+09:00 info: Connector 'oracle-connector' started to ready
|
|
61
|
+
2024-08-03T15:29:18+09:00 info: Connector 'mysql-connector' started to ready
|
|
62
|
+
2024-08-03T15:29:18+09:00 info: Connector 'socket-server' started to ready
|
|
63
|
+
2024-08-03T15:29:18+09:00 info: Connector 'operato-connector' started to ready
|
|
64
|
+
2024-08-03T15:29:18+09:00 info: Connector 'email-connector' started to ready
|
|
65
|
+
2024-08-03T15:29:18+09:00 info: Connector 'influxdb-connector' started to ready
|
|
66
|
+
2024-08-03T15:29:18+09:00 info: Connector 'msgraph-connector' started to ready
|
|
67
|
+
2024-08-03T15:29:18+09:00 info: Connector 'proxy-connector' started to ready
|
|
68
|
+
2024-08-03T15:29:18+09:00 info: echo-back-servers are ready
|
|
69
|
+
2024-08-03T15:29:18+09:00 info: echo-back connections are ready
|
|
70
|
+
2024-08-03T15:29:18+09:00 info: http-connector connections are ready
|
|
71
|
+
2024-08-03T15:29:18+09:00 info: graphql-connector connections are ready
|
|
72
|
+
2024-08-03T15:29:18+09:00 info: sqlite-connector connections are ready
|
|
73
|
+
2024-08-03T15:29:18+09:00 info: postgresql-connector connections are ready
|
|
74
|
+
2024-08-03T15:29:18+09:00 info: mqtt-connector connections are ready
|
|
75
|
+
2024-08-03T15:29:18+09:00 info: mssql-connector connections are ready
|
|
76
|
+
2024-08-03T15:29:18+09:00 info: oracle-connector connections are ready
|
|
77
|
+
2024-08-03T15:29:18+09:00 info: mysql-connector connections are ready
|
|
78
|
+
2024-08-03T15:29:18+09:00 info: socket servers are ready
|
|
79
|
+
2024-08-03T15:29:18+09:00 info: operato-connector connections are ready
|
|
80
|
+
2024-08-03T15:29:18+09:00 info: email connections are ready
|
|
81
|
+
2024-08-03T15:29:18+09:00 info: influxdb connections are ready
|
|
82
|
+
2024-08-03T15:29:18+09:00 info: msgraph-connector connections are ready
|
|
83
|
+
2024-08-03T15:29:18+09:00 info: proxy-connector connections are ready
|
|
84
|
+
2024-08-03T15:29:18+09:00 info: All connector for 'echo-back-server' ready
|
|
85
|
+
2024-08-03T15:29:18+09:00 info: All connector for 'echo-back' ready
|
|
86
|
+
2024-08-03T15:29:18+09:00 info: All connector for 'http-connector' ready
|
|
87
|
+
2024-08-03T15:29:18+09:00 info: All connector for 'graphql-connector' ready
|
|
88
|
+
2024-08-03T15:29:18+09:00 info: All connector for 'sqlite-connector' ready
|
|
89
|
+
2024-08-03T15:29:18+09:00 info: All connector for 'postgresql-connector' ready
|
|
90
|
+
2024-08-03T15:29:18+09:00 info: All connector for 'mqtt-connector' ready
|
|
91
|
+
2024-08-03T15:29:18+09:00 info: All connector for 'mssql-connector' ready
|
|
92
|
+
2024-08-03T15:29:18+09:00 info: All connector for 'oracle-connector' ready
|
|
93
|
+
2024-08-03T15:29:18+09:00 info: All connector for 'mysql-connector' ready
|
|
94
|
+
2024-08-03T15:29:18+09:00 info: All connector for 'socket-server' ready
|
|
95
|
+
2024-08-03T15:29:18+09:00 info: All connector for 'operato-connector' ready
|
|
96
|
+
2024-08-03T15:29:18+09:00 info: All connector for 'email-connector' ready
|
|
97
|
+
2024-08-03T15:29:18+09:00 info: All connector for 'influxdb-connector' ready
|
|
98
|
+
2024-08-03T15:29:18+09:00 info: All connector for 'msgraph-connector' ready
|
|
99
|
+
2024-08-03T15:29:18+09:00 info: All connector for 'proxy-connector' ready
|
|
100
|
+
2024-08-03T15:29:18+09:00 info: ConnectionManager initialization done:
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@operato/scene-scichart",
|
|
3
3
|
"description": "scichart wrapping component",
|
|
4
|
-
"version": "7.2.
|
|
4
|
+
"version": "7.2.6",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"things-scene": true,
|
|
7
7
|
"author": "heartyoh",
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
"prettier --write"
|
|
60
60
|
]
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "192c803bf1530b2c367537d7a29fa147a3507de6"
|
|
63
63
|
}
|
|
@@ -78,8 +78,20 @@ export class OxSciChartMultiple extends LitElement {
|
|
|
78
78
|
async initializeSciChart() {
|
|
79
79
|
this.cleanup()
|
|
80
80
|
|
|
81
|
+
// Overview 차트는 정확히 일치하는 시리즈 이름만 포함
|
|
82
|
+
const overviewDatasets =
|
|
83
|
+
this.config?.data.datasets.filter(dataset => this.visibleSeries.includes(dataset.dataKey!)) || []
|
|
84
|
+
|
|
81
85
|
const { chart, dataSeries } =
|
|
82
|
-
(await buildSciChartOverview(
|
|
86
|
+
(await buildSciChartOverview(
|
|
87
|
+
{
|
|
88
|
+
...this.config,
|
|
89
|
+
data: { datasets: overviewDatasets }
|
|
90
|
+
},
|
|
91
|
+
this.overviewContainer,
|
|
92
|
+
{},
|
|
93
|
+
this.synchronizer
|
|
94
|
+
)) || {}
|
|
83
95
|
|
|
84
96
|
this.verticalGroup.addSurfaceToGroup(chart.sciChartSurface)
|
|
85
97
|
|
|
@@ -151,30 +163,42 @@ export class OxSciChartMultiple extends LitElement {
|
|
|
151
163
|
|
|
152
164
|
const newData = this.dataSet
|
|
153
165
|
|
|
154
|
-
|
|
166
|
+
this.groupCharts.forEach(({ dataKey, sciChartSurface, dataSeries }) => {
|
|
155
167
|
try {
|
|
156
|
-
|
|
157
|
-
const
|
|
168
|
+
// dataKey로 시작하는 모든 시리즈를 업데이트
|
|
169
|
+
const relatedDatasets = datasets.filter(dataset => dataset.dataKey?.startsWith(dataKey))
|
|
158
170
|
|
|
159
|
-
|
|
160
|
-
|
|
171
|
+
// 각 relatedDatasets에 대해 해당하는 dataSeries를 업데이트
|
|
172
|
+
dataSeries.forEach((ds, index) => {
|
|
173
|
+
ds.clear()
|
|
161
174
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
175
|
+
const relatedDataset = relatedDatasets[index]
|
|
176
|
+
if (relatedDataset) {
|
|
177
|
+
const filteredData = newData[datasets.findIndex(ds => ds.dataKey === relatedDataset.dataKey)].filter(
|
|
178
|
+
d => typeof d.yValue === 'number'
|
|
166
179
|
)
|
|
180
|
+
|
|
181
|
+
if (filteredData.length > 0) {
|
|
182
|
+
ds.appendRange(
|
|
183
|
+
filteredData.map(d => d.xValue),
|
|
184
|
+
filteredData.map(d => d.yValue)
|
|
185
|
+
)
|
|
186
|
+
}
|
|
167
187
|
}
|
|
168
188
|
})
|
|
189
|
+
|
|
190
|
+
// Zoom 및 리렌더링
|
|
191
|
+
setTimeout(() => {
|
|
192
|
+
sciChartSurface.zoomExtents()
|
|
193
|
+
sciChartSurface.invalidateElement()
|
|
194
|
+
}, 200)
|
|
169
195
|
} catch (error) {
|
|
170
|
-
console.
|
|
196
|
+
console.error('Error updating data series:', error)
|
|
171
197
|
}
|
|
172
|
-
|
|
173
|
-
sciChartSurface.zoomExtents()
|
|
174
|
-
sciChartSurface.invalidateElement()
|
|
175
198
|
})
|
|
176
199
|
|
|
177
200
|
try {
|
|
201
|
+
// Overview 차트 데이터 업데이트
|
|
178
202
|
this.overviewDataSeries.forEach(ds => ds.clear())
|
|
179
203
|
|
|
180
204
|
newData.forEach((data, index) => {
|
|
@@ -188,11 +212,8 @@ export class OxSciChartMultiple extends LitElement {
|
|
|
188
212
|
}
|
|
189
213
|
}
|
|
190
214
|
})
|
|
191
|
-
|
|
192
|
-
this.overviewChart?.sciChartSurface.zoomExtents()
|
|
193
|
-
this.overviewChart?.sciChartSurface.invalidateElement()
|
|
194
215
|
} catch (error) {
|
|
195
|
-
console.
|
|
216
|
+
console.error('Error updating overview data series:', error)
|
|
196
217
|
}
|
|
197
218
|
}
|
|
198
219
|
|
|
@@ -232,7 +253,7 @@ export class OxSciChartMultiple extends LitElement {
|
|
|
232
253
|
return html`
|
|
233
254
|
<div id=${this.containerId + '-overview'} class="overview" ?hidden=${!this.showOverview}></div>
|
|
234
255
|
<div id="chart-group">
|
|
235
|
-
${
|
|
256
|
+
${this.visibleSeries.map(dataKey =>
|
|
236
257
|
keyed(
|
|
237
258
|
dataKey,
|
|
238
259
|
html`
|
|
@@ -289,30 +310,29 @@ export class OxSciChartMultiple extends LitElement {
|
|
|
289
310
|
|
|
290
311
|
const { data = {}, options = {} } = this.config || {}
|
|
291
312
|
const { datasets = [] } = data as OperatoChart.ChartData
|
|
292
|
-
const
|
|
313
|
+
const primaryDataset = datasets.find(dataset => dataset.dataKey == dataKey)
|
|
293
314
|
|
|
294
|
-
if (!
|
|
315
|
+
if (!primaryDataset) {
|
|
295
316
|
return
|
|
296
317
|
}
|
|
297
318
|
|
|
298
|
-
|
|
299
|
-
const
|
|
300
|
-
const { valueFormat } = dataset
|
|
319
|
+
// 해당 dataKey로 시작하는 모든 시리즈를 함께 그룹화하여 차트를 구성
|
|
320
|
+
const relatedDatasets = datasets.filter(dataset => dataset.dataKey?.startsWith(dataKey))
|
|
301
321
|
|
|
302
322
|
const yAxis = {
|
|
303
|
-
...yAxes[0],
|
|
304
|
-
axisTitle:
|
|
323
|
+
...options.scales?.yAxes?.[0],
|
|
324
|
+
axisTitle: primaryDataset?.label
|
|
305
325
|
}
|
|
306
326
|
|
|
307
327
|
const config = {
|
|
308
328
|
...this.config,
|
|
309
329
|
data: {
|
|
310
|
-
datasets:
|
|
330
|
+
datasets: relatedDatasets // 이 차트에 포함될 모든 관련 시리즈들
|
|
311
331
|
},
|
|
312
332
|
options: {
|
|
313
333
|
...options,
|
|
314
334
|
scales: {
|
|
315
|
-
...scales,
|
|
335
|
+
...options.scales,
|
|
316
336
|
yAxes: [yAxis]
|
|
317
337
|
}
|
|
318
338
|
}
|
|
@@ -323,13 +343,16 @@ export class OxSciChartMultiple extends LitElement {
|
|
|
323
343
|
config,
|
|
324
344
|
container,
|
|
325
345
|
{ fontSize: 14, fontFamily: 'Roboto', fontColor: undefined },
|
|
326
|
-
{
|
|
346
|
+
{
|
|
347
|
+
precision: primaryDataset.valueFormat ? calculatePrecision(primaryDataset.valueFormat) : undefined,
|
|
348
|
+
grouped: this.containerId
|
|
349
|
+
}
|
|
327
350
|
))!
|
|
328
351
|
|
|
329
352
|
this.verticalGroup.addSurfaceToGroup(chart.sciChartSurface)
|
|
330
353
|
this.synchronizer.addAxis(chart.sciChartSurface.xAxes.get(0))
|
|
331
354
|
|
|
332
|
-
groupedChart.dataKey =
|
|
355
|
+
groupedChart.dataKey = primaryDataset.dataKey!
|
|
333
356
|
groupedChart.sciChartSurface = chart.sciChartSurface
|
|
334
357
|
groupedChart.dataSeries = dataSeries
|
|
335
358
|
|
|
@@ -71,7 +71,9 @@ export class OxSciChart extends LitElement {
|
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
updateDataSeries() {
|
|
74
|
-
if (!this.dataSeries?.length)
|
|
74
|
+
if (!this.dataSeries?.length) {
|
|
75
|
+
return
|
|
76
|
+
}
|
|
75
77
|
|
|
76
78
|
this.dataSeries.forEach(ds => ds.clear())
|
|
77
79
|
const newData = this.dataSet
|
|
@@ -87,8 +89,10 @@ export class OxSciChart extends LitElement {
|
|
|
87
89
|
}
|
|
88
90
|
})
|
|
89
91
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
+
setTimeout(() => {
|
|
93
|
+
this.chart?.sciChartSurface.zoomExtents()
|
|
94
|
+
this.chart?.sciChartSurface.invalidateElement()
|
|
95
|
+
}, 200)
|
|
92
96
|
}
|
|
93
97
|
|
|
94
98
|
get dataSet(): { xValue: number; yValue: number }[][] {
|
|
@@ -44,7 +44,8 @@ import {
|
|
|
44
44
|
HorizontalLineAnnotation,
|
|
45
45
|
VerticalLineAnnotation,
|
|
46
46
|
OverviewRangeSelectionModifier,
|
|
47
|
-
ENumericFormat
|
|
47
|
+
ENumericFormat,
|
|
48
|
+
XySeriesInfo
|
|
48
49
|
} from 'scichart'
|
|
49
50
|
import { AxisSynchroniser } from './axis-synchronizer'
|
|
50
51
|
|
|
@@ -139,12 +140,12 @@ function createAxis(
|
|
|
139
140
|
beginAtZero,
|
|
140
141
|
color = fontColor,
|
|
141
142
|
textStrokeColor = fontColor,
|
|
142
|
-
display
|
|
143
|
+
display = false
|
|
143
144
|
} = ticks || {}
|
|
144
145
|
|
|
145
146
|
const axisOptions = {
|
|
146
147
|
axisTitle,
|
|
147
|
-
autoRange: autoMin || autoMax ? EAutoRange.Always :
|
|
148
|
+
autoRange: autoMin || autoMax ? EAutoRange.Always : EAutoRange.Once,
|
|
148
149
|
axisAlignment: isXAxis ? EAxisAlignment.Bottom : index === 0 ? EAxisAlignment.Left : EAxisAlignment.Right,
|
|
149
150
|
visibleRange: min !== undefined && max !== undefined ? new NumberRange(min, max) : undefined,
|
|
150
151
|
majorDelta: stepSize,
|
|
@@ -159,7 +160,8 @@ function createAxis(
|
|
|
159
160
|
fontSize,
|
|
160
161
|
color: textStrokeColor
|
|
161
162
|
},
|
|
162
|
-
...options
|
|
163
|
+
...options,
|
|
164
|
+
drawLabels: display
|
|
163
165
|
}
|
|
164
166
|
|
|
165
167
|
const labelProvider = isXAxis
|
|
@@ -171,11 +173,11 @@ function createAxis(
|
|
|
171
173
|
: new NumericLabelProvider()
|
|
172
174
|
|
|
173
175
|
if (isXAxis) {
|
|
174
|
-
labelProvider
|
|
176
|
+
labelProvider!.cursorNumericFormat = ENumericFormat.Date_HHMMSS
|
|
175
177
|
} else {
|
|
176
|
-
labelProvider
|
|
177
|
-
labelProvider
|
|
178
|
-
labelProvider
|
|
178
|
+
labelProvider!.numericFormat = ENumericFormat.Decimal
|
|
179
|
+
labelProvider!.precision = precision || calculatePrecision(stepSize || 0.1)
|
|
180
|
+
labelProvider!.cursorNumericFormat = ENumericFormat.NoFormat
|
|
179
181
|
}
|
|
180
182
|
|
|
181
183
|
return isXAxis
|
|
@@ -274,8 +276,8 @@ export async function buildSciChart(
|
|
|
274
276
|
position: 'top'
|
|
275
277
|
},
|
|
276
278
|
scales: fromScales,
|
|
277
|
-
xGridLine =
|
|
278
|
-
yGridLine =
|
|
279
|
+
xGridLine = false,
|
|
280
|
+
yGridLine = false,
|
|
279
281
|
y2ndGridLine = false,
|
|
280
282
|
stacked = false,
|
|
281
283
|
multiAxis = false,
|
|
@@ -297,19 +299,25 @@ export async function buildSciChart(
|
|
|
297
299
|
})
|
|
298
300
|
const { sciChartSurface, wasmContext } = chart
|
|
299
301
|
|
|
300
|
-
// X 축 설정
|
|
301
302
|
xAxes.forEach((axis, index) => {
|
|
302
|
-
const xAxis = createAxis(wasmContext, axis, index, true, fontColor, fontFamily, fontSize
|
|
303
|
+
const xAxis = createAxis(wasmContext, axis, index, true, fontColor, fontFamily, fontSize, undefined, {
|
|
304
|
+
drawMajorTickLines: true,
|
|
305
|
+
drawMinorTickLines: true,
|
|
306
|
+
drawMajorGridLines: xGridLine,
|
|
307
|
+
drawMinorGridLines: xGridLine
|
|
308
|
+
})
|
|
303
309
|
sciChartSurface.xAxes.add(xAxis)
|
|
304
310
|
})
|
|
305
|
-
|
|
306
|
-
// Y 축 설정
|
|
307
311
|
;(multiAxis ? yAxes : [yAxes[0]]).forEach((axis, index) => {
|
|
308
|
-
const yAxis = createAxis(wasmContext, axis, index, false, fontColor, fontFamily, fontSize, precision
|
|
312
|
+
const yAxis = createAxis(wasmContext, axis, index, false, fontColor, fontFamily, fontSize, precision, {
|
|
313
|
+
drawMajorTickLines: true,
|
|
314
|
+
drawMinorTickLines: true,
|
|
315
|
+
drawMajorGridLines: index == 0 ? yGridLine : y2ndGridLine,
|
|
316
|
+
drawMinorGridLines: index == 0 ? yGridLine : y2ndGridLine
|
|
317
|
+
})
|
|
309
318
|
sciChartSurface.yAxes.add(yAxis)
|
|
310
319
|
})
|
|
311
320
|
|
|
312
|
-
// 시리즈 설정
|
|
313
321
|
const dataSeriesArray = datasets.map((dataset, index) => {
|
|
314
322
|
const yAxisId = dataset.yAxisID == 'right' && multiAxis ? 'yAxis1' : undefined
|
|
315
323
|
const { series, dataSeries } = createSeries(wasmContext, dataset, index, !!stacked, !!animation, yAxisId)
|
|
@@ -319,8 +327,14 @@ export async function buildSciChart(
|
|
|
319
327
|
if (tooltip) {
|
|
320
328
|
const rolloverModifier = new RolloverModifier({
|
|
321
329
|
showTooltip: true,
|
|
322
|
-
showAxisLabel: true /*
|
|
323
|
-
modifierGroup: grouped
|
|
330
|
+
showAxisLabel: true /* show x-axis label for cursor */,
|
|
331
|
+
modifierGroup: grouped,
|
|
332
|
+
tooltipDataTemplate: (seriesInfo: XySeriesInfo): string[] => {
|
|
333
|
+
const valuesWithLabels: string[] = []
|
|
334
|
+
const xySeriesInfo = seriesInfo as XySeriesInfo
|
|
335
|
+
valuesWithLabels.push(xySeriesInfo.formattedYValue)
|
|
336
|
+
return valuesWithLabels
|
|
337
|
+
}
|
|
324
338
|
})
|
|
325
339
|
|
|
326
340
|
sciChartSurface.chartModifiers.add(rolloverModifier)
|
|
@@ -329,7 +343,6 @@ export async function buildSciChart(
|
|
|
329
343
|
return dataSeries
|
|
330
344
|
})
|
|
331
345
|
|
|
332
|
-
// Stacked collections 추가
|
|
333
346
|
if (stacked) {
|
|
334
347
|
const stackedColumnCollection = new StackedColumnCollection(wasmContext)
|
|
335
348
|
const stackedMountainCollection = new StackedMountainCollection(wasmContext)
|
|
@@ -434,11 +447,10 @@ export async function buildSciChart(
|
|
|
434
447
|
})
|
|
435
448
|
}
|
|
436
449
|
|
|
437
|
-
// 줌인/줌아웃 모디파이어 추가
|
|
438
450
|
sciChartSurface.chartModifiers.add(
|
|
439
451
|
new RubberBandXyZoomModifier({ executeOn: EExecuteOn.MouseRightButton, modifierGroup: grouped }),
|
|
440
452
|
// new ZoomPanModifier({ xyDirection: EXyDirection.XDirection }),
|
|
441
|
-
new ZoomPanModifier(),
|
|
453
|
+
new ZoomPanModifier({ xyDirection: EXyDirection.XDirection }),
|
|
442
454
|
new MouseWheelZoomModifier({ xyDirection: EXyDirection.XDirection }),
|
|
443
455
|
new ZoomExtentsModifier(),
|
|
444
456
|
new XAxisDragModifier(),
|
|
@@ -488,32 +500,53 @@ export async function buildSciChartOverview(
|
|
|
488
500
|
|
|
489
501
|
const { xAxes = [], yAxes = [] } = fromScales || {}
|
|
490
502
|
|
|
491
|
-
// Instead we create a normal chart and then manually add the OverviewRangeSelectionModifier and bind it to the axisSynchroniser
|
|
492
503
|
const chart = await SciChartSurface.create(container, {
|
|
493
504
|
theme: theme == 'dark' ? new SciChartJSDarkv2Theme() : new SciChartJSLightTheme()
|
|
494
505
|
})
|
|
495
506
|
const { sciChartSurface, wasmContext } = chart
|
|
496
507
|
|
|
497
|
-
// X 축 설정
|
|
498
508
|
xAxes.forEach((axis, index) => {
|
|
499
|
-
const xAxis = createAxis(wasmContext, axis, index, true, fontColor, fontFamily, fontSize
|
|
509
|
+
const xAxis = createAxis(wasmContext, axis, index, true, fontColor, fontFamily, fontSize, undefined, {
|
|
510
|
+
drawMajorTickLines: false,
|
|
511
|
+
drawMinorTickLines: false,
|
|
512
|
+
drawMajorGridLines: false,
|
|
513
|
+
drawMinorGridLines: false
|
|
514
|
+
})
|
|
500
515
|
sciChartSurface.xAxes.add(xAxis)
|
|
501
516
|
})
|
|
502
517
|
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
const
|
|
518
|
+
const dataSeriesArray = datasets.map((dataset, index) => {
|
|
519
|
+
const yAxisId = `yAxis${index}`
|
|
520
|
+
const dataSeries = new XyDataSeries(wasmContext, {
|
|
521
|
+
dataSeriesName: dataset.label,
|
|
522
|
+
containsNaN: false
|
|
523
|
+
})
|
|
524
|
+
|
|
525
|
+
const yAxis = new NumericAxis(wasmContext, {
|
|
526
|
+
id: yAxisId,
|
|
527
|
+
autoRange: EAutoRange.Always,
|
|
506
528
|
drawLabels: false,
|
|
507
|
-
|
|
508
|
-
|
|
529
|
+
drawMajorTickLines: false,
|
|
530
|
+
drawMinorTickLines: false,
|
|
509
531
|
drawMajorGridLines: false,
|
|
510
532
|
drawMinorGridLines: false
|
|
511
533
|
})
|
|
534
|
+
|
|
512
535
|
sciChartSurface.yAxes.add(yAxis)
|
|
536
|
+
|
|
537
|
+
const series = new FastLineRenderableSeries(wasmContext, {
|
|
538
|
+
dataSeries,
|
|
539
|
+
strokeThickness: 1,
|
|
540
|
+
stroke: convertColor(dataset.color, DEFAULT_COLOR),
|
|
541
|
+
yAxisId: yAxisId
|
|
542
|
+
})
|
|
543
|
+
|
|
544
|
+
sciChartSurface.renderableSeries.add(series)
|
|
545
|
+
|
|
546
|
+
return dataSeries
|
|
513
547
|
})
|
|
514
548
|
|
|
515
549
|
const rangeSelectionModifier = new OverviewRangeSelectionModifier()
|
|
516
|
-
// When the range selection is moved, updated the linked charts
|
|
517
550
|
rangeSelectionModifier.onSelectedAreaChanged = (selectedRange?: NumberRange) => {
|
|
518
551
|
if (!selectedRange!.equals(axisSynchroniser.visibleRange)) {
|
|
519
552
|
axisSynchroniser.publishChange({ visibleRange: selectedRange! })
|
|
@@ -523,7 +556,6 @@ export async function buildSciChartOverview(
|
|
|
523
556
|
rangeSelectionModifier.selectedArea = axisSynchroniser.visibleRange
|
|
524
557
|
sciChartSurface.chartModifiers.add(rangeSelectionModifier)
|
|
525
558
|
|
|
526
|
-
// When charts are moved, update the range selection
|
|
527
559
|
axisSynchroniser.visibleRangeChanged.subscribe(({ visibleRange }: any) => {
|
|
528
560
|
const updatedSelectedRange = visibleRange.clip(sciChartSurface.xAxes.get(0).visibleRange)
|
|
529
561
|
const shouldUpdateSelectedRange = !updatedSelectedRange.equals(rangeSelectionModifier.selectedArea)
|
|
@@ -532,13 +564,5 @@ export async function buildSciChartOverview(
|
|
|
532
564
|
}
|
|
533
565
|
})
|
|
534
566
|
|
|
535
|
-
const dataSeriesArray = datasets.map((dataset, index) => {
|
|
536
|
-
const yAxisId = dataset.yAxisID == 'right' && multiAxis ? 'yAxis1' : undefined
|
|
537
|
-
const { series, dataSeries } = createSeries(wasmContext, dataset, index, !!stacked, !!animation, yAxisId)
|
|
538
|
-
|
|
539
|
-
sciChartSurface.renderableSeries.add(series)
|
|
540
|
-
return dataSeries
|
|
541
|
-
})
|
|
542
|
-
|
|
543
567
|
return { chart, dataSeries: dataSeriesArray }
|
|
544
568
|
}
|