Hub market: add option expiry Friday yellow dashed splits.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-20 16:16:38 +08:00
parent 221e8c3cad
commit 10ee7614b5
3 changed files with 90 additions and 2 deletions
+30
View File
@@ -197,9 +197,11 @@
const elPrevCloseLine = document.getElementById("market-prev-close-line");
const elPrevHlLines = document.getElementById("market-prev-hl-lines");
const elDaySplit = document.getElementById("market-day-split");
const elOptionExpirySplit = document.getElementById("market-option-expiry-split");
const PREV_CLOSE_LINE_STORAGE_KEY = "hub-market-prev-close-line";
const PREV_HL_LINES_STORAGE_KEY = "hub-market-prev-hl-lines";
const DAY_SPLIT_STORAGE_KEY = "hub-market-day-split";
const OPTION_EXPIRY_SPLIT_STORAGE_KEY = "hub-market-option-expiry-split";
const BJ_OFFSET_SEC = 8 * 60 * 60;
const elFsToolbar = document.getElementById("market-fs-toolbar");
const elFsExchange = document.getElementById("market-fs-exchange");
@@ -342,6 +344,14 @@
saveBoolPref(DAY_SPLIT_STORAGE_KEY, on);
}
function loadOptionExpirySplitPref() {
return loadBoolPref(OPTION_EXPIRY_SPLIT_STORAGE_KEY, false);
}
function saveOptionExpirySplitPref(on) {
saveBoolPref(OPTION_EXPIRY_SPLIT_STORAGE_KEY, on);
}
function loadPrevCloseLinePref() {
return loadBoolPref(PREV_CLOSE_LINE_STORAGE_KEY, false);
}
@@ -456,6 +466,18 @@
applyTradingDaySplit(on);
}
function applyOptionExpirySplit(enabled) {
if (window.HubChartDraw && typeof window.HubChartDraw.setOptionExpirySplit === "function") {
window.HubChartDraw.setOptionExpirySplit(enabled);
}
}
function syncOptionExpirySplitUi() {
const on = !!(elOptionExpirySplit && elOptionExpirySplit.checked);
saveOptionExpirySplitPref(on);
applyOptionExpirySplit(on);
}
function ensureDrawLayer() {
if (drawAttached || !window.HubChartDraw || !chart || !candleSeries) return;
window.HubChartDraw.attach({
@@ -471,6 +493,9 @@
});
window.HubChartDraw.setViewKey(currentChartViewKey());
applyTradingDaySplit(elDaySplit ? elDaySplit.checked : loadDaySplitPref());
applyOptionExpirySplit(
elOptionExpirySplit ? elOptionExpirySplit.checked : loadOptionExpirySplitPref()
);
drawAttached = true;
}
@@ -3481,6 +3506,11 @@
elDaySplit.addEventListener("change", syncTradingDaySplitUi);
applyTradingDaySplit(elDaySplit.checked);
}
if (elOptionExpirySplit) {
elOptionExpirySplit.checked = loadOptionExpirySplitPref();
elOptionExpirySplit.addEventListener("change", syncOptionExpirySplitUi);
applyOptionExpirySplit(elOptionExpirySplit.checked);
}
const pageMarket = document.getElementById("page-market");
const fsKeyTargets = [window, pageMarket, elChartWrap, chartHost].filter(Boolean);
fsKeyTargets.forEach(function (el) {