feat: two-level entry model UI for trend accounts (reversal/trend/swing)

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-06 19:02:18 +08:00
parent eb6788091d
commit ff1bcd69d2
14 changed files with 289 additions and 146 deletions
@@ -1,52 +1,5 @@
<script>
const JOURNAL_ENTRY_REASON_OPTIONS = {{ entry_reason_options | tojson }};
const ORDER_ENTRY_MODEL_TRADE_STYLE = {{ entry_model_trade_style_map | tojson }};
function tradeStyleForEntryModelSelect(sel){
if(!sel || !sel.value) return "trend";
var opt = sel.options[sel.selectedIndex];
if(opt){
var ds = opt.getAttribute("data-trade-style");
if(ds === "swing" || ds === "trend") return ds;
}
return (ORDER_ENTRY_MODEL_TRADE_STYLE && ORDER_ENTRY_MODEL_TRADE_STYLE[sel.value]) || "trend";
}
function syncOrderEntryModelTradeStyle(){
var sel = document.getElementById("order-entry-model");
var hidden = document.getElementById("order-trade-style-hidden");
var hint = document.getElementById("order-trade-style-hint");
if(!sel || !hidden) return;
var labels = { trend: "趋势单", swing: "波段单" };
var ts = tradeStyleForEntryModelSelect(sel);
hidden.value = ts;
if(hint) hint.textContent = labels[ts] || ts;
}
function paintOrderLeverageHint(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";
}
function initOrderEntryModelSelect(root){
var scope = (root && root.querySelector) ? root : document;
var sel = scope.querySelector ? scope.querySelector("#order-entry-model") : document.getElementById("order-entry-model");
if(!sel) return;
if(sel.dataset.entryModelWired !== "1"){
sel.dataset.entryModelWired = "1";
sel.addEventListener("change", syncOrderEntryModelTradeStyle);
}
syncOrderEntryModelTradeStyle();
}
window.syncOrderEntryModelTradeStyle = syncOrderEntryModelTradeStyle;
window.paintOrderLeverageHint = paintOrderLeverageHint;
window.initOrderEntryModelSelect = initOrderEntryModelSelect;
function reloadInstancePage(){
if(document.body && document.body.getAttribute("data-embed-shell") === "1" && window.InstanceEmbed){