@363045841yyt/klinechart-core 0.9.0-alpha.3 → 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.
Files changed (74) hide show
  1. package/dist/controllers/index.d.ts +1 -1
  2. package/dist/controllers/index.d.ts.map +1 -1
  3. package/dist/data/timeShareBuffer.d.ts +3 -0
  4. package/dist/data/timeShareBuffer.d.ts.map +1 -1
  5. package/dist/data/timeShareBuffer.js +13 -0
  6. package/dist/data/timeShareBuffer.js.map +1 -1
  7. package/dist/engine/chart.d.ts.map +1 -1
  8. package/dist/engine/chart.js +18 -5
  9. package/dist/engine/chart.js.map +1 -1
  10. package/dist/engine/data/chartDataManager.d.ts +2 -0
  11. package/dist/engine/data/chartDataManager.d.ts.map +1 -1
  12. package/dist/engine/data/chartDataManager.js +9 -0
  13. package/dist/engine/data/chartDataManager.js.map +1 -1
  14. package/dist/engine/modes/timeShareMath.d.ts +56 -0
  15. package/dist/engine/modes/timeShareMath.d.ts.map +1 -0
  16. package/dist/engine/modes/timeShareMath.js +90 -0
  17. package/dist/engine/modes/timeShareMath.js.map +1 -0
  18. package/dist/engine/modes/timeShareMode.d.ts +5 -0
  19. package/dist/engine/modes/timeShareMode.d.ts.map +1 -1
  20. package/dist/engine/modes/timeShareMode.js +27 -27
  21. package/dist/engine/modes/timeShareMode.js.map +1 -1
  22. package/dist/engine/render/chartRenderer.d.ts.map +1 -1
  23. package/dist/engine/render/chartRenderer.js +27 -17
  24. package/dist/engine/render/chartRenderer.js.map +1 -1
  25. package/dist/engine/renderers/Indicator/mainIndicatorLegend.js +2 -2
  26. package/dist/engine/renderers/Indicator/mainIndicatorLegend.js.map +1 -1
  27. package/dist/engine/renderers/Indicator/mainIndicatorLegendContext.d.ts +4 -3
  28. package/dist/engine/renderers/Indicator/mainIndicatorLegendContext.d.ts.map +1 -1
  29. package/dist/engine/renderers/Indicator/mainIndicatorLegendContext.js +13 -8
  30. package/dist/engine/renderers/Indicator/mainIndicatorLegendContext.js.map +1 -1
  31. package/dist/engine/renderers/timeShare.d.ts.map +1 -1
  32. package/dist/engine/renderers/timeShare.js +20 -9
  33. package/dist/engine/renderers/timeShare.js.map +1 -1
  34. package/dist/foundation/config/chartSettings.d.ts +0 -5
  35. package/dist/foundation/config/chartSettings.d.ts.map +1 -1
  36. package/dist/foundation/config/chartSettings.js +14 -0
  37. package/dist/foundation/config/chartSettings.js.map +1 -1
  38. package/dist/foundation/utils/kLineDraw/axis.d.ts +3 -0
  39. package/dist/foundation/utils/kLineDraw/axis.d.ts.map +1 -1
  40. package/dist/foundation/utils/kLineDraw/axis.js +40 -9
  41. package/dist/foundation/utils/kLineDraw/axis.js.map +1 -1
  42. package/dist/foundation/utils/sessionTimeLabels.d.ts +59 -0
  43. package/dist/foundation/utils/sessionTimeLabels.d.ts.map +1 -0
  44. package/dist/foundation/utils/sessionTimeLabels.js +170 -0
  45. package/dist/foundation/utils/sessionTimeLabels.js.map +1 -0
  46. package/dist/foundation/utils/timeShareAxisLabels.d.ts +27 -0
  47. package/dist/foundation/utils/timeShareAxisLabels.d.ts.map +1 -0
  48. package/dist/foundation/utils/timeShareAxisLabels.js +45 -0
  49. package/dist/foundation/utils/timeShareAxisLabels.js.map +1 -0
  50. package/dist/version.d.ts +1 -1
  51. package/dist/version.js +1 -1
  52. package/package.json +1 -1
  53. package/src/controllers/index.ts +1 -1
  54. package/src/data/__tests__/timeShareBuffer.test.ts +45 -0
  55. package/src/data/timeShareBuffer.ts +15 -0
  56. package/src/engine/__tests__/chart.dpr.test.ts +28 -0
  57. package/src/engine/chart.ts +29 -6
  58. package/src/engine/data/chartDataManager.ts +10 -0
  59. package/src/engine/modes/__tests__/timeShareMath.test.ts +185 -0
  60. package/src/engine/modes/__tests__/timeShareMode.test.ts +81 -0
  61. package/src/engine/modes/timeShareMath.ts +150 -0
  62. package/src/engine/modes/timeShareMode.ts +35 -28
  63. package/src/engine/render/chartRenderer.ts +29 -18
  64. package/src/engine/renderers/Indicator/mainIndicatorLegend.ts +2 -2
  65. package/src/engine/renderers/Indicator/mainIndicatorLegendContext.ts +19 -11
  66. package/src/engine/renderers/__tests__/mainIndicatorLegend.renderer.test.ts +4 -4
  67. package/src/engine/renderers/timeShare.ts +25 -9
  68. package/src/engine/state/__tests__/settingsState.test.ts +9 -0
  69. package/src/foundation/config/chartSettings.ts +13 -0
  70. package/src/foundation/utils/__tests__/sessionTimeLabels.test.ts +91 -0
  71. package/src/foundation/utils/kLineDraw/axis.ts +50 -9
  72. package/src/foundation/utils/sessionTimeLabels.ts +237 -0
  73. package/src/foundation/utils/timeShareAxisLabels.ts +94 -0
  74. package/src/version.ts +1 -1
@@ -0,0 +1,94 @@
1
+ import {
2
+ ASHARE_MARKET_SESSION,
3
+ ASHARE_OPEN_SESSIONS,
4
+ computeSessionTimeLabels,
5
+ countSessionSlots,
6
+ minuteOfDayToTimestamp,
7
+ resolveMarketSessionSlots,
8
+ sessionSlotCenterX,
9
+ type MarketSessionConfig,
10
+ type SessionTimeLabel,
11
+ } from './sessionTimeLabels'
12
+
13
+ /** A 股默认全天 1 分钟槽位数(兼容旧导出) */
14
+ export const ASHARE_TIMESHARE_SESSION_SLOTS = resolveMarketSessionSlots(ASHARE_MARKET_SESSION)
15
+
16
+ /** 分时时间标签最小水平间距(逻辑像素) */
17
+ export const TIMESHARE_MIN_LABEL_SPACING_PX = 56
18
+
19
+ export type TimeShareTimeLabelInput = {
20
+ axisWidth: number
21
+ /** 市场 session;默认 A 股 */
22
+ marketSession?: MarketSessionConfig
23
+ minLabelSpacingPx?: number
24
+ }
25
+
26
+ /**
27
+ * 分时时间标签索引(委托 computeSessionTimeLabels)。
28
+ * 默认 A 股;传入 marketSession 可换港股/美股等。
29
+ */
30
+ export function computeTimeShareTimeLabelIndices(input: TimeShareTimeLabelInput): number[] {
31
+ return computeTimeShareTimeLabels(input).map((l) => l.slotIndex)
32
+ }
33
+
34
+ /** 完整标签(含 minuteOfDay / isEndpoint) */
35
+ export function computeTimeShareTimeLabels(input: TimeShareTimeLabelInput): SessionTimeLabel[] {
36
+ const market = input.marketSession ?? ASHARE_MARKET_SESSION
37
+ return computeSessionTimeLabels(market.sessions, {
38
+ axisWidth: input.axisWidth,
39
+ minLabelSpacingPx: input.minLabelSpacingPx ?? TIMESHARE_MIN_LABEL_SPACING_PX,
40
+ })
41
+ }
42
+
43
+ export function timeShareSlotCenterX(
44
+ slotIndex: number,
45
+ axisWidth: number,
46
+ sessionSlots: number,
47
+ dpr: number,
48
+ ): number {
49
+ return sessionSlotCenterX(slotIndex, axisWidth, sessionSlots, dpr)
50
+ }
51
+
52
+ /**
53
+ * 由开盘日基准时间戳 + slot 索引推算标签时间(按 market session)。
54
+ */
55
+ export function resolveTimeShareSlotTimestamp(
56
+ baseTimestamp: number,
57
+ slotIndex: number,
58
+ marketSession: MarketSessionConfig = ASHARE_MARKET_SESSION,
59
+ ): number {
60
+ const step = marketSession.slotMinutes && marketSession.slotMinutes > 0 ? marketSession.slotMinutes : 1
61
+ let remaining = slotIndex * step
62
+ for (const range of marketSession.sessions) {
63
+ const len = range.close - range.open
64
+ if (remaining < len) {
65
+ return minuteOfDayToTimestamp(
66
+ baseTimestamp,
67
+ range.open + remaining,
68
+ marketSession.timeZone,
69
+ )
70
+ }
71
+ remaining -= len
72
+ }
73
+ const last = marketSession.sessions[marketSession.sessions.length - 1]
74
+ if (last) {
75
+ return minuteOfDayToTimestamp(baseTimestamp, last.close, marketSession.timeZone)
76
+ }
77
+ return baseTimestamp
78
+ }
79
+
80
+ export {
81
+ ASHARE_MARKET_SESSION,
82
+ ASHARE_OPEN_SESSIONS,
83
+ computeSessionTimeLabels,
84
+ countSessionSlots,
85
+ minuteOfDayToTimestamp,
86
+ resolveMarketSessionSlots,
87
+ sessionSlotCenterX,
88
+ }
89
+ export type {
90
+ MarketSessionConfig,
91
+ OpenTimeRange,
92
+ SessionTimeLabel,
93
+ } from './sessionTimeLabels'
94
+ export { HK_MARKET_SESSION, US_MARKET_SESSION } from './sessionTimeLabels'
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const VERSION = '0.9.0-alpha.3'
1
+ export const VERSION = '0.9.0-alpha.4'