@363045841yyt/klinechart-core 0.9.0-alpha.2 → 0.9.0-alpha.4
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/dist/controllers/createChartController.d.ts.map +1 -1
- package/dist/controllers/createChartController.js +9 -8
- package/dist/controllers/createChartController.js.map +1 -1
- package/dist/controllers/index.d.ts +1 -0
- package/dist/controllers/index.d.ts.map +1 -1
- package/dist/controllers/index.js.map +1 -1
- package/dist/controllers/types.d.ts +5 -0
- package/dist/controllers/types.d.ts.map +1 -1
- package/dist/data/binance.d.ts +1 -1
- package/dist/data/binance.d.ts.map +1 -1
- package/dist/data/binance.js +1 -1
- package/dist/data/binance.js.map +1 -1
- package/dist/data/timeShareBuffer.d.ts +3 -0
- package/dist/data/timeShareBuffer.d.ts.map +1 -1
- package/dist/data/timeShareBuffer.js +13 -0
- package/dist/data/timeShareBuffer.js.map +1 -1
- package/dist/engine/chart.d.ts +9 -9
- package/dist/engine/chart.d.ts.map +1 -1
- package/dist/engine/chart.js +87 -101
- package/dist/engine/chart.js.map +1 -1
- package/dist/engine/chartTypes.d.ts +5 -0
- package/dist/engine/chartTypes.d.ts.map +1 -1
- package/dist/engine/controller/interaction.d.ts +4 -2
- package/dist/engine/controller/interaction.d.ts.map +1 -1
- package/dist/engine/controller/interaction.js +18 -10
- package/dist/engine/controller/interaction.js.map +1 -1
- package/dist/engine/data/chartDataManager.d.ts +14 -18
- package/dist/engine/data/chartDataManager.d.ts.map +1 -1
- package/dist/engine/data/chartDataManager.js +55 -37
- package/dist/engine/data/chartDataManager.js.map +1 -1
- package/dist/engine/data/incrementalLoadHint.d.ts +2 -4
- package/dist/engine/data/incrementalLoadHint.d.ts.map +1 -1
- package/dist/engine/data/incrementalLoadHint.js +5 -2
- package/dist/engine/data/incrementalLoadHint.js.map +1 -1
- package/dist/engine/data/scrollCompensator.d.ts +3 -13
- package/dist/engine/data/scrollCompensator.d.ts.map +1 -1
- package/dist/engine/data/scrollCompensator.js +13 -14
- package/dist/engine/data/scrollCompensator.js.map +1 -1
- package/dist/engine/indicators/chartIndicatorManager.d.ts +16 -17
- package/dist/engine/indicators/chartIndicatorManager.d.ts.map +1 -1
- package/dist/engine/indicators/chartIndicatorManager.js +37 -37
- package/dist/engine/indicators/chartIndicatorManager.js.map +1 -1
- package/dist/engine/layout/chartPaneLayout.d.ts +11 -7
- package/dist/engine/layout/chartPaneLayout.d.ts.map +1 -1
- package/dist/engine/layout/chartPaneLayout.js +58 -16
- package/dist/engine/layout/chartPaneLayout.js.map +1 -1
- package/dist/engine/modes/timeShareMath.d.ts +56 -0
- package/dist/engine/modes/timeShareMath.d.ts.map +1 -0
- package/dist/engine/modes/timeShareMath.js +90 -0
- package/dist/engine/modes/timeShareMath.js.map +1 -0
- package/dist/engine/modes/timeShareMode.d.ts +5 -0
- package/dist/engine/modes/timeShareMode.d.ts.map +1 -1
- package/dist/engine/modes/timeShareMode.js +27 -27
- package/dist/engine/modes/timeShareMode.js.map +1 -1
- package/dist/engine/paneRenderer.d.ts +2 -0
- package/dist/engine/paneRenderer.d.ts.map +1 -1
- package/dist/engine/paneRenderer.js +15 -5
- package/dist/engine/paneRenderer.js.map +1 -1
- package/dist/engine/render/chartRenderer.d.ts +28 -22
- package/dist/engine/render/chartRenderer.d.ts.map +1 -1
- package/dist/engine/render/chartRenderer.js +143 -85
- package/dist/engine/render/chartRenderer.js.map +1 -1
- package/dist/engine/render/layers/leftYAxisLayer.d.ts +9 -2
- package/dist/engine/render/layers/leftYAxisLayer.d.ts.map +1 -1
- package/dist/engine/render/layers/leftYAxisLayer.js +11 -2
- package/dist/engine/render/layers/leftYAxisLayer.js.map +1 -1
- package/dist/engine/render/layers/mainIndicatorLegendLayer.d.ts +6 -4
- package/dist/engine/render/layers/mainIndicatorLegendLayer.d.ts.map +1 -1
- package/dist/engine/render/layers/mainIndicatorLegendLayer.js +6 -9
- package/dist/engine/render/layers/mainIndicatorLegendLayer.js.map +1 -1
- package/dist/engine/render/layers/mainIndicatorLegendLayer.test.d.ts +2 -0
- package/dist/engine/render/layers/mainIndicatorLegendLayer.test.d.ts.map +1 -0
- package/dist/engine/render/layers/mainIndicatorLegendLayer.test.js +19 -0
- package/dist/engine/render/layers/mainIndicatorLegendLayer.test.js.map +1 -0
- package/dist/engine/render/layers/yAxisLayer.d.ts +9 -2
- package/dist/engine/render/layers/yAxisLayer.d.ts.map +1 -1
- package/dist/engine/render/layers/yAxisLayer.js +11 -2
- package/dist/engine/render/layers/yAxisLayer.js.map +1 -1
- package/dist/engine/renderers/Indicator/mainIndicatorLegend.d.ts +7 -3
- package/dist/engine/renderers/Indicator/mainIndicatorLegend.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/mainIndicatorLegend.js +234 -330
- package/dist/engine/renderers/Indicator/mainIndicatorLegend.js.map +1 -1
- package/dist/engine/renderers/Indicator/mainIndicatorLegendContext.d.ts +73 -0
- package/dist/engine/renderers/Indicator/mainIndicatorLegendContext.d.ts.map +1 -0
- package/dist/engine/renderers/Indicator/mainIndicatorLegendContext.js +182 -0
- package/dist/engine/renderers/Indicator/mainIndicatorLegendContext.js.map +1 -0
- package/dist/engine/renderers/leftYAxis.d.ts +15 -2
- package/dist/engine/renderers/leftYAxis.d.ts.map +1 -1
- package/dist/engine/renderers/leftYAxis.js +56 -16
- package/dist/engine/renderers/leftYAxis.js.map +1 -1
- package/dist/engine/renderers/timeShare.d.ts.map +1 -1
- package/dist/engine/renderers/timeShare.js +20 -9
- package/dist/engine/renderers/timeShare.js.map +1 -1
- package/dist/engine/renderers/yAxis.d.ts +16 -6
- package/dist/engine/renderers/yAxis.d.ts.map +1 -1
- package/dist/engine/renderers/yAxis.js +49 -16
- package/dist/engine/renderers/yAxis.js.map +1 -1
- package/dist/engine/state/viewportState.d.ts +4 -1
- package/dist/engine/state/viewportState.d.ts.map +1 -1
- package/dist/engine/state/viewportState.js +40 -8
- package/dist/engine/state/viewportState.js.map +1 -1
- package/dist/engine/subPaneManager.d.ts +5 -3
- package/dist/engine/subPaneManager.d.ts.map +1 -1
- package/dist/engine/subPaneManager.js +3 -2
- package/dist/engine/subPaneManager.js.map +1 -1
- package/dist/engine/utils/chartZoomController.d.ts +9 -7
- package/dist/engine/utils/chartZoomController.d.ts.map +1 -1
- package/dist/engine/utils/chartZoomController.js +13 -12
- package/dist/engine/utils/chartZoomController.js.map +1 -1
- package/dist/engine/viewport/chartViewportManager.d.ts +5 -16
- package/dist/engine/viewport/chartViewportManager.d.ts.map +1 -1
- package/dist/engine/viewport/chartViewportManager.js +7 -48
- package/dist/engine/viewport/chartViewportManager.js.map +1 -1
- package/dist/engine/viewport/viewport.d.ts +14 -0
- package/dist/engine/viewport/viewport.d.ts.map +1 -1
- package/dist/engine/viewport/viewport.js +10 -0
- package/dist/engine/viewport/viewport.js.map +1 -1
- package/dist/foundation/config/chartSettings.d.ts +0 -5
- package/dist/foundation/config/chartSettings.d.ts.map +1 -1
- package/dist/foundation/config/chartSettings.js +14 -0
- package/dist/foundation/config/chartSettings.js.map +1 -1
- package/dist/foundation/plugin/rendererPluginManager.test.js +15 -0
- package/dist/foundation/plugin/rendererPluginManager.test.js.map +1 -1
- package/dist/foundation/plugin/types.d.ts +3 -0
- package/dist/foundation/plugin/types.d.ts.map +1 -1
- package/dist/foundation/plugin/types.js.map +1 -1
- package/dist/foundation/reactivity/frameTransaction.d.ts +11 -0
- package/dist/foundation/reactivity/frameTransaction.d.ts.map +1 -1
- package/dist/foundation/reactivity/frameTransaction.js +17 -2
- package/dist/foundation/reactivity/frameTransaction.js.map +1 -1
- package/dist/foundation/utils/kLineDraw/axis.d.ts +3 -0
- package/dist/foundation/utils/kLineDraw/axis.d.ts.map +1 -1
- package/dist/foundation/utils/kLineDraw/axis.js +40 -9
- package/dist/foundation/utils/kLineDraw/axis.js.map +1 -1
- package/dist/foundation/utils/sessionTimeLabels.d.ts +59 -0
- package/dist/foundation/utils/sessionTimeLabels.d.ts.map +1 -0
- package/dist/foundation/utils/sessionTimeLabels.js +170 -0
- package/dist/foundation/utils/sessionTimeLabels.js.map +1 -0
- package/dist/foundation/utils/timeShareAxisLabels.d.ts +27 -0
- package/dist/foundation/utils/timeShareAxisLabels.d.ts.map +1 -0
- package/dist/foundation/utils/timeShareAxisLabels.js +45 -0
- package/dist/foundation/utils/timeShareAxisLabels.js.map +1 -0
- package/dist/rendering/render/Renderer.d.ts +58 -74
- package/dist/rendering/render/Renderer.d.ts.map +1 -1
- package/dist/rendering/render/Renderer.js +8 -18
- package/dist/rendering/render/Renderer.js.map +1 -1
- package/dist/rendering/render/createWebGPURenderer.d.ts.map +1 -1
- package/dist/rendering/render/createWebGPURenderer.js +30 -17
- package/dist/rendering/render/createWebGPURenderer.js.map +1 -1
- package/dist/rendering/render/createWebGPUSurfaceBackend.js +3 -3
- package/dist/rendering/render/createWebGPUSurfaceBackend.js.map +1 -1
- package/dist/rendering/render/physicalLine.d.ts +4 -0
- package/dist/rendering/render/physicalLine.d.ts.map +1 -0
- package/dist/rendering/render/physicalLine.js +37 -0
- package/dist/rendering/render/physicalLine.js.map +1 -0
- package/dist/rendering/render/physicalRegion.d.ts +14 -0
- package/dist/rendering/render/physicalRegion.d.ts.map +1 -0
- package/dist/rendering/render/physicalRegion.js +15 -0
- package/dist/rendering/render/physicalRegion.js.map +1 -0
- package/dist/rendering/scene/createLayerFromPlugin.d.ts.map +1 -1
- package/dist/rendering/scene/createLayerFromPlugin.js +8 -3
- package/dist/rendering/scene/createLayerFromPlugin.js.map +1 -1
- package/dist/rendering/scene/createScene.d.ts.map +1 -1
- package/dist/rendering/scene/createScene.js +4 -3
- package/dist/rendering/scene/createScene.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/src/__tests__/stateKernel.test.ts +1 -0
- package/src/controllers/createChartController.ts +9 -8
- package/src/controllers/index.ts +11 -0
- package/src/controllers/types.ts +7 -0
- package/src/data/__tests__/timeShareBuffer.test.ts +45 -0
- package/src/data/binance.ts +1 -1
- package/src/data/timeShareBuffer.ts +15 -0
- package/src/engine/__tests__/chart.dpr.test.ts +31 -2
- package/src/engine/__tests__/paneRenderer.resize.test.ts +52 -54
- package/src/engine/__tests__/subPaneManager.test.ts +5 -3
- package/src/engine/chart.ts +105 -115
- package/src/engine/chartTypes.ts +5 -0
- package/src/engine/controller/__tests__/interaction.dpr.test.ts +39 -2
- package/src/engine/controller/interaction.ts +18 -10
- package/src/engine/data/__tests__/chartDataManager.incrementalLoad.test.ts +37 -17
- package/src/engine/data/__tests__/scrollCompensator.geometry.test.ts +87 -75
- package/src/engine/data/chartDataManager.ts +64 -59
- package/src/engine/data/incrementalLoadHint.ts +8 -7
- package/src/engine/data/scrollCompensator.ts +16 -24
- package/src/engine/indicators/__tests__/chartIndicatorManager.test.ts +18 -26
- package/src/engine/indicators/chartIndicatorManager.ts +62 -62
- package/src/engine/layout/chartPaneLayout.ts +73 -21
- package/src/engine/modes/__tests__/timeShareMath.test.ts +185 -0
- package/src/engine/modes/__tests__/timeShareMode.test.ts +81 -0
- package/src/engine/modes/timeShareMath.ts +150 -0
- package/src/engine/modes/timeShareMode.ts +35 -28
- package/src/engine/paneRenderer.ts +17 -10
- package/src/engine/render/chartRenderer.ts +214 -145
- package/src/engine/render/layers/leftYAxisLayer.ts +29 -7
- package/src/engine/render/layers/mainIndicatorLegendLayer.test.ts +26 -0
- package/src/engine/render/layers/mainIndicatorLegendLayer.ts +13 -10
- package/src/engine/render/layers/yAxisLayer.ts +29 -7
- package/src/engine/renderers/Indicator/mainIndicatorLegend.ts +270 -403
- package/src/engine/renderers/Indicator/mainIndicatorLegendContext.ts +290 -0
- package/src/engine/renderers/__tests__/mainIndicatorLegend.renderer.test.ts +73 -2
- package/src/engine/renderers/__tests__/yAxis.renderer.test.ts +10 -6
- package/src/engine/renderers/leftYAxis.ts +60 -18
- package/src/engine/renderers/timeShare.ts +25 -9
- package/src/engine/renderers/yAxis.ts +57 -22
- package/src/engine/state/__tests__/settingsState.test.ts +9 -0
- package/src/engine/state/viewportState.ts +44 -8
- package/src/engine/subPaneManager.ts +8 -5
- package/src/engine/utils/chartZoomController.ts +22 -19
- package/src/engine/viewport/__tests__/visibleRange.clamp.test.ts +50 -0
- package/src/engine/viewport/chartViewportManager.ts +9 -60
- package/src/engine/viewport/viewport.ts +14 -0
- package/src/foundation/config/chartSettings.ts +13 -0
- package/src/foundation/plugin/rendererPluginManager.test.ts +18 -0
- package/src/foundation/plugin/types.ts +3 -0
- package/src/foundation/reactivity/frameTransaction.ts +20 -6
- package/src/foundation/utils/__tests__/sessionTimeLabels.test.ts +91 -0
- package/src/foundation/utils/kLineDraw/axis.ts +50 -9
- package/src/foundation/utils/sessionTimeLabels.ts +237 -0
- package/src/foundation/utils/timeShareAxisLabels.ts +94 -0
- package/src/rendering/render/Renderer.ts +69 -85
- package/src/rendering/render/__tests__/physicalLine.test.ts +51 -0
- package/src/rendering/render/__tests__/physicalRegion.test.ts +23 -0
- package/src/rendering/render/__tests__/webgpuRenderer.test.ts +31 -1
- package/src/rendering/render/__tests__/webgpuSurfaceBackend.test.ts +11 -0
- package/src/rendering/render/createWebGPURenderer.ts +30 -17
- package/src/rendering/render/createWebGPUSurfaceBackend.ts +3 -3
- package/src/rendering/render/physicalLine.ts +45 -0
- package/src/rendering/render/physicalRegion.ts +32 -0
- package/src/rendering/scene/createLayerFromPlugin.ts +8 -3
- package/src/rendering/scene/createScene.ts +4 -3
- package/src/version.ts +1 -1
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import type { ChartDataManager } from '../data/chartDataManager'
|
|
2
2
|
import type { Pane, VisibleRange } from '../layout/pane'
|
|
3
3
|
|
|
4
|
+
import type { MarketSessionConfig } from '../../foundation/utils/timeShareAxisLabels'
|
|
5
|
+
import { ASHARE_MARKET_SESSION } from '../../foundation/utils/timeShareAxisLabels'
|
|
6
|
+
|
|
7
|
+
import {
|
|
8
|
+
computeTimeShareBarMetrics,
|
|
9
|
+
computeTimeSharePriceRange,
|
|
10
|
+
resolveTimeShareBaseline,
|
|
11
|
+
} from './timeShareMath'
|
|
4
12
|
import type { ChartModeHandler } from './types'
|
|
5
13
|
|
|
6
14
|
export class TimeShareMode implements ChartModeHandler {
|
|
@@ -12,6 +20,17 @@ export class TimeShareMode implements ChartModeHandler {
|
|
|
12
20
|
readonly allowRightAxisScale = false
|
|
13
21
|
readonly useIndicatorScheduler = false
|
|
14
22
|
|
|
23
|
+
/** 市场 session;默认 A 股,可 setMarketSession 切换 */
|
|
24
|
+
private _marketSession: MarketSessionConfig = ASHARE_MARKET_SESSION
|
|
25
|
+
|
|
26
|
+
get marketSession(): MarketSessionConfig {
|
|
27
|
+
return this._marketSession
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
setMarketSession(config: MarketSessionConfig): void {
|
|
31
|
+
this._marketSession = config
|
|
32
|
+
}
|
|
33
|
+
|
|
15
34
|
computeContentWidth(
|
|
16
35
|
_dataLength: number,
|
|
17
36
|
leftBufferWidth: number,
|
|
@@ -27,17 +46,7 @@ export class TimeShareMode implements ChartModeHandler {
|
|
|
27
46
|
viewWidth: number,
|
|
28
47
|
dpr: number,
|
|
29
48
|
): { kWidth: number; kGap: number } | null {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const kGapPx = 1
|
|
33
|
-
const totalGapPx = (dataLength + 1) * kGapPx
|
|
34
|
-
const availablePx = Math.max(1, viewWidth * dpr - totalGapPx)
|
|
35
|
-
const kWidthPx = Math.max(1, Math.floor(availablePx / dataLength))
|
|
36
|
-
|
|
37
|
-
return {
|
|
38
|
-
kWidth: kWidthPx / dpr,
|
|
39
|
-
kGap: kGapPx / dpr,
|
|
40
|
-
}
|
|
49
|
+
return computeTimeShareBarMetrics(dataLength, viewWidth, dpr, this._marketSession)
|
|
41
50
|
}
|
|
42
51
|
|
|
43
52
|
updatePaneRange(
|
|
@@ -47,30 +56,28 @@ export class TimeShareMode implements ChartModeHandler {
|
|
|
47
56
|
_mergedIndicatorRange?: { min: number; max: number } | null,
|
|
48
57
|
): void {
|
|
49
58
|
const tsData = dm.getTimeShareData()
|
|
50
|
-
const end = Math.min(range.end, tsData.length)
|
|
51
59
|
if (tsData.length === 0) return
|
|
52
60
|
|
|
53
|
-
const
|
|
54
|
-
|
|
61
|
+
const end = Math.min(range.end, tsData.length)
|
|
62
|
+
const start = Math.max(0, range.start)
|
|
63
|
+
// 优先昨收;缺失时回退首笔价
|
|
64
|
+
const baseline = resolveTimeShareBaseline({
|
|
65
|
+
preClose: dm.getTimeSharePreClose(),
|
|
66
|
+
firstPrice: tsData[0]?.price,
|
|
67
|
+
})
|
|
68
|
+
if (baseline === null) return
|
|
55
69
|
|
|
56
70
|
// scaleType 由 kernel.paneScaleTypes 投影(进入 timeshare 时写 percent);此处只设会话 basePrice
|
|
57
71
|
pane.yAxis.setBasePrice(baseline)
|
|
58
72
|
|
|
59
|
-
|
|
60
|
-
for (let i =
|
|
73
|
+
const prices: number[] = []
|
|
74
|
+
for (let i = start; i < end; i++) {
|
|
61
75
|
const p = tsData[i]?.price
|
|
62
|
-
if (p !== undefined
|
|
63
|
-
const pct = Math.abs((p - baseline) / baseline) * 100
|
|
64
|
-
if (pct > maxAbsPct) maxAbsPct = pct
|
|
65
|
-
}
|
|
76
|
+
if (p !== undefined) prices.push(p)
|
|
66
77
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const displayPct = maxAbsPct + padding
|
|
71
|
-
const minPrice = baseline * (1 - displayPct / 100)
|
|
72
|
-
const maxPrice = baseline * (1 + displayPct / 100)
|
|
73
|
-
pane.yAxis.setRange({ maxPrice, minPrice })
|
|
78
|
+
const priceRange = computeTimeSharePriceRange(prices, baseline)
|
|
79
|
+
if (!priceRange) return
|
|
80
|
+
pane.yAxis.setRange(priceRange)
|
|
74
81
|
}
|
|
75
82
|
|
|
76
83
|
onActivate(
|
|
@@ -103,6 +110,6 @@ export class TimeShareMode implements ChartModeHandler {
|
|
|
103
110
|
_next: ChartModeHandler | null,
|
|
104
111
|
): void {
|
|
105
112
|
chart.disableMainIndicator('timeShare')
|
|
106
|
-
|
|
113
|
+
// candle 可见性由 Chart.setActiveMode 按进入前快照恢复,此处不强制 true
|
|
107
114
|
}
|
|
108
115
|
}
|
|
@@ -6,7 +6,9 @@ export type PaneRendererContexts = {
|
|
|
6
6
|
mainCtx: CanvasRenderingContext2D | null
|
|
7
7
|
overlayCtx: CanvasRenderingContext2D | null
|
|
8
8
|
yAxisCtx: CanvasRenderingContext2D | null
|
|
9
|
+
yAxisOverlayCtx: CanvasRenderingContext2D | null
|
|
9
10
|
leftAxisCtx: CanvasRenderingContext2D | null
|
|
11
|
+
leftAxisOverlayCtx: CanvasRenderingContext2D | null
|
|
10
12
|
}
|
|
11
13
|
|
|
12
14
|
export type PaneRendererOptions = {
|
|
@@ -17,7 +19,7 @@ export type PaneRendererOptions = {
|
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
/* PaneRenderer:负责单个 Pane 的 Canvas 管理与运行时状态持有
|
|
20
|
-
创建并管理
|
|
22
|
+
创建并管理 main/overlay/yAxis/yAxisOverlay(及可选 left 轴)canvas
|
|
21
23
|
持有 Pane 实例(布局、Y 轴、价格范围)
|
|
22
24
|
响应 Chart 的 resize / layout 信号
|
|
23
25
|
GPU 绘制经 ChartRenderer.sceneRenderer(SharedWebGLSurface),本类不再持有 per-pane surface */
|
|
@@ -52,7 +54,9 @@ export class PaneRenderer {
|
|
|
52
54
|
mainCtx: this.dom.mainCanvas.getContext('2d'),
|
|
53
55
|
overlayCtx: this.dom.overlayCanvas.getContext('2d'),
|
|
54
56
|
yAxisCtx: this.dom.yAxisCanvas.getContext('2d'),
|
|
57
|
+
yAxisOverlayCtx: this.dom.yAxisOverlayCanvas.getContext('2d'),
|
|
55
58
|
leftAxisCtx: this.dom.leftYAxisCanvas?.getContext('2d') ?? null,
|
|
59
|
+
leftAxisOverlayCtx: this.dom.leftYAxisOverlayCanvas?.getContext('2d') ?? null,
|
|
56
60
|
}
|
|
57
61
|
}
|
|
58
62
|
return this.contexts
|
|
@@ -90,6 +94,7 @@ export class PaneRenderer {
|
|
|
90
94
|
const mainCanvas = this.dom.mainCanvas
|
|
91
95
|
const overlayCanvas = this.dom.overlayCanvas
|
|
92
96
|
const yAxisCanvas = this.dom.yAxisCanvas
|
|
97
|
+
const yAxisOverlayCanvas = this.dom.yAxisOverlayCanvas
|
|
93
98
|
|
|
94
99
|
// 先读取 parentClientWidth,避免在写入样式后读取触发强制回流
|
|
95
100
|
const fallbackYAxisWidth = this.opt.rightAxisWidth + (this.opt.priceLabelWidth || 60)
|
|
@@ -104,22 +109,24 @@ export class PaneRenderer {
|
|
|
104
109
|
// Overlay Canvas - 与 Main Canvas 相同尺寸
|
|
105
110
|
PaneRenderer.resizeCanvas(overlayCanvas, mainWidth, mainHeight, dpr)
|
|
106
111
|
|
|
107
|
-
// YAxis Canvas
|
|
112
|
+
// YAxis Canvas + overlay 轴(同尺寸)
|
|
108
113
|
const yAxisWidth = Math.round(canvasYAxisWidth * dpr)
|
|
109
|
-
|
|
114
|
+
const yAxisHeight = Math.round(height * dpr)
|
|
115
|
+
PaneRenderer.resizeCanvas(yAxisCanvas, yAxisWidth, yAxisHeight, dpr)
|
|
116
|
+
PaneRenderer.resizeCanvas(yAxisOverlayCanvas, yAxisWidth, yAxisHeight, dpr)
|
|
110
117
|
|
|
111
|
-
// Left YAxis Canvas
|
|
118
|
+
// Left YAxis Canvas + overlay
|
|
112
119
|
const leftCanvas = this.dom.leftYAxisCanvas
|
|
120
|
+
const leftOverlayCanvas = this.dom.leftYAxisOverlayCanvas
|
|
113
121
|
if (leftCanvas) {
|
|
114
122
|
const fallbackLeftAxisWidth = this.opt.leftAxisWidth
|
|
115
123
|
const leftParentWidth = leftCanvas.parentElement?.clientWidth ?? 0
|
|
116
124
|
const canvasLeftAxisWidth = leftParentWidth > 0 ? leftParentWidth : fallbackLeftAxisWidth
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
)
|
|
125
|
+
const leftW = Math.round(Math.max(canvasLeftAxisWidth, 0) * dpr)
|
|
126
|
+
PaneRenderer.resizeCanvas(leftCanvas, leftW, yAxisHeight, dpr)
|
|
127
|
+
if (leftOverlayCanvas) {
|
|
128
|
+
PaneRenderer.resizeCanvas(leftOverlayCanvas, leftW, yAxisHeight, dpr)
|
|
129
|
+
}
|
|
123
130
|
}
|
|
124
131
|
}
|
|
125
132
|
|