@363045841yyt/klinechart-core 0.8.1-alpha.3 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/dist/controllers/createChartController.d.ts.map +1 -1
  2. package/dist/controllers/createChartController.js +30 -4
  3. package/dist/controllers/createChartController.js.map +1 -1
  4. package/dist/controllers/types.d.ts +9 -2
  5. package/dist/controllers/types.d.ts.map +1 -1
  6. package/dist/data-fetchers/baostock.js +3 -3
  7. package/dist/data-fetchers/baostock.js.map +1 -1
  8. package/dist/data-fetchers/dataBuffer.d.ts +6 -1
  9. package/dist/data-fetchers/dataBuffer.d.ts.map +1 -1
  10. package/dist/data-fetchers/dataBuffer.js +88 -47
  11. package/dist/data-fetchers/dataBuffer.js.map +1 -1
  12. package/dist/data-fetchers/index.d.ts +1 -0
  13. package/dist/data-fetchers/index.d.ts.map +1 -1
  14. package/dist/data-fetchers/index.js +1 -0
  15. package/dist/data-fetchers/index.js.map +1 -1
  16. package/dist/data-fetchers/router.d.ts.map +1 -1
  17. package/dist/data-fetchers/router.js +3 -0
  18. package/dist/data-fetchers/router.js.map +1 -1
  19. package/dist/data-fetchers/tradingview.d.ts +3 -0
  20. package/dist/data-fetchers/tradingview.d.ts.map +1 -0
  21. package/dist/data-fetchers/tradingview.js +45 -0
  22. package/dist/data-fetchers/tradingview.js.map +1 -0
  23. package/dist/engine/chart.d.ts +34 -351
  24. package/dist/engine/chart.d.ts.map +1 -1
  25. package/dist/engine/chart.js +246 -1716
  26. package/dist/engine/chart.js.map +1 -1
  27. package/dist/engine/chartContext.d.ts +24 -0
  28. package/dist/engine/chartContext.d.ts.map +1 -0
  29. package/dist/engine/chartContext.js +19 -0
  30. package/dist/engine/chartContext.js.map +1 -0
  31. package/dist/engine/chartTypes.d.ts +77 -0
  32. package/dist/engine/chartTypes.d.ts.map +1 -0
  33. package/dist/engine/chartTypes.js +2 -0
  34. package/dist/engine/chartTypes.js.map +1 -0
  35. package/dist/engine/controller/interaction.d.ts +1 -0
  36. package/dist/engine/controller/interaction.d.ts.map +1 -1
  37. package/dist/engine/controller/interaction.js +9 -2
  38. package/dist/engine/controller/interaction.js.map +1 -1
  39. package/dist/engine/data/chartDataManager.d.ts +102 -0
  40. package/dist/engine/data/chartDataManager.d.ts.map +1 -0
  41. package/dist/engine/data/chartDataManager.js +590 -0
  42. package/dist/engine/data/chartDataManager.js.map +1 -0
  43. package/dist/engine/indicators/chartIndicatorManager.d.ts +102 -0
  44. package/dist/engine/indicators/chartIndicatorManager.d.ts.map +1 -0
  45. package/dist/engine/indicators/chartIndicatorManager.js +437 -0
  46. package/dist/engine/indicators/chartIndicatorManager.js.map +1 -0
  47. package/dist/engine/layout/chartPaneLayout.d.ts +53 -0
  48. package/dist/engine/layout/chartPaneLayout.d.ts.map +1 -0
  49. package/dist/engine/layout/chartPaneLayout.js +388 -0
  50. package/dist/engine/layout/chartPaneLayout.js.map +1 -0
  51. package/dist/engine/render/chartRenderer.d.ts +86 -0
  52. package/dist/engine/render/chartRenderer.d.ts.map +1 -0
  53. package/dist/engine/render/chartRenderer.js +438 -0
  54. package/dist/engine/render/chartRenderer.js.map +1 -0
  55. package/dist/engine/renderers/Indicator/mainIndicatorLegend.d.ts.map +1 -1
  56. package/dist/engine/renderers/Indicator/mainIndicatorLegend.js +73 -7
  57. package/dist/engine/renderers/Indicator/mainIndicatorLegend.js.map +1 -1
  58. package/dist/engine/renderers/comparisonLine.d.ts.map +1 -1
  59. package/dist/engine/renderers/comparisonLine.js +25 -11
  60. package/dist/engine/renderers/comparisonLine.js.map +1 -1
  61. package/dist/engine/subPaneManager.d.ts +27 -6
  62. package/dist/engine/subPaneManager.d.ts.map +1 -1
  63. package/dist/engine/subPaneManager.js +54 -56
  64. package/dist/engine/subPaneManager.js.map +1 -1
  65. package/dist/engine/utils/chartZoomController.d.ts +33 -0
  66. package/dist/engine/utils/chartZoomController.d.ts.map +1 -0
  67. package/dist/engine/utils/chartZoomController.js +66 -0
  68. package/dist/engine/utils/chartZoomController.js.map +1 -0
  69. package/dist/engine/viewport/chartViewportManager.d.ts +72 -0
  70. package/dist/engine/viewport/chartViewportManager.d.ts.map +1 -0
  71. package/dist/engine/viewport/chartViewportManager.js +249 -0
  72. package/dist/engine/viewport/chartViewportManager.js.map +1 -0
  73. package/dist/engine/viewport/viewport.js +1 -1
  74. package/dist/engine/viewport/viewport.js.map +1 -1
  75. package/dist/plugin/types.d.ts +1 -0
  76. package/dist/plugin/types.d.ts.map +1 -1
  77. package/dist/plugin/types.js.map +1 -1
  78. package/dist/tokens/theme-china.d.ts.map +1 -1
  79. package/dist/tokens/theme-china.js +0 -4
  80. package/dist/tokens/theme-china.js.map +1 -1
  81. package/dist/tokens/theme-dark.d.ts.map +1 -1
  82. package/dist/tokens/theme-dark.js +0 -4
  83. package/dist/tokens/theme-dark.js.map +1 -1
  84. package/dist/tokens/theme-light.d.ts.map +1 -1
  85. package/dist/tokens/theme-light.js +1 -5
  86. package/dist/tokens/theme-light.js.map +1 -1
  87. package/dist/tokens/types.d.ts +0 -4
  88. package/dist/tokens/types.d.ts.map +1 -1
  89. package/dist/types/price.d.ts +2 -0
  90. package/dist/types/price.d.ts.map +1 -1
  91. package/dist/types/price.js.map +1 -1
  92. package/dist/version.d.ts +1 -1
  93. package/dist/version.d.ts.map +1 -1
  94. package/dist/version.js +1 -1
  95. package/dist/version.js.map +1 -1
  96. package/package.json +1 -1
  97. package/src/controllers/createChartController.ts +49 -13
  98. package/src/controllers/types.ts +9 -2
  99. package/src/data-fetchers/__tests__/dataBuffer.test.ts +77 -0
  100. package/src/data-fetchers/baostock.ts +3 -3
  101. package/src/data-fetchers/dataBuffer.ts +70 -22
  102. package/src/data-fetchers/index.ts +1 -0
  103. package/src/data-fetchers/router.ts +3 -0
  104. package/src/data-fetchers/tradingview.ts +48 -0
  105. package/src/engine/__tests__/subPaneManager.test.ts +154 -0
  106. package/src/engine/chart.ts +260 -2103
  107. package/src/engine/chartContext.ts +34 -0
  108. package/src/engine/chartTypes.ts +88 -0
  109. package/src/engine/controller/__tests__/interaction.dpr.test.ts +1 -0
  110. package/src/engine/controller/interaction.ts +10 -2
  111. package/src/engine/data/chartDataManager.ts +691 -0
  112. package/src/engine/indicators/__tests__/chartIndicatorManager.test.ts +103 -0
  113. package/src/engine/indicators/chartIndicatorManager.ts +566 -0
  114. package/src/engine/layout/chartPaneLayout.ts +474 -0
  115. package/src/engine/render/chartRenderer.ts +579 -0
  116. package/src/engine/renderers/Indicator/mainIndicatorLegend.ts +99 -13
  117. package/src/engine/renderers/comparisonLine.ts +25 -11
  118. package/src/engine/subPaneManager.ts +75 -59
  119. package/src/engine/utils/chartZoomController.ts +104 -0
  120. package/src/engine/viewport/chartViewportManager.ts +310 -0
  121. package/src/engine/viewport/viewport.ts +1 -1
  122. package/src/plugin/types.ts +1 -0
  123. package/src/tokens/__tests__/__snapshots__/baseline.test.ts.snap +1 -9
  124. package/src/tokens/theme-china.ts +0 -4
  125. package/src/tokens/theme-dark.ts +0 -4
  126. package/src/tokens/theme-light.ts +2 -6
  127. package/src/tokens/types.ts +0 -4
  128. package/src/types/price.ts +2 -0
  129. package/src/version.ts +1 -1
  130. package/src/engine/chart.d.ts +0 -619
@@ -0,0 +1,438 @@
1
+ import { getVisibleRange } from '../viewport/viewport';
2
+ import { wrapPaneInfo } from '../../plugin';
3
+ import { MarkerManager } from '../marker/registry';
4
+ import { getPhysicalKLineConfig } from '../utils/klineConfig';
5
+ import { UpdateLevel } from '../layout/pane';
6
+ import { DrawingStore } from '../drawing';
7
+ import { createMainIndicatorLegendRendererPlugin } from '../renderers/Indicator/mainIndicatorLegend';
8
+ import { createDrawingRendererPlugin, createDrawingLabelOverlayPlugin } from '../drawing/plugin';
9
+ import { createGridLinesRendererPlugin } from '../renderers/gridLines';
10
+ import { createCandleRenderer } from '../renderers/candle';
11
+ import { createComparisonLineRenderer } from '../renderers/comparisonLine';
12
+ import { createLastPriceLineRendererPlugin, createLastPriceLabelRegistrarPlugin } from '../renderers/lastPrice';
13
+ import { createCustomMarkersRenderer } from '../renderers/customMarkers';
14
+ import { createExtremaMarkersRendererPlugin } from '../renderers/extremaMarkers';
15
+ import { createYAxisRendererPlugin } from '../renderers/yAxis';
16
+ import { createCrosshairRendererPlugin } from '../renderers/crosshair';
17
+ import { createTimeAxisRendererPlugin } from '../renderers/timeAxis';
18
+ export class ChartRenderer {
19
+ deps;
20
+ raf = null;
21
+ pendingUpdateLevel = UpdateLevel.All;
22
+ markerManager;
23
+ drawingStore;
24
+ settings = {};
25
+ overlayHadCrosshair = false;
26
+ xAxisCtx = null;
27
+ cachedDrawFrame = null;
28
+ constructor(deps) {
29
+ this.deps = deps;
30
+ this.markerManager = new MarkerManager();
31
+ this.drawingStore = new DrawingStore();
32
+ }
33
+ initCoreRenderers() {
34
+ const opt = this.deps.getOption();
35
+ const axisWidth = opt.rightAxisWidth + (opt.priceLabelWidth ?? 0);
36
+ const interaction = this.deps.getInteraction();
37
+ this.useDrawingPlugin(createGridLinesRendererPlugin());
38
+ this.useDrawingPlugin(createCandleRenderer());
39
+ this.useDrawingPlugin(createComparisonLineRenderer());
40
+ this.useDrawingPlugin(createLastPriceLineRendererPlugin());
41
+ this.useDrawingPlugin(createLastPriceLabelRegistrarPlugin());
42
+ this.useDrawingPlugin(createCustomMarkersRenderer());
43
+ this.useDrawingPlugin(createExtremaMarkersRendererPlugin());
44
+ this.useDrawingPlugin(createMainIndicatorLegendRendererPlugin({
45
+ yPaddingPx: opt.yPaddingPx,
46
+ }));
47
+ this.useDrawingPlugin(createYAxisRendererPlugin({
48
+ axisWidth,
49
+ yPaddingPx: opt.yPaddingPx,
50
+ getCrosshair: () => {
51
+ const pos = interaction.crosshairPos;
52
+ const price = interaction.crosshairPrice;
53
+ const activePaneId = interaction.activePaneId;
54
+ if (pos && price !== null) {
55
+ return { y: pos.y, price, activePaneId };
56
+ }
57
+ return null;
58
+ },
59
+ }));
60
+ this.useDrawingPlugin(createCrosshairRendererPlugin({
61
+ getCrosshairState: () => ({
62
+ pos: interaction.crosshairPos,
63
+ activePaneId: interaction.activePaneId,
64
+ isDragging: interaction.isDraggingState(),
65
+ price: interaction.crosshairPrice,
66
+ }),
67
+ }));
68
+ this.useDrawingPlugin(createTimeAxisRendererPlugin({
69
+ height: opt.bottomAxisHeight,
70
+ getCrosshair: () => {
71
+ const pos = interaction.crosshairPos;
72
+ const idx = interaction.crosshairIndex;
73
+ if (pos && idx !== null) {
74
+ return { x: pos.x, index: idx };
75
+ }
76
+ return null;
77
+ },
78
+ }));
79
+ }
80
+ registerDrawingPlugins() {
81
+ this.useDrawingPlugin(createDrawingRendererPlugin({ store: this.drawingStore }));
82
+ this.useDrawingPlugin(createDrawingLabelOverlayPlugin({ store: this.drawingStore }));
83
+ }
84
+ useDrawingPlugin(plugin, config) {
85
+ this.deps.getRendererPluginManager().register(plugin);
86
+ if (config && plugin.setConfig) {
87
+ plugin.setConfig(config);
88
+ }
89
+ }
90
+ getMarkerManager() {
91
+ return this.markerManager;
92
+ }
93
+ getDrawingStore() {
94
+ return this.drawingStore;
95
+ }
96
+ getSettings() {
97
+ return this.settings;
98
+ }
99
+ updateSettings(settings) {
100
+ this.settings = { ...settings };
101
+ }
102
+ scheduleDraw(level = UpdateLevel.All) {
103
+ if (this.raf !== null) {
104
+ if (this.pendingUpdateLevel === UpdateLevel.All)
105
+ return;
106
+ if (level === UpdateLevel.All) {
107
+ this.pendingUpdateLevel = UpdateLevel.All;
108
+ return;
109
+ }
110
+ if ((this.pendingUpdateLevel === UpdateLevel.Main && level === UpdateLevel.Overlay) ||
111
+ (this.pendingUpdateLevel === UpdateLevel.Overlay && level === UpdateLevel.Main)) {
112
+ this.pendingUpdateLevel = UpdateLevel.All;
113
+ return;
114
+ }
115
+ return;
116
+ }
117
+ this.pendingUpdateLevel = level;
118
+ this.raf = requestAnimationFrame(() => {
119
+ this.raf = null;
120
+ const levelToDraw = this.pendingUpdateLevel;
121
+ this.pendingUpdateLevel = UpdateLevel.All;
122
+ this.draw(levelToDraw);
123
+ const c = this.deps.getDom().container;
124
+ if (c) {
125
+ this.deps.getViewportManager().applyPendingScrollLeft(c);
126
+ }
127
+ });
128
+ }
129
+ draw(level = UpdateLevel.All) {
130
+ this.markerManager.clear();
131
+ const frame = this.prepareFrameData(level);
132
+ if (!frame) {
133
+ if (this.deps.getDataManager().getInternalData().length === 0)
134
+ this.clearAllCanvases();
135
+ return;
136
+ }
137
+ const { vp, range, kLinePositions, kLineCenters, kBarRects, kWidthPx, useCachedFrame } = frame;
138
+ this.deps.getInteraction().setKLinePositions(kLinePositions, range, kWidthPx);
139
+ const indicatorManager = this.deps.getIndicatorManager();
140
+ indicatorManager.indicatorSchedulerAccessor.setActiveMainIndicators([...indicatorManager.mainIndicatorsSignalPeek.entries()].map(([id, entry]) => ({ id, params: entry.params })));
141
+ const mainIndicatorRange = useCachedFrame ? null : indicatorManager.indicatorSchedulerAccessor.getMainIndicatorPriceRange();
142
+ const hasCrosshair = this.deps.getInteraction().getCrosshairIndex() !== null;
143
+ const { sharedXAxisLabels, sharedXAxisRanges } = this.renderPanes(vp, range, kLinePositions, kLineCenters, kBarRects, kWidthPx, mainIndicatorRange, hasCrosshair, useCachedFrame, level);
144
+ this.overlayHadCrosshair = hasCrosshair;
145
+ this.renderXAxis(vp, range, kLinePositions, kLineCenters, kBarRects, kWidthPx, sharedXAxisLabels, sharedXAxisRanges);
146
+ }
147
+ prepareFrameData(level) {
148
+ const useCachedFrame = level === UpdateLevel.Overlay && this.cachedDrawFrame !== null;
149
+ const vp = useCachedFrame ? this.cachedDrawFrame.viewport : this.deps.getViewportManager().computeViewport();
150
+ if (!vp)
151
+ return null;
152
+ const internalData = this.deps.getDataManager().getInternalData();
153
+ if (internalData.length === 0)
154
+ return null;
155
+ const opt = this.deps.getOption();
156
+ const rawRange = useCachedFrame
157
+ ? this.cachedDrawFrame.range
158
+ : (() => {
159
+ const { start, end } = getVisibleRange(vp.scrollLeft, vp.plotWidth, opt.kWidth, opt.kGap, internalData.length, vp.dpr);
160
+ return { start, end };
161
+ })();
162
+ const range = { start: Math.max(0, rawRange.start), end: rawRange.end };
163
+ const dataManager = this.deps.getDataManager();
164
+ if (!useCachedFrame && (range.start !== dataManager.lastVisibleRange.start
165
+ || range.end !== dataManager.lastVisibleRange.end
166
+ || rawRange.start !== dataManager.lastRawVisibleRange.start
167
+ || rawRange.end !== dataManager.lastRawVisibleRange.end)) {
168
+ this.deps.getIndicatorManager().indicatorSchedulerAccessor.updateVisibleRange(range);
169
+ dataManager.lastVisibleRange = range;
170
+ dataManager.lastRawVisibleRange = rawRange;
171
+ this.checkVisibleRangeGapWhenIdle();
172
+ }
173
+ const kLinePositions = useCachedFrame
174
+ ? this.cachedDrawFrame.kLinePositions
175
+ : this.calcKLinePositions(range);
176
+ let kLineCenters;
177
+ let kBarRects;
178
+ let kWidthPx;
179
+ if (useCachedFrame) {
180
+ kLineCenters = this.cachedDrawFrame.kLineCenters;
181
+ kBarRects = this.cachedDrawFrame.kBarRects;
182
+ kWidthPx = this.cachedDrawFrame.kWidthPx;
183
+ }
184
+ else {
185
+ const physConfig = getPhysicalKLineConfig(opt.kWidth, opt.kGap, vp.dpr);
186
+ let barWidthPx = Math.max(1, physConfig.unitPx - 1);
187
+ if (barWidthPx % 2 === 0)
188
+ barWidthPx -= 1;
189
+ kLineCenters = new Array(kLinePositions.length);
190
+ kBarRects = new Array(kLinePositions.length);
191
+ for (let i = 0; i < kLinePositions.length; i++) {
192
+ const x = kLinePositions[i];
193
+ const leftPx = Math.round(x * vp.dpr);
194
+ const wickXPx = leftPx + (physConfig.kWidthPx - 1) / 2;
195
+ kLineCenters[i] = wickXPx / vp.dpr;
196
+ const barLeftPx = wickXPx - (barWidthPx - 1) / 2;
197
+ kBarRects[i] = { x: barLeftPx / vp.dpr, width: barWidthPx / vp.dpr };
198
+ }
199
+ kWidthPx = getPhysicalKLineConfig(opt.kWidth, opt.kGap, vp.dpr).kWidthPx;
200
+ this.cachedDrawFrame = {
201
+ viewport: { ...vp },
202
+ range: { ...range },
203
+ kLinePositions,
204
+ kLineCenters,
205
+ kBarRects,
206
+ kWidthPx,
207
+ };
208
+ }
209
+ return {
210
+ vp, range, kLinePositions, kLineCenters, kBarRects, kWidthPx, useCachedFrame,
211
+ data: internalData,
212
+ mainIndicatorRange: null,
213
+ hasCrosshair: false,
214
+ zoomLevel: this.deps.getCurrentZoomLevel(),
215
+ zoomLevelCount: this.deps.getZoomLevelCount(),
216
+ };
217
+ }
218
+ clearAllCanvases() {
219
+ const vp = this.deps.getViewportManager().computeViewport();
220
+ if (!vp)
221
+ return;
222
+ for (const r of this.deps.getPaneRenderers()) {
223
+ const { mainCtx, overlayCtx, yAxisCtx } = r.getContexts();
224
+ const pane = r.getPane();
225
+ mainCtx?.clearRect(0, 0, vp.plotWidth + 1, pane.height + 2 / vp.dpr);
226
+ overlayCtx?.clearRect(0, 0, vp.plotWidth + 1, pane.height + 2 / vp.dpr);
227
+ yAxisCtx?.clearRect(0, 0, vp.plotWidth + 1, pane.height + 2 / vp.dpr);
228
+ }
229
+ const xCtx = this.xAxisCtx;
230
+ if (xCtx) {
231
+ const xW = xCtx.canvas.width;
232
+ const xH = xCtx.canvas.height;
233
+ xCtx.clearRect(0, 0, xW, xH);
234
+ }
235
+ }
236
+ renderPanes(vp, range, kLinePositions, kLineCenters, kBarRects, kWidthPx, mainIndicatorRange, hasCrosshair, useCachedFrame, level) {
237
+ const sharedYAxisLabels = [];
238
+ const sharedXAxisLabels = [];
239
+ const sharedYAxisRanges = [];
240
+ const sharedXAxisRanges = [];
241
+ const dataManager = this.deps.getDataManager();
242
+ const rendererPluginManager = this.deps.getRendererPluginManager();
243
+ const pluginHost = this.deps.getPluginHost();
244
+ for (const renderer of this.deps.getPaneRenderers()) {
245
+ const pane = renderer.getPane();
246
+ const { mainCtx, overlayCtx, yAxisCtx } = renderer.getContexts();
247
+ const { candleSurface, lineSurface } = renderer.getWebGL();
248
+ if (!useCachedFrame) {
249
+ const indicatorRange = pane.role === 'price' ? mainIndicatorRange : null;
250
+ const comparisonRange = pane.id === 'main' ? dataManager.getComparisonEquivalentPriceRange(range) : null;
251
+ const mergedRange = this.mergeNumericRanges(indicatorRange, comparisonRange);
252
+ pane.updateRange(dataManager.getInternalData(), range, mergedRange);
253
+ if (pane.id === 'main' && this.settings.disableMainPaneVerticalScroll) {
254
+ pane.yAxis.resetTransform();
255
+ }
256
+ }
257
+ const shouldUpdateMain = level === UpdateLevel.Main || level === UpdateLevel.All;
258
+ const shouldUpdateOverlay = level === UpdateLevel.All || (level === UpdateLevel.Overlay && (hasCrosshair || this.overlayHadCrosshair));
259
+ if (shouldUpdateMain && mainCtx) {
260
+ mainCtx.setTransform(1, 0, 0, 1, 0, 0);
261
+ mainCtx.scale(vp.dpr, vp.dpr);
262
+ mainCtx.clearRect(0, 0, vp.plotWidth + 1, pane.height + 2 / vp.dpr);
263
+ candleSurface?.clear();
264
+ lineSurface?.clear();
265
+ }
266
+ if (shouldUpdateOverlay && overlayCtx) {
267
+ const overlayWidth = overlayCtx.canvas.width / vp.dpr;
268
+ overlayCtx.setTransform(1, 0, 0, 1, 0, 0);
269
+ overlayCtx.scale(vp.dpr, vp.dpr);
270
+ overlayCtx.clearRect(0, 0, overlayWidth + 1, pane.height + 2 / vp.dpr);
271
+ }
272
+ if (yAxisCtx && !useCachedFrame) {
273
+ const yAxisWidth = yAxisCtx.canvas.width / vp.dpr;
274
+ yAxisCtx.setTransform(1, 0, 0, 1, 0, 0);
275
+ yAxisCtx.scale(vp.dpr, vp.dpr);
276
+ yAxisCtx.clearRect(0, 0, yAxisWidth, pane.height + 2 / vp.dpr);
277
+ }
278
+ const opt = this.deps.getOption();
279
+ const context = {
280
+ ctx: mainCtx,
281
+ overlayCtx: overlayCtx ?? undefined,
282
+ pane: wrapPaneInfo(pane),
283
+ data: dataManager.getInternalData(),
284
+ comparisonData: dataManager.getComparisonData(),
285
+ comparisonSymbols: dataManager.getComparisonSpecs(),
286
+ comparisonColors: dataManager.getComparisonColors(),
287
+ range,
288
+ scrollLeft: vp.scrollLeft,
289
+ kWidth: opt.kWidth,
290
+ kGap: opt.kGap,
291
+ dpr: vp.dpr,
292
+ paneWidth: vp.plotWidth,
293
+ kLinePositions,
294
+ kLineCenters,
295
+ kBarRects,
296
+ markerManager: this.markerManager,
297
+ crosshairIndex: this.deps.getInteraction().getCrosshairIndex(),
298
+ yAxisCtx: yAxisCtx ?? undefined,
299
+ candleWebGLSurface: candleSurface ?? undefined,
300
+ lineWebGLSurface: lineSurface ?? undefined,
301
+ zoomLevel: this.deps.getCurrentZoomLevel(),
302
+ zoomLevelCount: this.deps.getZoomLevelCount(),
303
+ viewport: {
304
+ scrollLeft: vp.scrollLeft,
305
+ plotWidth: vp.plotWidth,
306
+ plotHeight: vp.plotHeight,
307
+ },
308
+ settings: this.settings,
309
+ yAxisLabels: sharedYAxisLabels,
310
+ xAxisLabels: sharedXAxisLabels,
311
+ yAxisRanges: sharedYAxisRanges,
312
+ xAxisRanges: sharedXAxisRanges,
313
+ theme: this.deps.getTheme(),
314
+ isAsiaMarket: this.settings.isAsiaMarket,
315
+ colorPresetSettings: this.settings.colorPresetSettings,
316
+ };
317
+ if (shouldUpdateMain || shouldUpdateOverlay) {
318
+ const errors = rendererPluginManager.render(pane.id, context, level);
319
+ if (errors.length > 0) {
320
+ pluginHost.events.emit('renderer:error', { paneId: pane.id, errors });
321
+ }
322
+ const yAxisErrors = rendererPluginManager.renderPlugin('yAxis', context);
323
+ if (yAxisErrors.length > 0) {
324
+ pluginHost.events.emit('renderer:error', { paneId: pane.id, errors: yAxisErrors });
325
+ }
326
+ }
327
+ }
328
+ return { sharedXAxisLabels, sharedXAxisRanges };
329
+ }
330
+ renderXAxis(vp, range, kLinePositions, kLineCenters, kBarRects, kWidthPx, sharedXAxisLabels, sharedXAxisRanges) {
331
+ const dom = this.deps.getDom();
332
+ const xAxisCtx = this.xAxisCtx ?? dom.xAxisCanvas.getContext('2d');
333
+ if (!this.xAxisCtx) {
334
+ this.xAxisCtx = xAxisCtx;
335
+ }
336
+ if (xAxisCtx) {
337
+ const opt = this.deps.getOption();
338
+ const timeAxisContext = {
339
+ ctx: xAxisCtx,
340
+ pane: {
341
+ id: 'xAxis',
342
+ role: 'auxiliary',
343
+ capabilities: {
344
+ showPriceAxisTicks: false,
345
+ showCrosshairPriceLabel: false,
346
+ candleHitTest: false,
347
+ supportsPriceTranslate: false,
348
+ },
349
+ top: 0,
350
+ height: opt.bottomAxisHeight,
351
+ yAxis: {
352
+ priceToY: () => 0,
353
+ yToPrice: () => 0,
354
+ getPaddingTop: () => 0,
355
+ getPaddingBottom: () => 0,
356
+ getPriceOffset: () => 0,
357
+ getDisplayRange: (baseRange) => baseRange ?? { maxPrice: 0, minPrice: 0 },
358
+ getScaleType: () => 'linear',
359
+ getBasePrice: () => null,
360
+ toPercent: () => 0,
361
+ fromPercent: () => 0,
362
+ getDisplayPercentRange: () => ({ minPct: 0, maxPct: 0 }),
363
+ },
364
+ priceRange: { maxPrice: 0, minPrice: 0 },
365
+ },
366
+ data: this.deps.getDataManager().getInternalData(),
367
+ range,
368
+ scrollLeft: vp.scrollLeft,
369
+ kWidth: opt.kWidth,
370
+ kGap: opt.kGap,
371
+ dpr: vp.dpr,
372
+ paneWidth: vp.plotWidth,
373
+ kLinePositions,
374
+ kLineCenters,
375
+ kBarRects,
376
+ xAxisCtx,
377
+ viewport: {
378
+ scrollLeft: vp.scrollLeft,
379
+ plotWidth: vp.plotWidth,
380
+ plotHeight: vp.plotHeight,
381
+ },
382
+ yAxisLabels: [],
383
+ xAxisLabels: sharedXAxisLabels,
384
+ xAxisRanges: sharedXAxisRanges,
385
+ theme: this.deps.getTheme(),
386
+ isAsiaMarket: this.settings.isAsiaMarket,
387
+ colorPresetSettings: this.settings.colorPresetSettings,
388
+ };
389
+ const errors = this.deps.getRendererPluginManager().renderPlugin('timeAxis', timeAxisContext);
390
+ if (errors.length > 0) {
391
+ this.deps.getPluginHost().events.emit('renderer:error', { paneId: 'timeAxis', errors });
392
+ }
393
+ }
394
+ }
395
+ calcKLinePositions(range) {
396
+ const { start, end } = range;
397
+ const count = end - start;
398
+ if (count <= 0)
399
+ return [];
400
+ const dpr = this.deps.getViewportManager().getEffectiveDpr();
401
+ const opt = this.deps.getOption();
402
+ const { unitPx, startXPx } = getPhysicalKLineConfig(opt.kWidth, opt.kGap, dpr);
403
+ const positions = new Array(count);
404
+ for (let i = 0; i < count; i++) {
405
+ const dataIndex = start + i;
406
+ const leftPx = startXPx + dataIndex * unitPx;
407
+ positions[i] = leftPx / dpr;
408
+ }
409
+ return positions;
410
+ }
411
+ checkVisibleRangeGapWhenIdle() {
412
+ if (this.deps.getInteraction().isPointerDown())
413
+ return;
414
+ this.deps.getDataManager().checkVisibleRangeGap();
415
+ }
416
+ mergeNumericRanges(left, right) {
417
+ if (!left)
418
+ return right ?? null;
419
+ if (!right)
420
+ return left;
421
+ return {
422
+ min: Math.min(left.min, right.min),
423
+ max: Math.max(left.max, right.max),
424
+ };
425
+ }
426
+ clearCachedFrame() {
427
+ this.cachedDrawFrame = null;
428
+ }
429
+ destroy() {
430
+ if (this.raf !== null) {
431
+ cancelAnimationFrame(this.raf);
432
+ this.raf = null;
433
+ }
434
+ this.cachedDrawFrame = null;
435
+ this.xAxisCtx = null;
436
+ }
437
+ }
438
+ //# sourceMappingURL=chartRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chartRenderer.js","sourceRoot":"","sources":["../../../src/engine/render/chartRenderer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mainIndicatorLegend.d.ts","sourceRoot":"","sources":["../../../../src/engine/renderers/Indicator/mainIndicatorLegend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAA6B,MAAM,iBAAiB,CAAA;AA8BxF;;;;;GAKG;AACH,wBAAgB,uCAAuC,CAAC,OAAO,EAAE;IAC/D,UAAU,EAAE,MAAM,CAAA;CACnB,GAAG,sBAAsB,CAkHzB"}
1
+ {"version":3,"file":"mainIndicatorLegend.d.ts","sourceRoot":"","sources":["../../../../src/engine/renderers/Indicator/mainIndicatorLegend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAA6B,MAAM,iBAAiB,CAAA;AA8BxF;;;;;GAKG;AACH,wBAAgB,uCAAuC,CAAC,OAAO,EAAE;IAC/D,UAAU,EAAE,MAAM,CAAA;CACnB,GAAG,sBAAsB,CAgHzB"}
@@ -69,19 +69,16 @@ export function createMainIndicatorLegendRendererPlugin(options) {
69
69
  if (!scheduler?.isMainIndicatorActive(meta.name))
70
70
  continue;
71
71
  const params = scheduler?.getMainIndicatorParams(meta.name) ?? {};
72
- const getTitleInfo = meta.getTitleInfo;
72
+ const titleInfo = meta.getTitleInfo(klineData, targetIndex, params, pluginHost, 'main');
73
+ if (!titleInfo)
74
+ continue;
73
75
  rows.push({
74
76
  draw: (rowIndex) => {
75
- const titleInfo = getTitleInfo(klineData, targetIndex, params, pluginHost, 'main');
76
- if (!titleInfo)
77
- return;
78
77
  let x = legendX;
79
78
  let y = config.yPaddingPx / 2 + legendYOffset + rowIndex * lineHeight;
80
- // 指标名称
81
79
  overlayCtx.fillStyle = colors.text.primary;
82
80
  overlayCtx.fillText(titleInfo.name, x, y);
83
81
  x += measureTextWidth(overlayCtx, titleInfo.name);
84
- // 指标参数
85
82
  if (titleInfo.params && titleInfo.params.length > 0) {
86
83
  const paramText = `(${titleInfo.params.join(',')})`;
87
84
  overlayCtx.fillStyle = colors.text.tertiary;
@@ -91,7 +88,6 @@ export function createMainIndicatorLegendRendererPlugin(options) {
91
88
  else {
92
89
  x += gap;
93
90
  }
94
- // 指标数值
95
91
  if (titleInfo.values) {
96
92
  y += 1;
97
93
  for (const item of titleInfo.values) {
@@ -104,6 +100,7 @@ export function createMainIndicatorLegendRendererPlugin(options) {
104
100
  }
105
101
  });
106
102
  }
103
+ pushComparisonLegendRows(context, klineData, targetIndex, range, rows, config.yPaddingPx, overlayCtx, legendX, legendYOffset, lineHeight, gap, colors);
107
104
  rows.forEach((row, index) => row.draw(index));
108
105
  overlayCtx.restore();
109
106
  },
@@ -119,4 +116,73 @@ export function createMainIndicatorLegendRendererPlugin(options) {
119
116
  },
120
117
  };
121
118
  }
119
+ function pushComparisonLegendRows(context, klineData, targetIndex, range, rows, yPaddingPx, overlayCtx, legendX, legendYOffset, lineHeight, gap, colors) {
120
+ const comparisonSymbols = context.comparisonSymbols;
121
+ const comparisonData = context.comparisonData;
122
+ const comparisonColors = context.comparisonColors;
123
+ if (!comparisonSymbols?.length || !comparisonData?.size)
124
+ return;
125
+ const baseIndex = Math.max(0, range.start);
126
+ const baseItem = klineData[baseIndex];
127
+ if (!baseItem || !Number.isFinite(baseItem.close) || baseItem.close <= 0)
128
+ return;
129
+ const baseDate = baseItem.date ?? '';
130
+ for (const spec of comparisonSymbols) {
131
+ const data = comparisonData.get(spec.symbol);
132
+ if (!data?.length)
133
+ continue;
134
+ const baseline = baseDate
135
+ ? findBaselineByDate(data, baseDate)
136
+ : findBaselineByTimestamp(data, baseItem.timestamp);
137
+ if (!baseline || baseline.close <= 0)
138
+ continue;
139
+ const byDate = new Map();
140
+ for (const item of data) {
141
+ byDate.set(item.date ?? String(item.timestamp), item);
142
+ }
143
+ const mainItem = klineData[targetIndex];
144
+ if (!mainItem)
145
+ continue;
146
+ const key = mainItem.date ?? String(mainItem.timestamp);
147
+ const currentItem = byDate.get(key);
148
+ if (!currentItem || !Number.isFinite(currentItem.close))
149
+ continue;
150
+ const pct = ((currentItem.close - baseline.close) / baseline.close) * 100;
151
+ const color = comparisonColors?.get(spec.symbol) ?? '#f59e0b';
152
+ rows.push({
153
+ draw: (rowIndex) => {
154
+ let x = legendX;
155
+ const y = yPaddingPx / 2 + legendYOffset + rowIndex * lineHeight;
156
+ const dotRadius = 4;
157
+ overlayCtx.fillStyle = color;
158
+ overlayCtx.beginPath();
159
+ const fontSize = lineHeight - 6;
160
+ overlayCtx.arc(x + dotRadius, y + fontSize / 2 - 1, dotRadius, 0, Math.PI * 2);
161
+ overlayCtx.fill();
162
+ x += dotRadius * 2 + 4;
163
+ overlayCtx.fillStyle = colors.text.primary;
164
+ overlayCtx.fillText(spec.symbol, x, y);
165
+ x += measureTextWidth(overlayCtx, spec.symbol) + gap;
166
+ const sign = pct > 0 ? '+' : '';
167
+ const pctText = `${sign}${pct.toFixed(2)}%`;
168
+ overlayCtx.fillStyle = pct > 0 ? colors.candleUpBody : pct < 0 ? colors.candleDownBody : colors.text.primary;
169
+ overlayCtx.fillText(pctText, x, y + 1);
170
+ },
171
+ });
172
+ }
173
+ }
174
+ function findBaselineByDate(data, date) {
175
+ for (const item of data) {
176
+ if (item.date && item.date >= date)
177
+ return item;
178
+ }
179
+ return null;
180
+ }
181
+ function findBaselineByTimestamp(data, timestamp) {
182
+ for (const item of data) {
183
+ if (item.timestamp >= timestamp)
184
+ return item;
185
+ }
186
+ return null;
187
+ }
122
188
  //# sourceMappingURL=mainIndicatorLegend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mainIndicatorLegend.js","sourceRoot":"","sources":["../../../../src/engine/renderers/Indicator/mainIndicatorLegend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mainIndicatorLegend.js","sourceRoot":"","sources":["../../../../src/engine/renderers/Indicator/mainIndicatorLegend.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"comparisonLine.d.ts","sourceRoot":"","sources":["../../../src/engine/renderers/comparisonLine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAA;AAMjE,wBAAgB,4BAA4B,IAAI,cAAc,CA2E7D"}
1
+ {"version":3,"file":"comparisonLine.d.ts","sourceRoot":"","sources":["../../../src/engine/renderers/comparisonLine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAA;AAMjE,wBAAgB,4BAA4B,IAAI,cAAc,CAkF7D"}