Add collapsible archive stats charts and calendar sections.

Show win rate ring, PnL and sick bars, exchange breakdown, hold-time comparison, and cumulative curve below the stats table; wrap the trading calendar in a foldable panel.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-10 11:49:09 +08:00
parent d1ab2d5172
commit f3af6e2a53
3 changed files with 345 additions and 8 deletions
+143
View File
@@ -7211,6 +7211,149 @@ body.funds-fullscreen-open {
.archive-stats-table tr.archive-stats-total td {
background: color-mix(in srgb, var(--accent) 6%, transparent);
}
.archive-stats-table .pnl-neg {
color: var(--loss);
}
.archive-stats-viz-section {
margin-top: 10px;
}
.archive-stats-charts {
display: flex;
flex-direction: column;
gap: 10px;
padding-top: 4px;
}
.archive-viz-grid {
display: grid;
grid-template-columns: auto 1fr;
gap: 10px 14px;
align-items: center;
}
.archive-viz-ring-wrap {
display: flex;
flex-direction: column;
align-items: center;
gap: 4px;
}
.archive-viz-ring {
--win-pct: 0;
width: 68px;
height: 68px;
border-radius: 50%;
background: conic-gradient(
var(--profit) 0 calc(var(--win-pct) * 1%),
var(--loss) calc(var(--win-pct) * 1%) 100%
);
display: flex;
align-items: center;
justify-content: center;
position: relative;
}
.archive-viz-ring::before {
content: "";
position: absolute;
inset: 8px;
border-radius: 50%;
background: var(--inset-surface);
}
.archive-viz-ring-label {
position: relative;
z-index: 1;
font-size: 0.82rem;
font-weight: 700;
font-variant-numeric: tabular-nums;
}
.archive-viz-caption,
.archive-viz-block-title {
font-size: 0.66rem;
color: var(--muted);
}
.archive-viz-block-title {
margin-bottom: 4px;
}
.archive-viz-bars,
.archive-viz-block {
display: flex;
flex-direction: column;
gap: 6px;
min-width: 0;
}
.archive-viz-bar-row {
display: grid;
grid-template-columns: 2.4em 1fr auto;
gap: 6px;
align-items: center;
font-size: 0.72rem;
}
.archive-viz-bar-row .k {
opacity: 0.85;
}
.archive-viz-bar-row .v {
font-size: 0.7rem;
font-weight: 600;
white-space: nowrap;
}
.archive-viz-bar-track {
height: 8px;
border-radius: 999px;
background: rgba(255, 255, 255, 0.06);
overflow: hidden;
}
.archive-viz-bar-fill {
height: 100%;
width: 0;
border-radius: 999px;
transition: width 0.25s ease;
}
.archive-viz-bar-fill--profit {
background: linear-gradient(90deg, #2f9f62, var(--profit));
}
.archive-viz-bar-fill--loss {
background: linear-gradient(90deg, #c44a4a, var(--loss));
}
.archive-viz-bar-fill--sick {
background: linear-gradient(90deg, #9b59b6, #c084fc);
}
.archive-viz-empty {
margin: 0;
font-size: 0.72rem;
}
.archive-cum-head {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
margin-bottom: 4px;
}
.archive-cum-end {
font-size: 0.78rem;
font-weight: 700;
font-variant-numeric: tabular-nums;
}
.archive-cum-chart {
width: 100%;
height: 88px;
display: block;
border-radius: 8px;
background: rgba(0, 0, 0, 0.12);
}
.archive-cum-zero {
stroke: rgba(255, 255, 255, 0.12);
stroke-width: 1;
}
.archive-cum-line {
fill: none;
stroke: #5b8cff;
stroke-width: 2;
stroke-linejoin: round;
stroke-linecap: round;
}
.archive-calendar-section {
margin-bottom: 10px;
}
.archive-calendar-section .trade-cal-wrap {
margin-top: 8px;
}
.archive-stats-table .pnl-pos {
color: #22c55e;
}