@363045841yyt/klinechart-core 0.9.0-alpha.3 → 0.9.0-alpha.5
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/index.d.ts +1 -1
- package/dist/controllers/index.d.ts.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.map +1 -1
- package/dist/engine/chart.js +18 -5
- package/dist/engine/chart.js.map +1 -1
- package/dist/engine/data/chartDataManager.d.ts +2 -0
- package/dist/engine/data/chartDataManager.d.ts.map +1 -1
- package/dist/engine/data/chartDataManager.js +9 -0
- package/dist/engine/data/chartDataManager.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/render/chartRenderer.d.ts.map +1 -1
- package/dist/engine/render/chartRenderer.js +27 -17
- package/dist/engine/render/chartRenderer.js.map +1 -1
- package/dist/engine/renderers/Indicator/mainIndicatorLegend.js +2 -2
- package/dist/engine/renderers/Indicator/mainIndicatorLegend.js.map +1 -1
- package/dist/engine/renderers/Indicator/mainIndicatorLegendContext.d.ts +4 -3
- package/dist/engine/renderers/Indicator/mainIndicatorLegendContext.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/mainIndicatorLegendContext.js +13 -8
- package/dist/engine/renderers/Indicator/mainIndicatorLegendContext.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/foundation/config/chartSettings.d.ts +18 -5
- package/dist/foundation/config/chartSettings.d.ts.map +1 -1
- package/dist/foundation/config/chartSettings.js +51 -0
- package/dist/foundation/config/chartSettings.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/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/src/controllers/index.ts +1 -1
- package/src/data/__tests__/timeShareBuffer.test.ts +45 -0
- package/src/data/timeShareBuffer.ts +15 -0
- package/src/engine/__tests__/chart.dpr.test.ts +28 -0
- package/src/engine/chart.ts +29 -6
- package/src/engine/data/chartDataManager.ts +10 -0
- 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/render/chartRenderer.ts +29 -18
- package/src/engine/renderers/Indicator/mainIndicatorLegend.ts +2 -2
- package/src/engine/renderers/Indicator/mainIndicatorLegendContext.ts +19 -11
- package/src/engine/renderers/__tests__/mainIndicatorLegend.renderer.test.ts +4 -4
- package/src/engine/renderers/timeShare.ts +25 -9
- package/src/engine/state/__tests__/settingsState.test.ts +9 -0
- package/src/foundation/config/__tests__/chartSettings.test.ts +68 -1
- package/src/foundation/config/chartSettings.ts +56 -0
- 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/version.ts +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ColorPresetSettings } from '../../tokens';
|
|
2
2
|
import type { KLineData } from '../../types/price';
|
|
3
|
+
import { type MarketSessionConfig } from '../timeShareAxisLabels';
|
|
3
4
|
export interface TimeAxisOptions {
|
|
4
5
|
x: number;
|
|
5
6
|
y: number;
|
|
@@ -35,6 +36,8 @@ export interface TimeAxisOptions {
|
|
|
35
36
|
monthKeys?: Int32Array;
|
|
36
37
|
/** 预计算的日期键值数组(year*366+dayOfYear),与 data 长度一致 */
|
|
37
38
|
dayKeys?: Int32Array;
|
|
39
|
+
/** 分时市场 session;默认 A 股 */
|
|
40
|
+
marketSession?: MarketSessionConfig;
|
|
38
41
|
}
|
|
39
42
|
export interface LastPriceLineOptions {
|
|
40
43
|
/** 绘图区宽度(逻辑像素) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axis.d.ts","sourceRoot":"","sources":["../../../../src/foundation/utils/kLineDraw/axis.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"axis.d.ts","sourceRoot":"","sources":["../../../../src/foundation/utils/kLineDraw/axis.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { getFont, setCanvasFont } from '../../tokens/fonts';
|
|
|
3
3
|
import { resolveThemeColors } from '../../tokens';
|
|
4
4
|
import { formatYMDShanghai, formatTimeLabel, formatMonthOrYear, formatDay, findMonthBoundaries, findDayBoundaries, } from '../dateFormat';
|
|
5
5
|
import { priceToY, yToPrice } from '../priceToY';
|
|
6
|
+
import { ASHARE_MARKET_SESSION, computeTimeShareTimeLabels, minuteOfDayToTimestamp, resolveMarketSessionSlots, timeShareSlotCenterX, } from '../timeShareAxisLabels';
|
|
6
7
|
const textWidthCache = new Map();
|
|
7
8
|
const TEXT_WIDTH_CACHE_LIMIT = 512;
|
|
8
9
|
function measureTextWidth(ctx, text) {
|
|
@@ -128,17 +129,47 @@ export function drawTimeAxis(ctx, opts, theme = 'light', isAsiaMarket, colorPres
|
|
|
128
129
|
let boundaries;
|
|
129
130
|
let labelFn;
|
|
130
131
|
if (isTimeShare) {
|
|
131
|
-
|
|
132
|
-
const
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
132
|
+
// 只画各区间闭侧端点;全天首/末槽贴边 left/right 对齐
|
|
133
|
+
const market = opts.marketSession ?? ASHARE_MARKET_SESSION;
|
|
134
|
+
const sessionSlots = resolveMarketSessionSlots(market);
|
|
135
|
+
const labels = computeTimeShareTimeLabels({
|
|
136
|
+
axisWidth: width,
|
|
137
|
+
marketSession: market,
|
|
138
|
+
minLabelSpacingPx: 56,
|
|
139
|
+
});
|
|
140
|
+
const baseTs = data[0]?.timestamp ?? Date.now();
|
|
141
|
+
setCanvasFont(ctx, regularFont);
|
|
142
|
+
ctx.textBaseline = 'middle';
|
|
143
|
+
const edgePad = 2;
|
|
144
|
+
const lastSlot = Math.max(0, sessionSlots - 1);
|
|
145
|
+
for (const label of labels) {
|
|
146
|
+
const ts = minuteOfDayToTimestamp(baseTs, label.minuteOfDay, market.timeZone);
|
|
147
|
+
const text = formatTimeLabel(ts);
|
|
148
|
+
const isDayStart = label.slotIndex === 0;
|
|
149
|
+
const isDayEnd = label.slotIndex === lastSlot;
|
|
150
|
+
let align = 'center';
|
|
151
|
+
let drawX;
|
|
152
|
+
if (isDayStart) {
|
|
153
|
+
align = 'left';
|
|
154
|
+
drawX = x + edgePad;
|
|
155
|
+
}
|
|
156
|
+
else if (isDayEnd) {
|
|
157
|
+
align = 'right';
|
|
158
|
+
drawX = x + width - edgePad;
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
const centerX = timeShareSlotCenterX(label.slotIndex, width, sessionSlots, dpr);
|
|
162
|
+
drawX = centerX - scrollLeft;
|
|
163
|
+
if (drawX < edgePad || drawX > width - edgePad)
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
ctx.textAlign = align;
|
|
167
|
+
ctx.fillText(text, roundToPhysicalPixel(drawX, dpr), alignToPhysicalPixelCenter(textY, dpr));
|
|
138
168
|
}
|
|
139
|
-
|
|
169
|
+
ctx.textAlign = 'center';
|
|
170
|
+
return;
|
|
140
171
|
}
|
|
141
|
-
|
|
172
|
+
if (isMinuteData) {
|
|
142
173
|
boundaries = findDayBoundaries(data, opts.dayKeys);
|
|
143
174
|
labelFn = formatDay;
|
|
144
175
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axis.js","sourceRoot":"","sources":["../../../../src/foundation/utils/kLineDraw/axis.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"axis.js","sourceRoot":"","sources":["../../../../src/foundation/utils/kLineDraw/axis.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 开盘时段:minuteOfDay 为自 0 点起的分钟数(交易所本地墙钟)。
|
|
3
|
+
* sessions[0..n-2] 左闭右开 [open, close);sessions[n-1] 左闭右闭 [open, close]。
|
|
4
|
+
* 只打印闭侧端点:半开段不展示 close。
|
|
5
|
+
*/
|
|
6
|
+
export type OpenTimeRange = {
|
|
7
|
+
open: number;
|
|
8
|
+
close: number;
|
|
9
|
+
};
|
|
10
|
+
/** 市场分时 session 配置(几何 / 标签共用) */
|
|
11
|
+
export type MarketSessionConfig = {
|
|
12
|
+
/** IANA 时区,如 Asia/Shanghai */
|
|
13
|
+
timeZone: string;
|
|
14
|
+
sessions: ReadonlyArray<OpenTimeRange>;
|
|
15
|
+
/** 每个 bar 槽对应的分钟数,默认 1 */
|
|
16
|
+
slotMinutes?: number;
|
|
17
|
+
};
|
|
18
|
+
export type SessionTimeLabel = {
|
|
19
|
+
/** 自 0 点起的分钟数(交易所墙钟) */
|
|
20
|
+
minuteOfDay: number;
|
|
21
|
+
/** 在展开后的槽序列中的索引(0-based) */
|
|
22
|
+
slotIndex: number;
|
|
23
|
+
/** 是否为闭侧端点 */
|
|
24
|
+
isEndpoint: boolean;
|
|
25
|
+
};
|
|
26
|
+
export type SessionTimeLabelOptions = {
|
|
27
|
+
axisWidth: number;
|
|
28
|
+
/** 保留字段,端点-only 模式下不参与密度计算 */
|
|
29
|
+
minLabelSpacingPx?: number;
|
|
30
|
+
};
|
|
31
|
+
/** A 股默认 */
|
|
32
|
+
export declare const ASHARE_OPEN_SESSIONS: readonly OpenTimeRange[];
|
|
33
|
+
export declare const ASHARE_MARKET_SESSION: MarketSessionConfig;
|
|
34
|
+
/** 港股 */
|
|
35
|
+
export declare const HK_MARKET_SESSION: MarketSessionConfig;
|
|
36
|
+
/** 美股(常规盘,无午休) */
|
|
37
|
+
export declare const US_MARKET_SESSION: MarketSessionConfig;
|
|
38
|
+
/**
|
|
39
|
+
* 只输出各区间闭侧端点。
|
|
40
|
+
* - 非末段 [open, close):仅 open
|
|
41
|
+
* - 末段 [open, close]:open 与 close
|
|
42
|
+
* close 标签映射到 close-1 槽(bar 序列为各段 [open, close))。
|
|
43
|
+
*/
|
|
44
|
+
export declare function computeSessionTimeLabels(sessions: ReadonlyArray<OpenTimeRange>, options: SessionTimeLabelOptions): SessionTimeLabel[];
|
|
45
|
+
/** 槽总数(各段 [open, close) 分钟数之和;未除 slotMinutes) */
|
|
46
|
+
export declare function countSessionSlots(sessions: ReadonlyArray<OpenTimeRange>): number;
|
|
47
|
+
/**
|
|
48
|
+
* 全天 bar 槽数 = 分钟总和 / slotMinutes。
|
|
49
|
+
* sessions 为 SSOT,不因 arrivedCount 放大。
|
|
50
|
+
*/
|
|
51
|
+
export declare function resolveMarketSessionSlots(config: MarketSessionConfig, _arrivedCount?: number): number;
|
|
52
|
+
/**
|
|
53
|
+
* 将交易所墙钟 minuteOfDay 转为 UTC 毫秒。
|
|
54
|
+
* baseTimestamp 用于确定「哪一天」(按 timeZone 日历日)。
|
|
55
|
+
*/
|
|
56
|
+
export declare function minuteOfDayToTimestamp(baseTimestamp: number, minuteOfDay: number, timeZone?: string): number;
|
|
57
|
+
/** 槽中心 X */
|
|
58
|
+
export declare function sessionSlotCenterX(slotIndex: number, axisWidth: number, sessionSlots: number, dpr: number): number;
|
|
59
|
+
//# sourceMappingURL=sessionTimeLabels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionTimeLabels.d.ts","sourceRoot":"","sources":["../../../src/foundation/utils/sessionTimeLabels.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,iCAAiC;AACjC,MAAM,MAAM,mBAAmB,GAAG;IAChC,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IACtC,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc;IACd,UAAU,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,8BAA8B;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAMD,YAAY;AACZ,eAAO,MAAM,oBAAoB,EAAE,SAAS,aAAa,EAGxD,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,mBAInC,CAAA;AAED,SAAS;AACT,eAAO,MAAM,iBAAiB,EAAE,mBAO/B,CAAA;AAED,kBAAkB;AAClB,eAAO,MAAM,iBAAiB,EAAE,mBAI/B,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,EACtC,OAAO,EAAE,uBAAuB,GAC/B,gBAAgB,EAAE,CAkCpB;AAED,iDAAiD;AACjD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,MAAM,CAMhF;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,mBAAmB,EAC3B,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM,CAIR;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,QAAQ,GAAE,MAAwB,GACjC,MAAM,CAGR;AAED,YAAY;AACZ,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,MAAM,GACV,MAAM,CAIR"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
function hm(h, m) {
|
|
2
|
+
return h * 60 + m;
|
|
3
|
+
}
|
|
4
|
+
/** A 股默认 */
|
|
5
|
+
export const ASHARE_OPEN_SESSIONS = [
|
|
6
|
+
{ open: hm(9, 30), close: hm(11, 30) },
|
|
7
|
+
{ open: hm(13, 0), close: hm(15, 0) },
|
|
8
|
+
];
|
|
9
|
+
export const ASHARE_MARKET_SESSION = {
|
|
10
|
+
timeZone: 'Asia/Shanghai',
|
|
11
|
+
sessions: ASHARE_OPEN_SESSIONS,
|
|
12
|
+
slotMinutes: 1,
|
|
13
|
+
};
|
|
14
|
+
/** 港股 */
|
|
15
|
+
export const HK_MARKET_SESSION = {
|
|
16
|
+
timeZone: 'Asia/Hong_Kong',
|
|
17
|
+
sessions: [
|
|
18
|
+
{ open: hm(9, 30), close: hm(12, 0) },
|
|
19
|
+
{ open: hm(13, 0), close: hm(16, 0) },
|
|
20
|
+
],
|
|
21
|
+
slotMinutes: 1,
|
|
22
|
+
};
|
|
23
|
+
/** 美股(常规盘,无午休) */
|
|
24
|
+
export const US_MARKET_SESSION = {
|
|
25
|
+
timeZone: 'America/New_York',
|
|
26
|
+
sessions: [{ open: hm(9, 30), close: hm(16, 0) }],
|
|
27
|
+
slotMinutes: 1,
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* 只输出各区间闭侧端点。
|
|
31
|
+
* - 非末段 [open, close):仅 open
|
|
32
|
+
* - 末段 [open, close]:open 与 close
|
|
33
|
+
* close 标签映射到 close-1 槽(bar 序列为各段 [open, close))。
|
|
34
|
+
*/
|
|
35
|
+
export function computeSessionTimeLabels(sessions, options) {
|
|
36
|
+
if (!(options.axisWidth > 0) || sessions.length === 0)
|
|
37
|
+
return [];
|
|
38
|
+
const labels = [];
|
|
39
|
+
let slotOffset = 0;
|
|
40
|
+
for (let s = 0; s < sessions.length; s++) {
|
|
41
|
+
const range = sessions[s];
|
|
42
|
+
if (!(range.close > range.open))
|
|
43
|
+
continue;
|
|
44
|
+
const slotCount = range.close - range.open;
|
|
45
|
+
const isLast = s === sessions.length - 1;
|
|
46
|
+
labels.push({
|
|
47
|
+
minuteOfDay: range.open,
|
|
48
|
+
slotIndex: slotOffset,
|
|
49
|
+
isEndpoint: true,
|
|
50
|
+
});
|
|
51
|
+
if (isLast) {
|
|
52
|
+
labels.push({
|
|
53
|
+
minuteOfDay: range.close,
|
|
54
|
+
slotIndex: slotOffset + slotCount - 1,
|
|
55
|
+
isEndpoint: true,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
slotOffset += slotCount;
|
|
59
|
+
}
|
|
60
|
+
const bySlot = new Map();
|
|
61
|
+
for (const label of labels) {
|
|
62
|
+
bySlot.set(label.slotIndex, label);
|
|
63
|
+
}
|
|
64
|
+
return [...bySlot.values()].sort((a, b) => a.slotIndex - b.slotIndex);
|
|
65
|
+
}
|
|
66
|
+
/** 槽总数(各段 [open, close) 分钟数之和;未除 slotMinutes) */
|
|
67
|
+
export function countSessionSlots(sessions) {
|
|
68
|
+
let n = 0;
|
|
69
|
+
for (const r of sessions) {
|
|
70
|
+
if (r.close > r.open)
|
|
71
|
+
n += r.close - r.open;
|
|
72
|
+
}
|
|
73
|
+
return n;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* 全天 bar 槽数 = 分钟总和 / slotMinutes。
|
|
77
|
+
* sessions 为 SSOT,不因 arrivedCount 放大。
|
|
78
|
+
*/
|
|
79
|
+
export function resolveMarketSessionSlots(config, _arrivedCount) {
|
|
80
|
+
const minutes = countSessionSlots(config.sessions);
|
|
81
|
+
const step = config.slotMinutes && config.slotMinutes > 0 ? config.slotMinutes : 1;
|
|
82
|
+
return Math.max(0, Math.floor(minutes / step));
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* 将交易所墙钟 minuteOfDay 转为 UTC 毫秒。
|
|
86
|
+
* baseTimestamp 用于确定「哪一天」(按 timeZone 日历日)。
|
|
87
|
+
*/
|
|
88
|
+
export function minuteOfDayToTimestamp(baseTimestamp, minuteOfDay, timeZone = 'Asia/Shanghai') {
|
|
89
|
+
const { year, month, day } = getCalendarPartsInTimeZone(baseTimestamp, timeZone);
|
|
90
|
+
return zonedWallTimeToUtc(year, month, day, minuteOfDay, timeZone);
|
|
91
|
+
}
|
|
92
|
+
/** 槽中心 X */
|
|
93
|
+
export function sessionSlotCenterX(slotIndex, axisWidth, sessionSlots, dpr) {
|
|
94
|
+
if (!(axisWidth > 0) || !(sessionSlots > 0))
|
|
95
|
+
return 0;
|
|
96
|
+
const step = axisWidth / sessionSlots;
|
|
97
|
+
return Math.round((slotIndex + 0.5) * step * dpr) / dpr;
|
|
98
|
+
}
|
|
99
|
+
// ── 时区工具(无第三方依赖,Intl) ──
|
|
100
|
+
function getCalendarPartsInTimeZone(timestamp, timeZone) {
|
|
101
|
+
const parts = new Intl.DateTimeFormat('en-US', {
|
|
102
|
+
timeZone,
|
|
103
|
+
year: 'numeric',
|
|
104
|
+
month: '2-digit',
|
|
105
|
+
day: '2-digit',
|
|
106
|
+
}).formatToParts(new Date(timestamp));
|
|
107
|
+
let year = 0;
|
|
108
|
+
let month = 1;
|
|
109
|
+
let day = 1;
|
|
110
|
+
for (const p of parts) {
|
|
111
|
+
if (p.type === 'year')
|
|
112
|
+
year = Number(p.value);
|
|
113
|
+
else if (p.type === 'month')
|
|
114
|
+
month = Number(p.value);
|
|
115
|
+
else if (p.type === 'day')
|
|
116
|
+
day = Number(p.value);
|
|
117
|
+
}
|
|
118
|
+
return { year, month, day };
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* 将某时区墙钟 (y-m-d + minuteOfDay) 转为 UTC epoch。
|
|
122
|
+
* 用迭代修正 UTC 猜测,覆盖 DST。
|
|
123
|
+
*/
|
|
124
|
+
function zonedWallTimeToUtc(year, month, day, minuteOfDay, timeZone) {
|
|
125
|
+
const hour = Math.floor(minuteOfDay / 60);
|
|
126
|
+
const minute = minuteOfDay % 60;
|
|
127
|
+
// 初值:当作 UTC 墙钟
|
|
128
|
+
let utc = Date.UTC(year, month - 1, day, hour, minute, 0, 0);
|
|
129
|
+
for (let i = 0; i < 4; i++) {
|
|
130
|
+
const wall = getWallClockInTimeZone(utc, timeZone);
|
|
131
|
+
const desiredMin = hour * 60 + minute;
|
|
132
|
+
const actualMin = wall.hour * 60 + wall.minute;
|
|
133
|
+
const dayDelta = Date.UTC(year, month - 1, day) - Date.UTC(wall.year, wall.month - 1, wall.day);
|
|
134
|
+
const minDelta = desiredMin - actualMin + dayDelta / 60_000;
|
|
135
|
+
if (minDelta === 0)
|
|
136
|
+
break;
|
|
137
|
+
utc += minDelta * 60_000;
|
|
138
|
+
}
|
|
139
|
+
return utc;
|
|
140
|
+
}
|
|
141
|
+
function getWallClockInTimeZone(timestamp, timeZone) {
|
|
142
|
+
const parts = new Intl.DateTimeFormat('en-US', {
|
|
143
|
+
timeZone,
|
|
144
|
+
year: 'numeric',
|
|
145
|
+
month: '2-digit',
|
|
146
|
+
day: '2-digit',
|
|
147
|
+
hour: '2-digit',
|
|
148
|
+
minute: '2-digit',
|
|
149
|
+
hourCycle: 'h23',
|
|
150
|
+
}).formatToParts(new Date(timestamp));
|
|
151
|
+
let year = 0;
|
|
152
|
+
let month = 1;
|
|
153
|
+
let day = 1;
|
|
154
|
+
let hour = 0;
|
|
155
|
+
let minute = 0;
|
|
156
|
+
for (const p of parts) {
|
|
157
|
+
if (p.type === 'year')
|
|
158
|
+
year = Number(p.value);
|
|
159
|
+
else if (p.type === 'month')
|
|
160
|
+
month = Number(p.value);
|
|
161
|
+
else if (p.type === 'day')
|
|
162
|
+
day = Number(p.value);
|
|
163
|
+
else if (p.type === 'hour')
|
|
164
|
+
hour = Number(p.value);
|
|
165
|
+
else if (p.type === 'minute')
|
|
166
|
+
minute = Number(p.value);
|
|
167
|
+
}
|
|
168
|
+
return { year, month, day, hour, minute };
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=sessionTimeLabels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionTimeLabels.js","sourceRoot":"","sources":["../../../src/foundation/utils/sessionTimeLabels.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ASHARE_MARKET_SESSION, ASHARE_OPEN_SESSIONS, computeSessionTimeLabels, countSessionSlots, minuteOfDayToTimestamp, resolveMarketSessionSlots, sessionSlotCenterX, type MarketSessionConfig, type SessionTimeLabel } from './sessionTimeLabels';
|
|
2
|
+
/** A 股默认全天 1 分钟槽位数(兼容旧导出) */
|
|
3
|
+
export declare const ASHARE_TIMESHARE_SESSION_SLOTS: number;
|
|
4
|
+
/** 分时时间标签最小水平间距(逻辑像素) */
|
|
5
|
+
export declare const TIMESHARE_MIN_LABEL_SPACING_PX = 56;
|
|
6
|
+
export type TimeShareTimeLabelInput = {
|
|
7
|
+
axisWidth: number;
|
|
8
|
+
/** 市场 session;默认 A 股 */
|
|
9
|
+
marketSession?: MarketSessionConfig;
|
|
10
|
+
minLabelSpacingPx?: number;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* 分时时间标签索引(委托 computeSessionTimeLabels)。
|
|
14
|
+
* 默认 A 股;传入 marketSession 可换港股/美股等。
|
|
15
|
+
*/
|
|
16
|
+
export declare function computeTimeShareTimeLabelIndices(input: TimeShareTimeLabelInput): number[];
|
|
17
|
+
/** 完整标签(含 minuteOfDay / isEndpoint) */
|
|
18
|
+
export declare function computeTimeShareTimeLabels(input: TimeShareTimeLabelInput): SessionTimeLabel[];
|
|
19
|
+
export declare function timeShareSlotCenterX(slotIndex: number, axisWidth: number, sessionSlots: number, dpr: number): number;
|
|
20
|
+
/**
|
|
21
|
+
* 由开盘日基准时间戳 + slot 索引推算标签时间(按 market session)。
|
|
22
|
+
*/
|
|
23
|
+
export declare function resolveTimeShareSlotTimestamp(baseTimestamp: number, slotIndex: number, marketSession?: MarketSessionConfig): number;
|
|
24
|
+
export { ASHARE_MARKET_SESSION, ASHARE_OPEN_SESSIONS, computeSessionTimeLabels, countSessionSlots, minuteOfDayToTimestamp, resolveMarketSessionSlots, sessionSlotCenterX, };
|
|
25
|
+
export type { MarketSessionConfig, OpenTimeRange, SessionTimeLabel, } from './sessionTimeLabels';
|
|
26
|
+
export { HK_MARKET_SESSION, US_MARKET_SESSION } from './sessionTimeLabels';
|
|
27
|
+
//# sourceMappingURL=timeShareAxisLabels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeShareAxisLabels.d.ts","sourceRoot":"","sources":["../../../src/foundation/utils/timeShareAxisLabels.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAA;AAE5B,6BAA6B;AAC7B,eAAO,MAAM,8BAA8B,QAAmD,CAAA;AAE9F,yBAAyB;AACzB,eAAO,MAAM,8BAA8B,KAAK,CAAA;AAEhD,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,wBAAwB;IACxB,aAAa,CAAC,EAAE,mBAAmB,CAAA;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,EAAE,CAEzF;AAED,uCAAuC;AACvC,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,uBAAuB,GAAG,gBAAgB,EAAE,CAM7F;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,MAAM,GACV,MAAM,CAER;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,aAAa,GAAE,mBAA2C,GACzD,MAAM,CAmBR;AAED,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,GACnB,CAAA;AACD,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,gBAAgB,GACjB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ASHARE_MARKET_SESSION, ASHARE_OPEN_SESSIONS, computeSessionTimeLabels, countSessionSlots, minuteOfDayToTimestamp, resolveMarketSessionSlots, sessionSlotCenterX, } from './sessionTimeLabels';
|
|
2
|
+
/** A 股默认全天 1 分钟槽位数(兼容旧导出) */
|
|
3
|
+
export const ASHARE_TIMESHARE_SESSION_SLOTS = resolveMarketSessionSlots(ASHARE_MARKET_SESSION);
|
|
4
|
+
/** 分时时间标签最小水平间距(逻辑像素) */
|
|
5
|
+
export const TIMESHARE_MIN_LABEL_SPACING_PX = 56;
|
|
6
|
+
/**
|
|
7
|
+
* 分时时间标签索引(委托 computeSessionTimeLabels)。
|
|
8
|
+
* 默认 A 股;传入 marketSession 可换港股/美股等。
|
|
9
|
+
*/
|
|
10
|
+
export function computeTimeShareTimeLabelIndices(input) {
|
|
11
|
+
return computeTimeShareTimeLabels(input).map((l) => l.slotIndex);
|
|
12
|
+
}
|
|
13
|
+
/** 完整标签(含 minuteOfDay / isEndpoint) */
|
|
14
|
+
export function computeTimeShareTimeLabels(input) {
|
|
15
|
+
const market = input.marketSession ?? ASHARE_MARKET_SESSION;
|
|
16
|
+
return computeSessionTimeLabels(market.sessions, {
|
|
17
|
+
axisWidth: input.axisWidth,
|
|
18
|
+
minLabelSpacingPx: input.minLabelSpacingPx ?? TIMESHARE_MIN_LABEL_SPACING_PX,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
export function timeShareSlotCenterX(slotIndex, axisWidth, sessionSlots, dpr) {
|
|
22
|
+
return sessionSlotCenterX(slotIndex, axisWidth, sessionSlots, dpr);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 由开盘日基准时间戳 + slot 索引推算标签时间(按 market session)。
|
|
26
|
+
*/
|
|
27
|
+
export function resolveTimeShareSlotTimestamp(baseTimestamp, slotIndex, marketSession = ASHARE_MARKET_SESSION) {
|
|
28
|
+
const step = marketSession.slotMinutes && marketSession.slotMinutes > 0 ? marketSession.slotMinutes : 1;
|
|
29
|
+
let remaining = slotIndex * step;
|
|
30
|
+
for (const range of marketSession.sessions) {
|
|
31
|
+
const len = range.close - range.open;
|
|
32
|
+
if (remaining < len) {
|
|
33
|
+
return minuteOfDayToTimestamp(baseTimestamp, range.open + remaining, marketSession.timeZone);
|
|
34
|
+
}
|
|
35
|
+
remaining -= len;
|
|
36
|
+
}
|
|
37
|
+
const last = marketSession.sessions[marketSession.sessions.length - 1];
|
|
38
|
+
if (last) {
|
|
39
|
+
return minuteOfDayToTimestamp(baseTimestamp, last.close, marketSession.timeZone);
|
|
40
|
+
}
|
|
41
|
+
return baseTimestamp;
|
|
42
|
+
}
|
|
43
|
+
export { ASHARE_MARKET_SESSION, ASHARE_OPEN_SESSIONS, computeSessionTimeLabels, countSessionSlots, minuteOfDayToTimestamp, resolveMarketSessionSlots, sessionSlotCenterX, };
|
|
44
|
+
export { HK_MARKET_SESSION, US_MARKET_SESSION } from './sessionTimeLabels';
|
|
45
|
+
//# sourceMappingURL=timeShareAxisLabels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeShareAxisLabels.js","sourceRoot":"","sources":["../../../src/foundation/utils/timeShareAxisLabels.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,GAGnB,MAAM,qBAAqB,CAAA;AAE5B,6BAA6B;AAC7B,MAAM,CAAC,MAAM,8BAA8B,GAAG,yBAAyB,CAAC,qBAAqB,CAAC,CAAA;AAE9F,yBAAyB;AACzB,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,CAAA;AAShD;;;GAGG;AACH,MAAM,UAAU,gCAAgC,CAAC,KAA8B;IAC7E,OAAO,0BAA0B,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;AAClE,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,0BAA0B,CAAC,KAA8B;IACvE,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,IAAI,qBAAqB,CAAA;IAC3D,OAAO,wBAAwB,CAAC,MAAM,CAAC,QAAQ,EAAE;QAC/C,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,IAAI,8BAA8B;KAC7E,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,SAAiB,EACjB,SAAiB,EACjB,YAAoB,EACpB,GAAW;IAEX,OAAO,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,CAAC,CAAA;AACpE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAC3C,aAAqB,EACrB,SAAiB,EACjB,gBAAqC,qBAAqB;IAE1D,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,IAAI,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;IACvG,IAAI,SAAS,GAAG,SAAS,GAAG,IAAI,CAAA;IAChC,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;QACpC,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC;YACpB,OAAO,sBAAsB,CAC3B,aAAa,EACb,KAAK,CAAC,IAAI,GAAG,SAAS,EACtB,aAAa,CAAC,QAAQ,CACvB,CAAA;QACH,CAAC;QACD,SAAS,IAAI,GAAG,CAAA;IAClB,CAAC;IACD,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACtE,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,sBAAsB,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;IAClF,CAAC;IACD,OAAO,aAAa,CAAA;AACtB,CAAC;AAED,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,GACnB,CAAA;AAMD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.9.0-alpha.
|
|
1
|
+
export declare const VERSION = "0.9.0-alpha.5";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = '0.9.0-alpha.
|
|
1
|
+
export const VERSION = '0.9.0-alpha.5';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
package/src/controllers/index.ts
CHANGED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest'
|
|
2
|
+
|
|
3
|
+
import { TimeShareBuffer } from '../timeShareBuffer'
|
|
4
|
+
import type { TimeShareData } from '../../foundation/types/price'
|
|
5
|
+
|
|
6
|
+
function point(price: number, ts = 1): TimeShareData {
|
|
7
|
+
return { timestamp: ts, price, average: price, volume: 1, amount: price }
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
describe('TimeShareBuffer', () => {
|
|
11
|
+
it('stores and returns preClose metadata', () => {
|
|
12
|
+
const buf = new TimeShareBuffer()
|
|
13
|
+
expect(buf.getPreClose()).toBeNull()
|
|
14
|
+
buf.setPreClose(10.5)
|
|
15
|
+
expect(buf.getPreClose()).toBe(10.5)
|
|
16
|
+
buf.setPreClose(null)
|
|
17
|
+
expect(buf.getPreClose()).toBeNull()
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
it('clears previous points when a new load starts (no stale date flash)', async () => {
|
|
21
|
+
const buf = new TimeShareBuffer()
|
|
22
|
+
buf.setInlineData([point(10), point(11)])
|
|
23
|
+
expect(buf.getRawData()).toHaveLength(2)
|
|
24
|
+
|
|
25
|
+
let resolveFetch!: (v: ReadonlyArray<TimeShareData>) => void
|
|
26
|
+
const pending = new Promise<ReadonlyArray<TimeShareData>>((resolve) => {
|
|
27
|
+
resolveFetch = resolve
|
|
28
|
+
})
|
|
29
|
+
buf.setFetcher(async () => pending)
|
|
30
|
+
buf.setQueryDate(20260101)
|
|
31
|
+
buf.load({ symbol: '000001', period: 'timeshare', source: 'gotdx' })
|
|
32
|
+
|
|
33
|
+
// 新 load 开始后旧点应被清空,避免显示另一天数据
|
|
34
|
+
expect(buf.getRawData()).toEqual([])
|
|
35
|
+
expect(buf.loading.peek()).toBe(true)
|
|
36
|
+
|
|
37
|
+
resolveFetch([point(12), point(13)])
|
|
38
|
+
await vi.waitFor(() => {
|
|
39
|
+
expect(buf.getRawData()).toHaveLength(2)
|
|
40
|
+
})
|
|
41
|
+
expect(buf.getRawData()[0]?.price).toBe(12)
|
|
42
|
+
expect(buf.loading.peek()).toBe(false)
|
|
43
|
+
buf.dispose()
|
|
44
|
+
})
|
|
45
|
+
})
|
|
@@ -21,6 +21,8 @@ export class TimeShareBuffer implements DataBufferLike {
|
|
|
21
21
|
private _fetcher: TimeShareFetcherFn | null = null
|
|
22
22
|
// 指定查询的历史日期(0 = 当天)
|
|
23
23
|
private _queryDate = 0
|
|
24
|
+
// 昨收价(分时涨跌基准);未设置时为 null
|
|
25
|
+
private _preClose: number | null = null
|
|
24
26
|
// 请求序号,每次 load() 递增
|
|
25
27
|
private _requestSeq = 0
|
|
26
28
|
// 当前运行的 fetch Fiber 句柄,用于随时中断旧请求
|
|
@@ -64,6 +66,16 @@ export class TimeShareBuffer implements DataBufferLike {
|
|
|
64
66
|
return this._queryDate
|
|
65
67
|
}
|
|
66
68
|
|
|
69
|
+
getPreClose(): number | null {
|
|
70
|
+
return this._preClose
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
setPreClose(preClose: number | null): void {
|
|
74
|
+
if (preClose === null || (Number.isFinite(preClose) && preClose !== 0)) {
|
|
75
|
+
this._preClose = preClose
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
67
79
|
load(spec: SymbolSpec): void {
|
|
68
80
|
if (this._disposed) return
|
|
69
81
|
|
|
@@ -73,6 +85,9 @@ export class TimeShareBuffer implements DataBufferLike {
|
|
|
73
85
|
}
|
|
74
86
|
|
|
75
87
|
const requestSeq = ++this._requestSeq
|
|
88
|
+
// 新请求开始即清空旧点,避免历史日期切换时短暂显示另一天数据
|
|
89
|
+
this._data = []
|
|
90
|
+
this._dataSignal.set({ data: [], prependedCount: 0 })
|
|
76
91
|
this._loadingSignal.set(true)
|
|
77
92
|
|
|
78
93
|
const timeShareService: {
|