feat: collapse trade/strategy rule tips and color-code key history outcomes
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -19,6 +19,16 @@
|
||||
.key-row-collapse-body .pos-meta{margin-top:10px;margin-bottom:10px}
|
||||
.key-row-collapse-body .pos-grid{margin-bottom:8px}
|
||||
.key-history-alert{font-size:.75rem;color:#aab;margin-top:8px;margin-bottom:2px;padding-bottom:4px;white-space:pre-wrap;word-break:break-word;line-height:1.5}
|
||||
.key-history-outcome-badge{font-size:.7rem;font-weight:600;padding:1px 7px;border-radius:4px;line-height:1.35}
|
||||
.key-row-collapse.key-history-success{border-color:rgba(76,217,127,.42);background:rgba(18,32,26,.92)}
|
||||
.key-row-collapse.key-history-success .key-row-collapse-summary{color:#c8f0d6}
|
||||
.key-row-collapse.key-history-success .key-row-summary-title strong{color:#e8fff0}
|
||||
.key-row-collapse.key-history-success .key-history-brief,.key-row-collapse.key-history-success .key-history-outcome-badge{color:#4cd97f;background:rgba(76,217,127,.12);border:1px solid rgba(76,217,127,.28)}
|
||||
.key-row-collapse.key-history-manual{border-color:rgba(136,146,176,.45);background:rgba(22,24,32,.95)}
|
||||
.key-row-collapse.key-history-manual .key-history-brief,.key-row-collapse.key-history-manual .key-history-outcome-badge{color:#9aa8c4;background:rgba(136,146,176,.12);border:1px solid rgba(136,146,176,.28)}
|
||||
.key-row-collapse.key-history-failed{border-color:rgba(232,160,144,.4);background:rgba(36,22,24,.95)}
|
||||
.key-row-collapse.key-history-failed .key-row-collapse-summary{color:#e8cfc8}
|
||||
.key-row-collapse.key-history-failed .key-history-brief,.key-row-collapse.key-history-failed .key-history-outcome-badge{color:#e8a090;background:rgba(232,160,144,.1);border:1px solid rgba(232,160,144,.28)}
|
||||
</style>
|
||||
|
||||
{% macro key_direction_label(k) -%}
|
||||
@@ -35,8 +45,34 @@
|
||||
{%- if k.breakeven_enabled %} · 保本开{% else %} · 保本关{% endif %}
|
||||
{%- endmacro %}
|
||||
|
||||
{% macro key_history_outcome_kind(h) -%}
|
||||
{%- set r = (h.close_reason or '')|trim -%}
|
||||
{%- if r in ['fib_filled', 'false_breakout_filled', 'key_level_alert_done', 'alerts_complete', 'auto_opened'] -%}success
|
||||
{%- elif r == 'manual' -%}manual
|
||||
{%- elif r -%}failed
|
||||
{%- else -%}neutral
|
||||
{%- endif -%}
|
||||
{%- endmacro %}
|
||||
|
||||
{% macro key_history_outcome_label(h) -%}
|
||||
{%- set r = (h.close_reason or '')|trim -%}
|
||||
{%- if r == 'fib_filled' -%}斐波成交
|
||||
{%- elif r == 'false_breakout_filled' -%}假突破成交
|
||||
{%- elif r == 'key_level_alert_done' -%}提醒完成
|
||||
{%- elif r == 'alerts_complete' -%}提醒已满
|
||||
{%- elif r == 'auto_opened' -%}自动开仓
|
||||
{%- elif r == 'manual' -%}手动删除
|
||||
{%- elif r == 'fib_invalidate' -%}斐波失效
|
||||
{%- elif r == 'false_breakout_expired' -%}假突破过期
|
||||
{%- elif r == 'fib_plan_invalid' -%}计划无效
|
||||
{%- elif r == 'rr_insufficient' -%}盈亏比不足
|
||||
{%- elif r == 'exchange_failed' -%}下单失败
|
||||
{%- else -%}{{ r or '—' }}
|
||||
{%- endif -%}
|
||||
{%- endmacro %}
|
||||
|
||||
{% macro key_history_brief(h) -%}
|
||||
{{ h.close_reason or '—' }} · {{ (h.closed_at or '-')[:16] }} · 上{{ h.upper }} / 下{{ h.lower }} · 提醒 {{ h.notification_count or 0 }}
|
||||
{{ key_history_outcome_label(h) }} · {{ (h.closed_at or '-')[:16] }} · 上{{ h.upper }} / 下{{ h.lower }} · 提醒 {{ h.notification_count or 0 }}
|
||||
{%- endmacro %}
|
||||
|
||||
<div class="dual-panel-grid" style="grid-column:1/-1">
|
||||
@@ -133,13 +169,14 @@
|
||||
<div class="sub" style="font-size:.72rem;color:#8892b0;margin-bottom:8px">失效或已结案的关键位 · 点击展开详情</div>
|
||||
<div class="panel-scroll pos-list key-panel-scroll">
|
||||
{% for h in key_history %}
|
||||
<details class="key-row-collapse">
|
||||
<details class="key-row-collapse key-history-{{ key_history_outcome_kind(h) }}">
|
||||
<summary class="key-row-collapse-summary">
|
||||
<span class="key-row-summary-main">
|
||||
<span class="key-row-summary-title">
|
||||
<strong>{{ h.symbol }}</strong>
|
||||
<span class="pos-side-badge {{ 'pos-side-long' if h.direction == 'long' else 'pos-side-short' }}">{{ key_direction_label(h) }}</span>
|
||||
<span class="badge direction">{{ h.monitor_type }}</span>
|
||||
<span class="key-history-outcome-badge">{{ key_history_outcome_label(h) }}</span>
|
||||
</span>
|
||||
</span>
|
||||
<span class="key-row-summary-actions">
|
||||
@@ -150,7 +187,7 @@
|
||||
<div class="key-row-summary-line key-history-brief">{{ key_history_brief(h) }}</div>
|
||||
<div class="pos-meta">
|
||||
<span class="pos-meta-item">类型: {{ h.monitor_type }}</span>
|
||||
<span class="pos-meta-item">结案: {{ h.close_reason or '—' }}</span>
|
||||
<span class="pos-meta-item">结案: {{ key_history_outcome_label(h) }}{% if h.close_reason %} ({{ h.close_reason }}){% endif %}</span>
|
||||
<span class="pos-meta-item">时间: {{ h.closed_at or '—' }}</span>
|
||||
</div>
|
||||
<div class="pos-meta">
|
||||
|
||||
Reference in New Issue
Block a user