@operato/scene-scichart 7.2.3 → 7.2.5

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,24 @@
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.5](https://github.com/things-scene/operato-scene/compare/v7.2.4...v7.2.5) (2024-08-03)
7
+
8
+
9
+ ### :bug: Bug Fix
10
+
11
+ * scichart yAxis precision ([07bfb65](https://github.com/things-scene/operato-scene/commit/07bfb65812a861951c255e42824d6be3f9817c2d))
12
+
13
+
14
+
15
+ ## [7.2.4](https://github.com/things-scene/operato-scene/compare/v7.2.3...v7.2.4) (2024-08-02)
16
+
17
+
18
+ ### :bug: Bug Fix
19
+
20
+ * scichart yAxis precision ([1924c9a](https://github.com/things-scene/operato-scene/commit/1924c9af920d579b682ec71fef80d0c4450844e5))
21
+
22
+
23
+
6
24
  ## [7.2.3](https://github.com/things-scene/operato-scene/compare/v7.2.2...v7.2.3) (2024-08-02)
7
25
 
8
26
 
package/db.sqlite CHANGED
Binary file
@@ -82,7 +82,6 @@ let OxSciChartMultiple = OxSciChartMultiple_1 = class OxSciChartMultiple extends
82
82
  this.groupCharts.length = 0;
83
83
  }
84
84
  async updateDataSeries() {
85
- var _a, _b;
86
85
  const { config, data } = this;
87
86
  const { datasets = [], labelDataKey: attrX } = (config === null || config === void 0 ? void 0 : config.data) || {};
88
87
  if (!(data instanceof Array) || !attrX) {
@@ -103,8 +102,10 @@ let OxSciChartMultiple = OxSciChartMultiple_1 = class OxSciChartMultiple extends
103
102
  catch (error) {
104
103
  console.log(error);
105
104
  }
106
- sciChartSurface.zoomExtents();
107
- sciChartSurface.invalidateElement();
105
+ setTimeout(() => {
106
+ sciChartSurface.zoomExtents();
107
+ sciChartSurface.invalidateElement();
108
+ }, 200);
108
109
  });
109
110
  try {
110
111
  this.overviewDataSeries.forEach(ds => ds.clear());
@@ -116,8 +117,6 @@ let OxSciChartMultiple = OxSciChartMultiple_1 = class OxSciChartMultiple extends
116
117
  }
117
118
  }
118
119
  });
119
- (_a = this.overviewChart) === null || _a === void 0 ? void 0 : _a.sciChartSurface.zoomExtents();
120
- (_b = this.overviewChart) === null || _b === void 0 ? void 0 : _b.sciChartSurface.invalidateElement();
121
120
  }
122
121
  catch (error) {
123
122
  console.log(error);
@@ -222,7 +221,7 @@ let OxSciChartMultiple = OxSciChartMultiple_1 = class OxSciChartMultiple extends
222
221
  }
223
222
  };
224
223
  const container = this.renderRoot.querySelector(`#${this.containerId + '-' + dataKey}`);
225
- var { chart, dataSeries } = (await buildSciChart(config, container, { fontSize: 14, fontFamily: 'Roboto', fontColor: undefined }, { precision: valueFormat ? calculatePrecision(valueFormat) : undefined }));
224
+ var { chart, dataSeries } = (await buildSciChart(config, container, { fontSize: 14, fontFamily: 'Roboto', fontColor: undefined }, { precision: valueFormat ? calculatePrecision(valueFormat) : undefined, grouped: this.containerId }));
226
225
  this.verticalGroup.addSurfaceToGroup(chart.sciChartSurface);
227
226
  this.synchronizer.addAxis(chart.sciChartSurface.xAxes.get(0));
228
227
  groupedChart.dataKey = config.data.datasets[0].dataKey;
@@ -1 +1 @@
1
- {"version":3,"file":"ox-scichart-multiple.js","sourceRoot":"","sources":["../../src/charts/ox-scichart-multiple.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 } from './scichart-builder'\nimport { AxisSynchroniser } from './axis-synchronizer'\nimport { NumberRange, scaleAxes, SciChartVerticalGroup } from 'scichart'\n\nimport { ScrollbarStyles } from '@operato/styles'\n\n@customElement('ox-scichart-multiple')\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 isInitializing: boolean = false\n private overviewChart: any = null\n private overviewDataSeries: any[] = []\n private groupCharts: {\n dataKey: string\n sciChartSurface: any\n dataSeries: any[]\n }[] = []\n\n /*\n [주의]\n ox-scichart container의 id를 글로벌 유니크하게 해야한다. \n SciChart가 특별히 container의 id를 기반으로 하위 컴포넌트를 구성하고 있기 때문이다.\n shadowDom 안에 있는 container 이더라도, 글로벌 유니크한 id를 제공해야 한다.\n 그렇지 않으면, 단 하나의 차트만 제대로 렌더링된다.\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\n width: 100%;\n height: 100%;\n }\n\n .overview {\n height: 80px;\n }\n\n #chart-group {\n flex: 1;\n\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n }\n\n .grouped-chart {\n flex: 1;\n\n min-height: 25%;\n }\n\n [hidden] {\n display: none;\n }\n `\n ]\n\n async initializeSciChart() {\n this.cleanup()\n\n const { chart, dataSeries } =\n (await buildSciChartOverview(this.config, this.overviewContainer, {}, this.synchronizer)) || {}\n\n this.verticalGroup.addSurfaceToGroup(chart.sciChartSurface)\n\n this.overviewChart = chart\n this.overviewDataSeries = dataSeries!\n }\n\n async updated(changedProperties: Map<string | number | symbol, unknown>) {\n var needDataUpdate = false\n\n if (changedProperties.has('config') && this.config) {\n this.isInitializing = true\n await this.initializeSciChart()\n this.isInitializing = false\n needDataUpdate = true\n }\n\n if (changedProperties.has('visibleSeries')) {\n if (this.isInitializing) {\n await this.ensureInitialization()\n }\n await this.updateSeries(this.visibleSeries, changedProperties.get('visibleSeries') as string[])\n needDataUpdate = true\n }\n\n if (changedProperties.has('data')) {\n needDataUpdate = true\n }\n\n if (needDataUpdate) {\n await this.updateDataSeries()\n }\n }\n\n private async ensureInitialization() {\n while (this.isInitializing) {\n await new Promise(resolve => setTimeout(resolve, 100)) // Check every 100ms\n }\n }\n\n cleanup() {\n this.cleanupGroup()\n\n if (this.overviewChart) {\n this.overviewChart.sciChartSurface?.delete()\n this.overviewChart = null\n }\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 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, sciChartSurface, dataSeries }) => {\n try {\n dataSeries.forEach(ds => ds.clear())\n const dataSet = newData.filter((data, index) => dataKey == datasets[index].dataKey!)\n\n dataSet.forEach((data, index) => {\n const filteredData = data.filter(d => typeof d.yValue === 'number')\n\n if (filteredData.length > 0) {\n dataSeries[index].appendRange(\n filteredData.map(d => d.xValue),\n filteredData.map(d => d.yValue)\n )\n }\n })\n } catch (error) {\n console.log(error)\n }\n\n sciChartSurface.zoomExtents()\n sciChartSurface.invalidateElement()\n })\n\n try {\n this.overviewDataSeries.forEach(ds => ds.clear())\n\n newData.forEach((data, index) => {\n if (this.visibleSeries.includes(datasets[index].dataKey!)) {\n const filteredData = data.filter(d => typeof d.yValue === 'number')\n if (filteredData.length > 0) {\n this.overviewDataSeries[index].appendRange(\n filteredData.map(d => d.xValue),\n filteredData.map(d => d.yValue)\n )\n }\n }\n })\n\n this.overviewChart?.sciChartSurface.zoomExtents()\n this.overviewChart?.sciChartSurface.invalidateElement()\n } catch (error) {\n console.log(error)\n }\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 const { datasets = [] } = this.config?.data || {}\n\n return html`\n <div id=${this.containerId + '-overview'} class=\"overview\" ?hidden=${!this.showOverview}></div>\n <div id=\"chart-group\">\n ${datasets.map(({ dataKey }) =>\n keyed(\n dataKey,\n html`\n <div\n id=${this.containerId + '-' + dataKey}\n class=\"grouped-chart\"\n ?hidden=${!this.visibleSeries.includes(dataKey!)}\n ></div>\n `\n )\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 /* 기존 시리즈와 새로운 시리즈의 차이를 비교해서, before에는 있는데, after에는 없으면 await removeChart(string)를 호출하고, after에는 있는데, before에는 없으면, addChart(string) 한다. */\n // before에는 있는데 after에는 없는 시리즈를 제거합니다.\n for (const series of before || []) {\n if (!after.includes(series)) {\n await this.removeChart(series)\n }\n }\n\n // after에는 있는데 before에는 없는 시리즈를 추가합니다.\n for (const series of after || []) {\n if (!before || !before.includes(series)) {\n await this.addChart(series)\n }\n }\n }\n\n async addChart(dataKey: string) {\n const groupedChart = {\n dataKey: '',\n sciChartSurface: undefined,\n dataSeries: [] as any[]\n }\n\n const { data = {}, options = {} } = this.config || {}\n const { datasets = [] } = data as OperatoChart.ChartData\n const dataset = datasets.find(dataset => dataset.dataKey == dataKey)\n\n if (!dataset) {\n return\n }\n\n const { scales } = options\n const { yAxes = [] } = scales || {}\n const { valueFormat } = dataset\n\n const yAxis = {\n ...yAxes[0],\n axisTitle: dataset?.label\n }\n\n const config = {\n ...this.config,\n data: {\n datasets: [dataset]\n },\n options: {\n ...options,\n scales: {\n ...scales,\n yAxes: [yAxis]\n }\n }\n }\n\n const container = this.renderRoot.querySelector(`#${this.containerId + '-' + dataKey}`)\n var { chart, dataSeries } = (await buildSciChart(\n config,\n container,\n { fontSize: 14, fontFamily: 'Roboto', fontColor: undefined },\n { precision: valueFormat ? calculatePrecision(valueFormat) : undefined }\n ))!\n\n this.verticalGroup.addSurfaceToGroup(chart.sciChartSurface)\n this.synchronizer.addAxis(chart.sciChartSurface.xAxes.get(0))\n\n groupedChart.dataKey = config.data.datasets[0]!.dataKey!\n groupedChart.sciChartSurface = chart.sciChartSurface\n groupedChart.dataSeries = dataSeries\n\n this.groupCharts = this.groupSorter([...this.groupCharts, groupedChart])\n }\n\n removeChart(dataKey: string) {\n const index = this.groupCharts.findIndex((chart: any) => chart.dataKey == dataKey)\n const [groupedChart] = this.groupCharts.splice(index, 1)\n\n if (!groupedChart) {\n return\n }\n\n this.verticalGroup.removeSurface(groupedChart.sciChartSurface)\n this.synchronizer.removeAxis(groupedChart.sciChartSurface.xAxes.get(0))\n\n groupedChart.sciChartSurface.delete()\n groupedChart.sciChartSurface = undefined\n\n this.groupCharts = this.groupSorter(this.groupCharts)\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"]}
1
+ {"version":3,"file":"ox-scichart-multiple.js","sourceRoot":"","sources":["../../src/charts/ox-scichart-multiple.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 } from './scichart-builder'\nimport { AxisSynchroniser } from './axis-synchronizer'\nimport { NumberRange, scaleAxes, SciChartVerticalGroup } from 'scichart'\n\nimport { ScrollbarStyles } from '@operato/styles'\n\n@customElement('ox-scichart-multiple')\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 isInitializing: boolean = false\n private overviewChart: any = null\n private overviewDataSeries: any[] = []\n private groupCharts: {\n dataKey: string\n sciChartSurface: any\n dataSeries: any[]\n }[] = []\n\n /*\n [주의]\n ox-scichart container의 id를 글로벌 유니크하게 해야한다. \n SciChart가 특별히 container의 id를 기반으로 하위 컴포넌트를 구성하고 있기 때문이다.\n shadowDom 안에 있는 container 이더라도, 글로벌 유니크한 id를 제공해야 한다.\n 그렇지 않으면, 단 하나의 차트만 제대로 렌더링된다.\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\n width: 100%;\n height: 100%;\n }\n\n .overview {\n height: 80px;\n }\n\n #chart-group {\n flex: 1;\n\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n }\n\n .grouped-chart {\n flex: 1;\n\n min-height: 25%;\n }\n\n [hidden] {\n display: none;\n }\n `\n ]\n\n async initializeSciChart() {\n this.cleanup()\n\n const { chart, dataSeries } =\n (await buildSciChartOverview(this.config, this.overviewContainer, {}, this.synchronizer)) || {}\n\n this.verticalGroup.addSurfaceToGroup(chart.sciChartSurface)\n\n this.overviewChart = chart\n this.overviewDataSeries = dataSeries!\n }\n\n async updated(changedProperties: Map<string | number | symbol, unknown>) {\n var needDataUpdate = false\n\n if (changedProperties.has('config') && this.config) {\n this.isInitializing = true\n await this.initializeSciChart()\n this.isInitializing = false\n needDataUpdate = true\n }\n\n if (changedProperties.has('visibleSeries')) {\n if (this.isInitializing) {\n await this.ensureInitialization()\n }\n await this.updateSeries(this.visibleSeries, changedProperties.get('visibleSeries') as string[])\n needDataUpdate = true\n }\n\n if (changedProperties.has('data')) {\n needDataUpdate = true\n }\n\n if (needDataUpdate) {\n await this.updateDataSeries()\n }\n }\n\n private async ensureInitialization() {\n while (this.isInitializing) {\n await new Promise(resolve => setTimeout(resolve, 100)) // Check every 100ms\n }\n }\n\n cleanup() {\n this.cleanupGroup()\n\n if (this.overviewChart) {\n this.overviewChart.sciChartSurface?.delete()\n this.overviewChart = null\n }\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 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, sciChartSurface, dataSeries }) => {\n try {\n dataSeries.forEach(ds => ds.clear())\n const dataSet = newData.filter((data, index) => dataKey == datasets[index].dataKey!)\n\n dataSet.forEach((data, index) => {\n const filteredData = data.filter(d => typeof d.yValue === 'number')\n\n if (filteredData.length > 0) {\n dataSeries[index].appendRange(\n filteredData.map(d => d.xValue),\n filteredData.map(d => d.yValue)\n )\n }\n })\n } catch (error) {\n console.log(error)\n }\n\n setTimeout(() => {\n sciChartSurface.zoomExtents()\n sciChartSurface.invalidateElement()\n }, 200)\n })\n\n try {\n this.overviewDataSeries.forEach(ds => ds.clear())\n\n newData.forEach((data, index) => {\n if (this.visibleSeries.includes(datasets[index].dataKey!)) {\n const filteredData = data.filter(d => typeof d.yValue === 'number')\n if (filteredData.length > 0) {\n this.overviewDataSeries[index].appendRange(\n filteredData.map(d => d.xValue),\n filteredData.map(d => d.yValue)\n )\n }\n }\n })\n } catch (error) {\n console.log(error)\n }\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 const { datasets = [] } = this.config?.data || {}\n\n return html`\n <div id=${this.containerId + '-overview'} class=\"overview\" ?hidden=${!this.showOverview}></div>\n <div id=\"chart-group\">\n ${datasets.map(({ dataKey }) =>\n keyed(\n dataKey,\n html`\n <div\n id=${this.containerId + '-' + dataKey}\n class=\"grouped-chart\"\n ?hidden=${!this.visibleSeries.includes(dataKey!)}\n ></div>\n `\n )\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 /* 기존 시리즈와 새로운 시리즈의 차이를 비교해서, before에는 있는데, after에는 없으면 await removeChart(string)를 호출하고, after에는 있는데, before에는 없으면, addChart(string) 한다. */\n // before에는 있는데 after에는 없는 시리즈를 제거합니다.\n for (const series of before || []) {\n if (!after.includes(series)) {\n await this.removeChart(series)\n }\n }\n\n // after에는 있는데 before에는 없는 시리즈를 추가합니다.\n for (const series of after || []) {\n if (!before || !before.includes(series)) {\n await this.addChart(series)\n }\n }\n }\n\n async addChart(dataKey: string) {\n const groupedChart = {\n dataKey: '',\n sciChartSurface: undefined,\n dataSeries: [] as any[]\n }\n\n const { data = {}, options = {} } = this.config || {}\n const { datasets = [] } = data as OperatoChart.ChartData\n const dataset = datasets.find(dataset => dataset.dataKey == dataKey)\n\n if (!dataset) {\n return\n }\n\n const { scales } = options\n const { yAxes = [] } = scales || {}\n const { valueFormat } = dataset\n\n const yAxis = {\n ...yAxes[0],\n axisTitle: dataset?.label\n }\n\n const config = {\n ...this.config,\n data: {\n datasets: [dataset]\n },\n options: {\n ...options,\n scales: {\n ...scales,\n yAxes: [yAxis]\n }\n }\n }\n\n const container = this.renderRoot.querySelector(`#${this.containerId + '-' + dataKey}`)\n var { chart, dataSeries } = (await buildSciChart(\n config,\n container,\n { fontSize: 14, fontFamily: 'Roboto', fontColor: undefined },\n { precision: valueFormat ? calculatePrecision(valueFormat) : undefined, grouped: this.containerId }\n ))!\n\n this.verticalGroup.addSurfaceToGroup(chart.sciChartSurface)\n this.synchronizer.addAxis(chart.sciChartSurface.xAxes.get(0))\n\n groupedChart.dataKey = config.data.datasets[0]!.dataKey!\n groupedChart.sciChartSurface = chart.sciChartSurface\n groupedChart.dataSeries = dataSeries\n\n this.groupCharts = this.groupSorter([...this.groupCharts, groupedChart])\n }\n\n removeChart(dataKey: string) {\n const index = this.groupCharts.findIndex((chart: any) => chart.dataKey == dataKey)\n const [groupedChart] = this.groupCharts.splice(index, 1)\n\n if (!groupedChart) {\n return\n }\n\n this.verticalGroup.removeSurface(groupedChart.sciChartSurface)\n this.synchronizer.removeAxis(groupedChart.sciChartSurface.xAxes.get(0))\n\n groupedChart.sciChartSurface.delete()\n groupedChart.sciChartSurface = undefined\n\n this.groupCharts = this.groupSorter(this.groupCharts)\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"]}
@@ -43,9 +43,10 @@ let OxSciChart = OxSciChart_1 = class OxSciChart extends LitElement {
43
43
  }
44
44
  }
45
45
  updateDataSeries() {
46
- var _a, _b, _c;
47
- if (!((_a = this.dataSeries) === null || _a === void 0 ? void 0 : _a.length))
46
+ var _a;
47
+ if (!((_a = this.dataSeries) === null || _a === void 0 ? void 0 : _a.length)) {
48
48
  return;
49
+ }
49
50
  this.dataSeries.forEach(ds => ds.clear());
50
51
  const newData = this.dataSet;
51
52
  newData.forEach((data, index) => {
@@ -54,8 +55,11 @@ let OxSciChart = OxSciChart_1 = class OxSciChart extends LitElement {
54
55
  this.dataSeries[index].appendRange(filteredData.map(d => d.xValue), filteredData.map(d => d.yValue));
55
56
  }
56
57
  });
57
- (_b = this.chart) === null || _b === void 0 ? void 0 : _b.sciChartSurface.zoomExtents();
58
- (_c = this.chart) === null || _c === void 0 ? void 0 : _c.sciChartSurface.invalidateElement();
58
+ setTimeout(() => {
59
+ var _a, _b;
60
+ (_a = this.chart) === null || _a === void 0 ? void 0 : _a.sciChartSurface.zoomExtents();
61
+ (_b = this.chart) === null || _b === void 0 ? void 0 : _b.sciChartSurface.invalidateElement();
62
+ }, 200);
59
63
  }
60
64
  get dataSet() {
61
65
  const { config, data } = this;
@@ -1 +1 @@
1
- {"version":3,"file":"ox-scichart.js","sourceRoot":"","sources":["../../src/charts/ox-scichart.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, css } from 'lit'\nimport { property, query, customElement } from 'lit/decorators.js'\nimport { buildSciChart } from './scichart-builder'\n\n@customElement('ox-scichart')\nexport class OxSciChart extends LitElement {\n @property({ type: Object }) config: OperatoChart.ChartConfig | null = null\n @property({ type: Array }) data: { [attr: string]: any }[] = []\n\n public chart: any = null\n private dataSeries: any[] = []\n /*\n [주의]\n ox-scichart container의 id를 글로벌 유니크하게 해야한다. \n SciChart가 특별히 container의 id를 기반으로 하위 컴포넌트를 구성하고 있기 때문이다.\n shadowDom 안에 있는 container 이더라도, 글로벌 유니크한 id를 제공해야 한다.\n 그렇지 않으면, 단 하나의 차트만 제대로 렌더링된다.\n */\n private containerId: string = 'ox-sci-chart' + ++OxSciChart.idx\n\n @query('.chart-container') container!: HTMLDivElement\n\n static idx: number = 0\n\n static styles = css`\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .chart-container {\n display: flex;\n width: 100%;\n height: 100%;\n }\n\n .chart-content {\n flex: 1;\n position: relative;\n }\n `\n\n async initializeSciChart() {\n if (this.chart) {\n this.chart.sciChartSurface?.delete()\n this.chart = null\n }\n\n const { chart, dataSeries } = (await buildSciChart(this.config, this.container, {}, {})) || {}\n\n this.chart = chart\n this.dataSeries = dataSeries!\n }\n\n async updated(changedProperties: Map<string | number | symbol, unknown>) {\n var needDataUpdate = false\n\n if (changedProperties.has('config') && this.config) {\n await this.initializeSciChart()\n needDataUpdate = true\n }\n\n if (changedProperties.has('data')) {\n needDataUpdate = true\n }\n\n if (needDataUpdate) {\n await this.updateDataSeries()\n }\n }\n\n updateDataSeries() {\n if (!this.dataSeries?.length) return\n\n this.dataSeries.forEach(ds => ds.clear())\n const newData = this.dataSet\n\n newData.forEach((data, index) => {\n const filteredData = data.filter(d => typeof d.yValue === 'number')\n\n if (filteredData.length > 0) {\n this.dataSeries[index].appendRange(\n filteredData.map(d => d.xValue),\n filteredData.map(d => d.yValue)\n )\n }\n })\n\n this.chart?.sciChartSurface.zoomExtents()\n this.chart?.sciChartSurface.invalidateElement()\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 async appendData(appendum: { [attr: string]: any }[]) {}\n\n render() {\n return html` <div id=${this.containerId} class=\"chart-container\"></div> `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ox-scichart': OxSciChart\n }\n}\n"]}
1
+ {"version":3,"file":"ox-scichart.js","sourceRoot":"","sources":["../../src/charts/ox-scichart.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, css } from 'lit'\nimport { property, query, customElement } from 'lit/decorators.js'\nimport { buildSciChart } from './scichart-builder'\n\n@customElement('ox-scichart')\nexport class OxSciChart extends LitElement {\n @property({ type: Object }) config: OperatoChart.ChartConfig | null = null\n @property({ type: Array }) data: { [attr: string]: any }[] = []\n\n public chart: any = null\n private dataSeries: any[] = []\n /*\n [주의]\n ox-scichart container의 id를 글로벌 유니크하게 해야한다. \n SciChart가 특별히 container의 id를 기반으로 하위 컴포넌트를 구성하고 있기 때문이다.\n shadowDom 안에 있는 container 이더라도, 글로벌 유니크한 id를 제공해야 한다.\n 그렇지 않으면, 단 하나의 차트만 제대로 렌더링된다.\n */\n private containerId: string = 'ox-sci-chart' + ++OxSciChart.idx\n\n @query('.chart-container') container!: HTMLDivElement\n\n static idx: number = 0\n\n static styles = css`\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .chart-container {\n display: flex;\n width: 100%;\n height: 100%;\n }\n\n .chart-content {\n flex: 1;\n position: relative;\n }\n `\n\n async initializeSciChart() {\n if (this.chart) {\n this.chart.sciChartSurface?.delete()\n this.chart = null\n }\n\n const { chart, dataSeries } = (await buildSciChart(this.config, this.container, {}, {})) || {}\n\n this.chart = chart\n this.dataSeries = dataSeries!\n }\n\n async updated(changedProperties: Map<string | number | symbol, unknown>) {\n var needDataUpdate = false\n\n if (changedProperties.has('config') && this.config) {\n await this.initializeSciChart()\n needDataUpdate = true\n }\n\n if (changedProperties.has('data')) {\n needDataUpdate = true\n }\n\n if (needDataUpdate) {\n await this.updateDataSeries()\n }\n }\n\n updateDataSeries() {\n if (!this.dataSeries?.length) {\n return\n }\n\n this.dataSeries.forEach(ds => ds.clear())\n const newData = this.dataSet\n\n newData.forEach((data, index) => {\n const filteredData = data.filter(d => typeof d.yValue === 'number')\n\n if (filteredData.length > 0) {\n this.dataSeries[index].appendRange(\n filteredData.map(d => d.xValue),\n filteredData.map(d => d.yValue)\n )\n }\n })\n\n setTimeout(() => {\n this.chart?.sciChartSurface.zoomExtents()\n this.chart?.sciChartSurface.invalidateElement()\n }, 200)\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 async appendData(appendum: { [attr: string]: any }[]) {}\n\n render() {\n return html` <div id=${this.containerId} class=\"chart-container\"></div> `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ox-scichart': OxSciChart\n }\n}\n"]}
@@ -58,10 +58,10 @@ function createPointMarker(wasmContext, dataset, color = DEFAULT_COLOR) {
58
58
  }
59
59
  function createAxis(wasmContext, axis, index, isXAxis, fontColor, fontFamily, fontSize, precision, options) {
60
60
  const { axisTitle, ticks } = axis;
61
- const { autoMax, autoMin, min, max, stepSize, beginAtZero, color = fontColor, textStrokeColor = fontColor, display } = ticks || {};
61
+ const { autoMax, autoMin, min, max, stepSize, beginAtZero, color = fontColor, textStrokeColor = fontColor, display = false } = ticks || {};
62
62
  const axisOptions = {
63
63
  axisTitle,
64
- autoRange: autoMin || autoMax ? EAutoRange.Always : undefined,
64
+ autoRange: autoMin || autoMax ? EAutoRange.Always : EAutoRange.Once,
65
65
  axisAlignment: isXAxis ? EAxisAlignment.Bottom : index === 0 ? EAxisAlignment.Left : EAxisAlignment.Right,
66
66
  visibleRange: min !== undefined && max !== undefined ? new NumberRange(min, max) : undefined,
67
67
  majorDelta: stepSize,
@@ -76,7 +76,8 @@ function createAxis(wasmContext, axis, index, isXAxis, fontColor, fontFamily, fo
76
76
  fontSize,
77
77
  color: textStrokeColor
78
78
  },
79
- ...options
79
+ ...options,
80
+ drawLabels: display
80
81
  };
81
82
  const labelProvider = isXAxis
82
83
  ? new SmartDateLabelProvider({
@@ -167,7 +168,7 @@ export async function buildSciChart(config, container, { fontSize = 14, fontFami
167
168
  var { theme, tooltip = true, animation = true, legend = {
168
169
  display: true,
169
170
  position: 'top'
170
- }, scales: fromScales, xGridLine = true, yGridLine = true, y2ndGridLine = false, stacked = false, multiAxis = false, annotations = [] } = options || {};
171
+ }, scales: fromScales, xGridLine = false, yGridLine = false, y2ndGridLine = false, stacked = false, multiAxis = false, annotations = [] } = options || {};
171
172
  var baseColor = getBaseColorFromTheme(theme);
172
173
  if (theme === 'auto') {
173
174
  theme = getThemeFromBrowser();
@@ -178,16 +179,24 @@ export async function buildSciChart(config, container, { fontSize = 14, fontFami
178
179
  theme: theme == 'dark' ? new SciChartJSDarkv2Theme() : new SciChartJSLightTheme()
179
180
  });
180
181
  const { sciChartSurface, wasmContext } = chart;
181
- // X 축 설정
182
182
  xAxes.forEach((axis, index) => {
183
- const xAxis = createAxis(wasmContext, axis, index, true, fontColor, fontFamily, fontSize);
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
+ });
184
189
  sciChartSurface.xAxes.add(xAxis);
185
190
  });
186
191
  (multiAxis ? yAxes : [yAxes[0]]).forEach((axis, index) => {
187
- const yAxis = createAxis(wasmContext, axis, index, false, fontColor, fontFamily, fontSize, precision);
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
+ });
188
198
  sciChartSurface.yAxes.add(yAxis);
189
199
  });
190
- // 시리즈 설정
191
200
  const dataSeriesArray = datasets.map((dataset, index) => {
192
201
  const yAxisId = dataset.yAxisID == 'right' && multiAxis ? 'yAxis1' : undefined;
193
202
  const { series, dataSeries } = createSeries(wasmContext, dataset, index, !!stacked, !!animation, yAxisId);
@@ -195,14 +204,19 @@ export async function buildSciChart(config, container, { fontSize = 14, fontFami
195
204
  if (tooltip) {
196
205
  const rolloverModifier = new RolloverModifier({
197
206
  showTooltip: true,
198
- showAxisLabel: true /* 한글의 크기를 계산하지 못하므로 false */,
199
- modifierGroup: grouped
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
+ }
200
215
  });
201
216
  sciChartSurface.chartModifiers.add(rolloverModifier);
202
217
  }
203
218
  return dataSeries;
204
219
  });
205
- // Stacked collections 추가
206
220
  if (stacked) {
207
221
  const stackedColumnCollection = new StackedColumnCollection(wasmContext);
208
222
  const stackedMountainCollection = new StackedMountainCollection(wasmContext);
@@ -300,10 +314,9 @@ export async function buildSciChart(config, container, { fontSize = 14, fontFami
300
314
  }
301
315
  });
302
316
  }
303
- // 줌인/줌아웃 모디파이어 추가
304
317
  sciChartSurface.chartModifiers.add(new RubberBandXyZoomModifier({ executeOn: EExecuteOn.MouseRightButton, modifierGroup: grouped }),
305
318
  // new ZoomPanModifier({ xyDirection: EXyDirection.XDirection }),
306
- new ZoomPanModifier(), new MouseWheelZoomModifier({ xyDirection: EXyDirection.XDirection }), new ZoomExtentsModifier(), new XAxisDragModifier(), new YAxisDragModifier());
319
+ new ZoomPanModifier({ xyDirection: EXyDirection.XDirection }), new MouseWheelZoomModifier({ xyDirection: EXyDirection.XDirection }), new ZoomExtentsModifier(), new XAxisDragModifier(), new YAxisDragModifier());
307
320
  if (legend === null || legend === void 0 ? void 0 : legend.display) {
308
321
  const legendModifier = new LegendModifier({
309
322
  showCheckboxes: true,
@@ -333,28 +346,45 @@ export async function buildSciChartOverview(config, container, { fontSize = 14,
333
346
  }
334
347
  fontColor = fontColor || baseColor.clone().toString();
335
348
  const { xAxes = [], yAxes = [] } = fromScales || {};
336
- // Instead we create a normal chart and then manually add the OverviewRangeSelectionModifier and bind it to the axisSynchroniser
337
349
  const chart = await SciChartSurface.create(container, {
338
350
  theme: theme == 'dark' ? new SciChartJSDarkv2Theme() : new SciChartJSLightTheme()
339
351
  });
340
352
  const { sciChartSurface, wasmContext } = chart;
341
- // X 축 설정
342
353
  xAxes.forEach((axis, index) => {
343
- const xAxis = createAxis(wasmContext, axis, index, true, fontColor, fontFamily, fontSize);
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
+ });
344
360
  sciChartSurface.xAxes.add(xAxis);
345
361
  });
346
- (multiAxis ? yAxes : [yAxes[0]]).forEach((axis, index) => {
347
- const yAxis = createAxis(wasmContext, axis, index, false, fontColor, fontFamily, fontSize, undefined, {
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,
348
371
  drawLabels: false,
349
- drawMajorTicks: false,
350
- drawMinorTicks: false,
372
+ drawMajorTickLines: false,
373
+ drawMinorTickLines: false,
351
374
  drawMajorGridLines: false,
352
375
  drawMinorGridLines: false
353
376
  });
354
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;
355
386
  });
356
387
  const rangeSelectionModifier = new OverviewRangeSelectionModifier();
357
- // When the range selection is moved, updated the linked charts
358
388
  rangeSelectionModifier.onSelectedAreaChanged = (selectedRange) => {
359
389
  if (!selectedRange.equals(axisSynchroniser.visibleRange)) {
360
390
  axisSynchroniser.publishChange({ visibleRange: selectedRange });
@@ -362,7 +392,6 @@ export async function buildSciChartOverview(config, container, { fontSize = 14,
362
392
  };
363
393
  rangeSelectionModifier.selectedArea = axisSynchroniser.visibleRange;
364
394
  sciChartSurface.chartModifiers.add(rangeSelectionModifier);
365
- // When charts are moved, update the range selection
366
395
  axisSynchroniser.visibleRangeChanged.subscribe(({ visibleRange }) => {
367
396
  const updatedSelectedRange = visibleRange.clip(sciChartSurface.xAxes.get(0).visibleRange);
368
397
  const shouldUpdateSelectedRange = !updatedSelectedRange.equals(rangeSelectionModifier.selectedArea);
@@ -370,12 +399,6 @@ export async function buildSciChartOverview(config, container, { fontSize = 14,
370
399
  rangeSelectionModifier.selectedArea = updatedSelectedRange;
371
400
  }
372
401
  });
373
- const dataSeriesArray = datasets.map((dataset, index) => {
374
- const yAxisId = dataset.yAxisID == 'right' && multiAxis ? 'yAxis1' : undefined;
375
- const { series, dataSeries } = createSeries(wasmContext, dataset, index, !!stacked, !!animation, yAxisId);
376
- sciChartSurface.renderableSeries.add(series);
377
- return dataSeries;
378
- });
379
402
  return { chart, dataSeries: dataSeriesArray };
380
403
  }
381
404
  //# sourceMappingURL=scichart-builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scichart-builder.js","sourceRoot":"","sources":["../../src/charts/scichart-builder.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} 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\nfunction 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\n } = ticks || {}\n\n const axisOptions = {\n axisTitle,\n autoRange: autoMin || autoMax ? EAutoRange.Always : undefined,\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 }\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 = true,\n yGridLine = true,\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 // X 축 설정\n xAxes.forEach((axis, index) => {\n const xAxis = createAxis(wasmContext, axis, index, true, fontColor, fontFamily, fontSize)\n sciChartSurface.xAxes.add(xAxis)\n })\n\n // Y 축 설정\n ;(multiAxis ? yAxes : [yAxes[0]]).forEach((axis, index) => {\n const yAxis = createAxis(wasmContext, axis, index, false, fontColor, fontFamily, fontSize, precision)\n sciChartSurface.yAxes.add(yAxis)\n })\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 /* 한글의 크기를 잘 계산하지 못하므로 false */,\n modifierGroup: grouped\n })\n\n sciChartSurface.chartModifiers.add(rolloverModifier)\n }\n\n return dataSeries\n })\n\n // Stacked collections 추가\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 // 줌인/줌아웃 모디파이어 추가\n sciChartSurface.chartModifiers.add(\n new RubberBandXyZoomModifier({ executeOn: EExecuteOn.MouseRightButton, modifierGroup: grouped }),\n // new ZoomPanModifier({ xyDirection: EXyDirection.XDirection }),\n new ZoomPanModifier(),\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, animation, scales: fromScales, stacked, multiAxis } = 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 // Instead we create a normal chart and then manually add the OverviewRangeSelectionModifier and bind it to the axisSynchroniser\n const chart = await SciChartSurface.create(container, {\n theme: theme == 'dark' ? new SciChartJSDarkv2Theme() : new SciChartJSLightTheme()\n })\n const { sciChartSurface, wasmContext } = chart\n\n // X 축 설정\n xAxes.forEach((axis, index) => {\n const xAxis = createAxis(wasmContext, axis, index, true, fontColor, fontFamily, fontSize)\n sciChartSurface.xAxes.add(xAxis)\n })\n\n // Y 축 설정\n ;(multiAxis ? yAxes : [yAxes[0]]).forEach((axis, index) => {\n const yAxis = createAxis(wasmContext, axis, index, false, fontColor, fontFamily, fontSize, undefined, {\n drawLabels: false,\n drawMajorTicks: false,\n drawMinorTicks: false,\n drawMajorGridLines: false,\n drawMinorGridLines: false\n })\n sciChartSurface.yAxes.add(yAxis)\n })\n\n const rangeSelectionModifier = new OverviewRangeSelectionModifier()\n // When the range selection is moved, updated the linked charts\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 // When charts are moved, update the range selection\n axisSynchroniser.visibleRangeChanged.subscribe(({ visibleRange }: any) => {\n const updatedSelectedRange = visibleRange.clip(sciChartSurface.xAxes.get(0).visibleRange)\n const shouldUpdateSelectedRange = !updatedSelectedRange.equals(rangeSelectionModifier.selectedArea)\n if (shouldUpdateSelectedRange) {\n rangeSelectionModifier.selectedArea = updatedSelectedRange\n }\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 return dataSeries\n })\n\n return { chart, dataSeries: dataSeriesArray }\n}\n"]}
1
+ {"version":3,"file":"scichart-builder.js","sourceRoot":"","sources":["../../src/charts/scichart-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,6BAA6B,EAC7B,+BAA+B,EAC/B,uBAAuB,EACvB,yBAAyB,EACzB,WAAW,EACX,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,UAAU,EACV,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,WAAW,EACX,sBAAsB,EACtB,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,sBAAsB,EACtB,8BAA8B,EAC9B,cAAc,EAEf,MAAM,UAAU,CAAA;AAGjB,eAAe,CAAC,mBAAmB,EAAE,CAAA;AAErC,eAAe,CAAC,SAAS,CAAC;IACxB,OAAO,EAAE,8CAA8C;IACvD,OAAO,EAAE,8CAA8C;CACxD,CAAC,CAAA;AAEF,MAAM,aAAa,GAAG,SAAS,CAAA;AAC/B,MAAM,cAAc,GAAG,SAAS,CAAA;AAChC,MAAM,iBAAiB,GAAG,EAAE,CAAA;AAC5B,MAAM,gBAAgB,GAAG,CAAC,CAAA;AAC1B,MAAM,kBAAkB,GAAG,IAAI,CAAA;AAE/B,SAAS,kBAAkB;IACzB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IACtB,OAAO,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,EAAE,CAAA;AACtC,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAiC;IAC9D,OAAO,IAAI,SAAS,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;AACzD,CAAC;AAED,SAAS,mBAAmB;IAC1B,OAAO,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;AAC1G,CAAC;AAED,SAAS,YAAY,CAAC,KAAoC,EAAE,YAAqB;IAC/E,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,KAAe,CAAC,CAAA;IAChD,OAAO,SAAS,CAAC,YAAY,EAAE,IAAI,YAAY,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAA0B,EAAE;IAC7D,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;IAEtC,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACrC,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAC1C,CAAC;IAED,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,iBAAiB,CAAC,WAAgB,EAAE,OAAY,EAAE,QAAgB,aAAa;IACtF,MAAM,EAAE,UAAU,EAAE,WAAW,GAAG,iBAAiB,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;IAErE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAM;IACR,CAAC;IAED,MAAM,kBAAkB,GAAG;QACzB,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,WAAW;QACnB,eAAe,EAAE,gBAAgB;QACjC,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,cAAc;KACvB,CAAA;IAED,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,IAAI,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAA;QACjE,KAAK,MAAM;YACT,OAAO,IAAI,iBAAiB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAA;QAC/D,KAAK,OAAO;YACV,OAAO,IAAI,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAA;QAC9D,KAAK,UAAU;YACb,OAAO,IAAI,YAAY,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAA;QAC1D;YACE,OAAO,IAAI,kBAAkB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAA;IAClE,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CACjB,WAAgB,EAChB,IAAS,EACT,KAAa,EACb,OAAgB,EAChB,SAAiB,EACjB,UAAmB,EACnB,QAAiB,EACjB,SAAkB,EAClB,OAAa;IAEb,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,CAAA;IACjC,MAAM,EACJ,OAAO,EACP,OAAO,EACP,GAAG,EACH,GAAG,EACH,QAAQ,EACR,WAAW,EACX,KAAK,GAAG,SAAS,EACjB,eAAe,GAAG,SAAS,EAC3B,OAAO,GAAG,KAAK,EAChB,GAAG,KAAK,IAAI,EAAE,CAAA;IAEf,MAAM,WAAW,GAAG;QAClB,SAAS;QACT,SAAS,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI;QACnE,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK;QACzG,YAAY,EAAE,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QAC5F,UAAU,EAAE,QAAQ;QACpB,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QAC3D,UAAU,EAAE;YACV,UAAU;YACV,QAAQ;YACR,KAAK;SACN;QACD,cAAc,EAAE;YACd,UAAU;YACV,QAAQ;YACR,KAAK,EAAE,eAAe;SACvB;QACD,GAAG,OAAO;QACV,UAAU,EAAE,OAAO;KACpB,CAAA;IAED,MAAM,aAAa,GAAG,OAAO;QAC3B,CAAC,CAAC,IAAI,sBAAsB,CAAC;YACzB,yBAAyB,EAAE,IAAI;YAC/B,mBAAmB,EAAE,KAAK;YAC1B,UAAU,EAAE,kBAAkB,EAAE;SACjC,CAAC;QACJ,CAAC,CAAC,IAAI,oBAAoB,EAAE,CAAA;IAE9B,IAAI,OAAO,EAAE,CAAC;QACZ,aAAc,CAAC,mBAAmB,GAAG,cAAc,CAAC,WAAW,CAAA;IACjE,CAAC;SAAM,CAAC;QACN,aAAc,CAAC,aAAa,GAAG,cAAc,CAAC,OAAO,CAAA;QACrD,aAAc,CAAC,SAAS,GAAG,SAAS,IAAI,kBAAkB,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAA;QAC3E,aAAc,CAAC,mBAAmB,GAAG,cAAc,CAAC,QAAQ,CAAA;IAC9D,CAAC;IAED,OAAO,OAAO;QACZ,CAAC,CAAC,IAAI,mBAAmB,CAAC,WAAW,EAAE;YACnC,GAAG,WAAW;YACd,aAAa;SACd,CAAC;QACJ,CAAC,CAAC,IAAI,WAAW,CAAC,WAAW,EAAE;YAC3B,GAAG,WAAW;YACd,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS;YAC7C,aAAa;SACd,CAAC,CAAA;AACR,CAAC;AAED,SAAS,YAAY,CACnB,WAAgB,EAChB,OAAY,EACZ,KAAa,EACb,OAAgB,EAChB,SAAkB,EAClB,OAA2B;IAE3B,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,WAAW,EAAE;QAC/C,cAAc,EAAE,OAAO,CAAC,KAAK;QAC7B,WAAW,EAAE,KAAK;KACnB,CAAC,CAAA;IAEF,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,KAAK,IAAI,CAAA;IACzD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,aAAa,CAAC,CAAA;IAClE,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;IAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,gBAAgB,CAAA;IAC3D,MAAM,WAAW,GAAG,iBAAiB,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;IAExE,IAAI,MAAM,CAAA;IACV,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3B,MAAM,GAAG,OAAO;YACd,CAAC,CAAC,IAAI,6BAA6B,CAAC,WAAW,EAAE;gBAC7C,UAAU;gBACV,eAAe,EAAE,WAAW;gBAC5B,IAAI,EAAE,KAAK;gBACX,cAAc,EAAE,YAAY;aAC7B,CAAC;YACJ,CAAC,CAAC,IAAI,0BAA0B,CAAC,WAAW,EAAE;gBAC1C,UAAU;gBACV,eAAe,EAAE,WAAW;gBAC5B,IAAI,EAAE,KAAK;gBACX,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;gBACxG,OAAO;aACR,CAAC,CAAA;IACR,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,OAAO;YACd,CAAC,CAAC,IAAI,+BAA+B,CAAC,WAAW,EAAE;gBAC/C,UAAU;gBACV,eAAe,EAAE,WAAW;gBAC5B,MAAM,EAAE,WAAW;gBACnB,IAAI,EAAE,KAAK;aACZ,CAAC;YACJ,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,GAAG,CAAC;gBAChD,CAAC,CAAC,IAAI,0BAA0B,CAAC,WAAW,EAAE;oBAC1C,UAAU;oBACV,eAAe,EAAE,WAAW;oBAC5B,MAAM,EAAE,WAAW;oBACnB,WAAW;oBACX,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;oBACxG,OAAO;iBACR,CAAC;gBACJ,CAAC,CAAC,IAAI,wBAAwB,CAAC,WAAW,EAAE;oBACxC,UAAU;oBACV,eAAe,EAAE,WAAW;oBAC5B,MAAM,EAAE,WAAW;oBACnB,WAAW;oBACX,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;oBACxG,OAAO;iBACR,CAAC,CAAA;IACR,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAA;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAmD,EACnD,SAAc,EACd,EAAE,QAAQ,GAAG,EAAE,EAAE,UAAU,GAAG,QAAQ,EAAE,SAAS,EAAkE,EACnH,EAAE,OAAO,EAAE,SAAS,EAA4C;IAEhE,IAAI,CAAC,MAAM;QAAE,OAAM;IAEnB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAA;IAC3D,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,QAAQ,IAAI,EAAE,CAAA;IACxC,IAAI,EACF,KAAK,EACL,OAAO,GAAG,IAAI,EACd,SAAS,GAAG,IAAI,EAChB,MAAM,GAAG;QACP,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,KAAK;KAChB,EACD,MAAM,EAAE,UAAU,EAClB,SAAS,GAAG,KAAK,EACjB,SAAS,GAAG,KAAK,EACjB,YAAY,GAAG,KAAK,EACpB,OAAO,GAAG,KAAK,EACf,SAAS,GAAG,KAAK,EACjB,WAAW,GAAG,EAAE,EACjB,GAAG,OAAO,IAAI,EAAE,CAAA;IAEjB,IAAI,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;IAE5C,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,KAAK,GAAG,mBAAmB,EAAE,CAAA;IAC/B,CAAC;IAED,SAAS,GAAG,SAAS,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAA;IAErD,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,UAAU,IAAI,EAAE,CAAA;IAEnD,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE;QACpD,KAAK,EAAE,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC,CAAC,IAAI,oBAAoB,EAAE;KAClF,CAAC,CAAA;IACF,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IAE9C,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE;YACnG,kBAAkB,EAAE,IAAI;YACxB,kBAAkB,EAAE,IAAI;YACxB,kBAAkB,EAAE,SAAS;YAC7B,kBAAkB,EAAE,SAAS;SAC9B,CAAC,CAAA;QACF,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC,CAAC,CACD;IAAA,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACxD,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE;YACpG,kBAAkB,EAAE,IAAI;YACxB,kBAAkB,EAAE,IAAI;YACxB,kBAAkB,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY;YACzD,kBAAkB,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY;SAC1D,CAAC,CAAA;QACF,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;IAEF,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACtD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;QAC9E,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QAEzG,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAE5C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;gBAC5C,WAAW,EAAE,IAAI;gBACjB,aAAa,EAAE,IAAI,CAAC,kCAAkC;gBACtD,aAAa,EAAE,OAAO;gBACtB,mBAAmB,EAAE,CAAC,UAAwB,EAAY,EAAE;oBAC1D,MAAM,gBAAgB,GAAa,EAAE,CAAA;oBACrC,MAAM,YAAY,GAAG,UAA0B,CAAA;oBAC/C,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAA;oBACnD,OAAO,gBAAgB,CAAA;gBACzB,CAAC;aACF,CAAC,CAAA;YAEF,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;QACtD,CAAC;QAED,OAAO,UAAU,CAAA;IACnB,CAAC,CAAC,CAAA;IAEF,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,uBAAuB,GAAG,IAAI,uBAAuB,CAAC,WAAW,CAAC,CAAA;QACxE,MAAM,yBAAyB,GAAG,IAAI,yBAAyB,CAAC,WAAW,CAAC,CAAA;QAE5E,eAAe,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,MAAW,EAAE,EAAE;YACjE,IAAI,MAAM,YAAY,6BAA6B,EAAE,CAAC;gBACpD,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YACrC,CAAC;iBAAM,IAAI,MAAM,YAAY,+BAA+B,EAAE,CAAC;gBAC7D,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YACvC,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YACvC,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;QAC/D,CAAC;QAED,IAAI,yBAAyB,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YACzC,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;QACjE,CAAC;IACH,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC/B,IAAI,aAAa,CAAA;YACjB,IAAI,qBAAqB,GACvB,UAAU,CAAC,qBAAqB,IAAI,OAAO;gBACzC,CAAC,CAAC,sBAAsB,CAAC,KAAK;gBAC9B,CAAC,CAAC,UAAU,CAAC,qBAAqB,IAAI,MAAM;oBAC5C,CAAC,CAAC,sBAAsB,CAAC,IAAI;oBAC7B,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAA;YACnC,IAAI,mBAAmB,GACrB,UAAU,CAAC,mBAAmB,IAAI,KAAK;gBACrC,CAAC,CAAC,oBAAoB,CAAC,GAAG;gBAC1B,CAAC,CAAC,UAAU,CAAC,mBAAmB,IAAI,QAAQ;oBAC5C,CAAC,CAAC,oBAAoB,CAAC,MAAM;oBAC7B,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAA;YAEjC,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;gBACxB,KAAK,MAAM;oBACT,aAAa,GAAG,IAAI,cAAc,CAAC;wBACjC,EAAE,EAAE,UAAU,CAAC,EAAE;wBACjB,EAAE,EAAE,UAAU,CAAC,EAAE;wBACjB,IAAI,EAAE,UAAU,CAAC,IAAI;wBACrB,qBAAqB;wBACrB,mBAAmB;wBACnB,QAAQ,EAAE,UAAU,CAAC,QAAQ;wBAC7B,UAAU,EAAE,UAAU,CAAC,UAAU;wBACjC,SAAS,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC;wBACrD,eAAe,EAAE,CAAC,UAAU,CAAC,eAAe,IAAI,eAAe,CAAC,SAAS,CAAoB;wBAC7F,eAAe,EAAE,CAAC,UAAU,CAAC,eAAe,IAAI,eAAe,CAAC,SAAS,CAAoB;qBAC9F,CAAC,CAAA;oBACF,MAAK;gBACP,KAAK,MAAM;oBACT,aAAa,GAAG,IAAI,cAAc,CAAC;wBACjC,EAAE,EAAE,UAAU,CAAC,EAAE;wBACjB,EAAE,EAAE,UAAU,CAAC,EAAE;wBACjB,EAAE,EAAE,UAAU,CAAC,EAAE;wBACjB,EAAE,EAAE,UAAU,CAAC,EAAE;wBACjB,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC;wBAClD,eAAe,EAAE,UAAU,CAAC,eAAe;wBAC3C,eAAe,EAAE,CAAC,UAAU,CAAC,eAAe,IAAI,eAAe,CAAC,SAAS,CAAoB;wBAC7F,eAAe,EAAE,CAAC,UAAU,CAAC,eAAe,IAAI,eAAe,CAAC,SAAS,CAAoB;qBAC9F,CAAC,CAAA;oBACF,MAAK;gBACP,KAAK,KAAK;oBACR,aAAa,GAAG,IAAI,aAAa,CAAC;wBAChC,EAAE,EAAE,UAAU,CAAC,EAAE;wBACjB,EAAE,EAAE,UAAU,CAAC,EAAE;wBACjB,EAAE,EAAE,UAAU,CAAC,EAAE;wBACjB,EAAE,EAAE,UAAU,CAAC,EAAE;wBACjB,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC;wBAC9C,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC;wBAClD,eAAe,EAAE,UAAU,CAAC,eAAe;wBAC3C,eAAe,EAAE,CAAC,UAAU,CAAC,eAAe,IAAI,eAAe,CAAC,SAAS,CAAoB;wBAC7F,eAAe,EAAE,CAAC,UAAU,CAAC,eAAe,IAAI,eAAe,CAAC,SAAS,CAAoB;qBAC9F,CAAC,CAAA;oBACF,MAAK;gBACP,KAAK,gBAAgB;oBACnB,aAAa,GAAG,IAAI,wBAAwB,CAAC;wBAC3C,EAAE,EAAE,UAAU,CAAC,EAAE;wBACjB,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC;wBAClD,eAAe,EAAE,UAAU,CAAC,eAAe;wBAC3C,eAAe,EAAE,CAAC,UAAU,CAAC,eAAe,IAAI,eAAe,CAAC,SAAS,CAAoB;wBAC7F,eAAe,EAAE,CAAC,UAAU,CAAC,eAAe,IAAI,eAAe,CAAC,SAAS,CAAoB;qBAC9F,CAAC,CAAA;oBACF,MAAK;gBACP,KAAK,cAAc;oBACjB,aAAa,GAAG,IAAI,sBAAsB,CAAC;wBACzC,EAAE,EAAE,UAAU,CAAC,EAAE;wBACjB,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC;wBAClD,eAAe,EAAE,UAAU,CAAC,eAAe;wBAC3C,eAAe,EAAE,CAAC,UAAU,CAAC,eAAe,IAAI,eAAe,CAAC,SAAS,CAAoB;wBAC7F,eAAe,EAAE,CAAC,UAAU,CAAC,eAAe,IAAI,eAAe,CAAC,SAAS,CAAoB;qBAC9F,CAAC,CAAA;oBACF,MAAK;gBACP;oBACE,MAAK;YACT,CAAC;YACD,IAAI,aAAa,EAAE,CAAC;gBAClB,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;YAChD,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,eAAe,CAAC,cAAc,CAAC,GAAG,CAChC,IAAI,wBAAwB,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,gBAAgB,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;IAChG,iEAAiE;IACjE,IAAI,eAAe,CAAC,EAAE,WAAW,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC,EAC7D,IAAI,sBAAsB,CAAC,EAAE,WAAW,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC,EACpE,IAAI,mBAAmB,EAAE,EACzB,IAAI,iBAAiB,EAAE,EACvB,IAAI,iBAAiB,EAAE,CACxB,CAAA;IAED,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAE,CAAC;QACpB,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC;YACxC,cAAc,EAAE,IAAI;YACpB,iBAAiB,EAAE,IAAI;YACvB,UAAU,EAAE,IAAI;YAChB,SAAS,EACP,MAAM,CAAC,QAAQ,IAAI,KAAK;gBACtB,CAAC,CAAC,gBAAgB,CAAC,OAAO;gBAC1B,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM;oBAC3B,CAAC,CAAC,gBAAgB,CAAC,UAAU;oBAC7B,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ;wBAC7B,CAAC,CAAC,gBAAgB,CAAC,WAAW;wBAC9B,CAAC,CAAC,gBAAgB,CAAC,QAAQ;SAChC,CAAC,CAAA;QAEF,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IACpD,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,CAAA;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAmD,EACnD,SAAc,EACd,EAAE,QAAQ,GAAG,EAAE,EAAE,UAAU,GAAG,QAAQ,EAAE,SAAS,EAAkE,EACnH,gBAAkC;IAElC,IAAI,CAAC,MAAM;QAAE,OAAM;IAEnB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAA;IAC3D,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,QAAQ,IAAI,EAAE,CAAA;IACxC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;IAEhF,IAAI,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;IAE5C,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,KAAK,GAAG,mBAAmB,EAAE,CAAA;IAC/B,CAAC;IAED,SAAS,GAAG,SAAS,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAA;IAErD,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,UAAU,IAAI,EAAE,CAAA;IAEnD,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE;QACpD,KAAK,EAAE,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC,CAAC,IAAI,oBAAoB,EAAE;KAClF,CAAC,CAAA;IACF,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IAE9C,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE;YACnG,kBAAkB,EAAE,KAAK;YACzB,kBAAkB,EAAE,KAAK;YACzB,kBAAkB,EAAE,KAAK;YACzB,kBAAkB,EAAE,KAAK;SAC1B,CAAC,CAAA;QACF,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;IAEF,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACtD,MAAM,OAAO,GAAG,QAAQ,KAAK,EAAE,CAAA;QAC/B,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,WAAW,EAAE;YAC/C,cAAc,EAAE,OAAO,CAAC,KAAK;YAC7B,WAAW,EAAE,KAAK;SACnB,CAAC,CAAA;QAEF,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,WAAW,EAAE;YACzC,EAAE,EAAE,OAAO;YACX,SAAS,EAAE,UAAU,CAAC,MAAM;YAC5B,UAAU,EAAE,KAAK;YACjB,kBAAkB,EAAE,KAAK;YACzB,kBAAkB,EAAE,KAAK;YACzB,kBAAkB,EAAE,KAAK;YACzB,kBAAkB,EAAE,KAAK;SAC1B,CAAC,CAAA;QAEF,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAEhC,MAAM,MAAM,GAAG,IAAI,wBAAwB,CAAC,WAAW,EAAE;YACvD,UAAU;YACV,eAAe,EAAE,CAAC;YAClB,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC;YAClD,OAAO,EAAE,OAAO;SACjB,CAAC,CAAA;QAEF,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAE5C,OAAO,UAAU,CAAA;IACnB,CAAC,CAAC,CAAA;IAEF,MAAM,sBAAsB,GAAG,IAAI,8BAA8B,EAAE,CAAA;IACnE,sBAAsB,CAAC,qBAAqB,GAAG,CAAC,aAA2B,EAAE,EAAE;QAC7E,IAAI,CAAC,aAAc,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1D,gBAAgB,CAAC,aAAa,CAAC,EAAE,YAAY,EAAE,aAAc,EAAE,CAAC,CAAA;QAClE,CAAC;IACH,CAAC,CAAA;IAED,sBAAsB,CAAC,YAAY,GAAG,gBAAgB,CAAC,YAAY,CAAA;IACnE,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;IAE1D,gBAAgB,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,EAAO,EAAE,EAAE;QACvE,MAAM,oBAAoB,GAAG,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;QACzF,MAAM,yBAAyB,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAA;QACnG,IAAI,yBAAyB,EAAE,CAAC;YAC9B,sBAAsB,CAAC,YAAY,GAAG,oBAAoB,CAAA;QAC5D,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,CAAA;AAC/C,CAAC","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\nfunction 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, animation, scales: fromScales, stacked, multiAxis } = 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 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 updatedSelectedRange = visibleRange.clip(sciChartSurface.xAxes.get(0).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"]}
@@ -19,6 +19,16 @@
19
19
  "date": 1722615308273,
20
20
  "name": "logs/application-2024-08-03-01.log",
21
21
  "hash": "37a3c04d5699763003d7ff27f716ed6435d858604bb7104f95e22ca72cb0faa7"
22
+ },
23
+ {
24
+ "date": 1722619410911,
25
+ "name": "logs/application-2024-08-03-02.log",
26
+ "hash": "77f23e893c37b18af4f914566a7c8fd4ef7a1174d827fd59a48dd4706e921377"
27
+ },
28
+ {
29
+ "date": 1722651589101,
30
+ "name": "logs/application-2024-08-03-11.log",
31
+ "hash": "6f7f89cca26433ba6ef7c8e145aee345186d7990cb0c50d4b8d9a4d794b8c38f"
22
32
  }
23
33
  ],
24
34
  "hashType": "sha256"
@@ -69,6 +69,16 @@
69
69
  "date": 1722615310262,
70
70
  "name": "logs/connections-2024-08-03-01.log",
71
71
  "hash": "a9f6354dedb4e513d28d1dbf854b5bf2a7d9d215a4030b55f10c8d51dc5f47e8"
72
+ },
73
+ {
74
+ "date": 1722619412823,
75
+ "name": "logs/connections-2024-08-03-02.log",
76
+ "hash": "5742e75920418942f1ef303866438fb70343bffb15750727b2fb3b7d9f4e1804"
77
+ },
78
+ {
79
+ "date": 1722651590967,
80
+ "name": "logs/connections-2024-08-03-11.log",
81
+ "hash": "1b245d72805938e57c83fec9b5033321a5e153c8ecc65041e5b700129c49f331"
72
82
  }
73
83
  ],
74
84
  "hashType": "sha256"