(function (global) { function categoriesData() { return global.ORDER_ENTRY_MODEL_CATEGORIES || []; } function codeToCategoryMap() { return global.ORDER_ENTRY_MODEL_CODE_TO_CATEGORY || {}; } function tradeStyleForCode(code) { var map = global.ORDER_ENTRY_MODEL_TRADE_STYLE || {}; return map[code] || "trend"; } function findOption(catKey, code) { var cats = categoriesData(); for (var i = 0; i < cats.length; i++) { if (cats[i].key !== catKey) continue; var opts = cats[i].options || []; for (var j = 0; j < opts.length; j++) { if (opts[j].code === code) return opts[j]; } } return null; } function rebuildEntryModelSubSelect(preserveCode) { var catSel = document.getElementById("order-entry-category"); var modelSel = document.getElementById("order-entry-model"); if (!catSel || !modelSel) return; var catKey = catSel.value; var cats = categoriesData(); var cat = null; for (var i = 0; i < cats.length; i++) { if (cats[i].key === catKey) { cat = cats[i]; break; } } modelSel.innerHTML = ""; var placeholder = document.createElement("option"); placeholder.value = ""; placeholder.textContent = "类型"; modelSel.appendChild(placeholder); if (!cat || !cat.options || !cat.options.length) { modelSel.disabled = true; modelSel.value = ""; syncOrderEntryModelTradeStyle(); return; } modelSel.disabled = false; var pick = preserveCode || ""; for (var k = 0; k < cat.options.length; k++) { var o = cat.options[k]; var opt = document.createElement("option"); opt.value = o.code; opt.textContent = o.label; if (o.trade_style) opt.setAttribute("data-trade-style", o.trade_style); if (o.help) opt.title = o.help; modelSel.appendChild(opt); } if (pick && findOption(catKey, pick)) { modelSel.value = pick; } else if (cat.options.length === 1) { modelSel.value = cat.options[0].code; } else { modelSel.value = ""; } syncOrderEntryModelTradeStyle(); } function syncOrderEntryModelTradeStyle() { var modelSel = document.getElementById("order-entry-model"); var hidden = document.getElementById("order-trade-style-hidden"); var hint = document.getElementById("order-trade-style-hint"); if (!modelSel || !hidden) return; var labels = { trend: "趋势单", swing: "波段单" }; var code = modelSel.value || ""; var ts = tradeStyleForCode(code); hidden.value = ts; if (hint) hint.textContent = labels[ts] || ts; } function initOrderEntryModelSelect(root) { var scope = root && root.querySelector ? root : document; var catSel = scope === document ? document.getElementById("order-entry-category") : scope.querySelector("#order-entry-category"); var modelSel = scope === document ? document.getElementById("order-entry-model") : scope.querySelector("#order-entry-model"); if (!catSel || !modelSel) return; if (catSel.dataset.entryModelWired !== "1") { catSel.dataset.entryModelWired = "1"; catSel.addEventListener("change", function () { rebuildEntryModelSubSelect(""); }); } if (modelSel.dataset.entryModelWired !== "1") { modelSel.dataset.entryModelWired = "1"; modelSel.addEventListener("change", syncOrderEntryModelTradeStyle); } var presetCode = modelSel.getAttribute("data-preset-code") || modelSel.value || ""; if (presetCode) { var catMap = codeToCategoryMap(); var catKey = catMap[presetCode]; if (catKey) { catSel.value = catKey; rebuildEntryModelSubSelect(presetCode); return; } } rebuildEntryModelSubSelect(""); } global.paintOrderLeverageHint = function (leverage) { var hidden = document.getElementById("order-leverage"); var hint = document.getElementById("order-leverage-hint"); if (!hidden && !hint) return; var lev = parseInt(leverage, 10); if (!Number.isFinite(lev) || lev <= 0) { if (hint) hint.textContent = "杠杆 —"; if (hidden) hidden.value = ""; return; } if (hidden) hidden.value = String(lev); if (hint) hint.textContent = "杠杆 " + lev + "x"; }; global.initOrderEntryModelSelect = initOrderEntryModelSelect; global.syncOrderEntryModelTradeStyle = syncOrderEntryModelTradeStyle; global.rebuildEntryModelSubSelect = rebuildEntryModelSubSelect; document.addEventListener("DOMContentLoaded", function () { initOrderEntryModelSelect(); }); })(typeof window !== "undefined" ? window : globalThis);