fix: 일목 구름 zOrder·배치 후 갱신 및 잘못된 기간 파라미터 복원

프로덕션에서 구름이 다른 primitive/시리즈에 가려지지 않도록 bottom zOrder를 적용하고,
지표 배치·재로드 후 구름 데이터를 다시 적용한다. DB에 1로 저장된 기간은 기본값으로 복원한다.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Macbook
2026-06-02 23:36:12 +09:00
parent 9c620b32e2
commit c6976a2e03
3 changed files with 20 additions and 1 deletions
+11
View File
@@ -854,6 +854,16 @@ export class ChartManager {
}
if (configs.length > 0) {
this._finalizeIndicatorPaneLayout();
this._refreshAllIchimokuClouds();
}
}
/** 배치 로드 후 구름 데이터·렌더 갱신 (다른 오버레이 추가로 primitive 순서가 바뀐 경우 대비) */
private _refreshAllIchimokuClouds(): void {
for (const entry of this.indicators.values()) {
if (entry.type !== 'IchimokuCloud' || !entry.cloudPlugin || !entry.config) continue;
this._applyIchimokuCloudPlugin(entry.cloudPlugin, {}, entry.config);
entry.cloudPlugin.updateAllViews();
}
}
@@ -919,6 +929,7 @@ export class ChartManager {
if (this._indicatorLoadStale(loadGen)) return;
this._finalizeIndicatorPaneLayout();
this._refreshAllIchimokuClouds();
}
removeIndicator(id: string): void {
@@ -123,6 +123,9 @@ class CloudPaneView implements IPrimitivePaneView {
this._plugin.getBearishVisible(),
);
}
/** BB·RSI 영역 등 다른 primitive/시리즈보다 아래에 그려 구름이 가려지지 않게 함 */
zOrder(): 'bottom' { return 'bottom'; }
}
// ─── Plugin ────────────────────────────────────────────────────────────────
@@ -169,6 +172,10 @@ export class IchimokuCloudPlugin implements ISeriesPrimitive<Time> {
getBullishVisible() { return this._bullishVisible; }
getBearishVisible() { return this._bearishVisible; }
updateAllViews(): void {
this._updateFn?.();
}
paneViews(): readonly IPrimitivePaneView[] {
if (!this._chart || !this._series) return [];
return [new CloudPaneView(this)];
+2 -1
View File
@@ -152,7 +152,8 @@ export function normalizeIchimokuConfig(config: IndicatorConfig): IndicatorConfi
};
for (const key of Object.keys(ICHIMOKU_DEFAULT_PARAMS)) {
const v = params[key];
if (typeof v !== 'number' || v < 1) {
// DB에 1로 저장된 잘못된 값은 spanA≈spanB → 구름 높이 0
if (typeof v !== 'number' || v < 2) {
params[key] = ICHIMOKU_DEFAULT_PARAMS[key];
}
}