fix: 일목 구름 zOrder·배치 후 갱신 및 잘못된 기간 파라미터 복원
프로덕션에서 구름이 다른 primitive/시리즈에 가려지지 않도록 bottom zOrder를 적용하고, 지표 배치·재로드 후 구름 데이터를 다시 적용한다. DB에 1로 저장된 기간은 기본값으로 복원한다. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -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)];
|
||||
|
||||
@@ -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];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user