ec-web 0.0.4 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/server.js +63 -6
- package/dist/sources/msg.js +371 -14
- package/dist/sources/session-codex.js +115 -35
- package/dist/sources/session-origin.js +195 -0
- package/dist/sources/session.js +292 -41
- package/dist/sources/transcript-window.js +35 -0
- package/dist/static/app.js +456 -62
- package/dist/static/index.html +4 -5
- package/dist/static/style.css +153 -63
- package/dist/static/vendor/echarts-5.6.0.min.js +45 -0
- package/package.json +2 -2
package/dist/static/index.html
CHANGED
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
})();
|
|
17
17
|
</script>
|
|
18
18
|
<link rel="stylesheet" href="style.css">
|
|
19
|
-
<script src="
|
|
19
|
+
<script defer src="vendor/echarts-5.6.0.min.js"></script>
|
|
20
|
+
<script defer src="app.js"></script>
|
|
20
21
|
</head>
|
|
21
22
|
<body>
|
|
22
23
|
<!-- 配对页 -->
|
|
@@ -47,7 +48,7 @@
|
|
|
47
48
|
|
|
48
49
|
</nav>
|
|
49
50
|
<span style="flex:1"></span>
|
|
50
|
-
2026-07-
|
|
51
|
+
2026-07-31 00:38
|
|
51
52
|
<span id="conn-status" class="conn-status" data-i18n="status.connecting">连接中…</span>
|
|
52
53
|
<button id="lang-btn" class="theme-btn" data-i18n-title="language.buttonTitle" title="切换语言">🌐</button>
|
|
53
54
|
<button id="theme-btn" class="theme-btn" data-i18n-title="theme.buttonTitle" title="主题">🌗</button>
|
|
@@ -183,7 +184,7 @@
|
|
|
183
184
|
</select>
|
|
184
185
|
</label>
|
|
185
186
|
</div>
|
|
186
|
-
<div id="detail-result" style="margin-top:12px;
|
|
187
|
+
<div id="detail-result" style="margin-top:12px;">
|
|
187
188
|
<table id="detail-table" class="usage-table"></table>
|
|
188
189
|
</div>
|
|
189
190
|
<div class="detail-pagination">
|
|
@@ -251,7 +252,6 @@
|
|
|
251
252
|
<option value="month" data-i18n="usage.explorer.filter.granularity.month">Month</option>
|
|
252
253
|
</select>
|
|
253
254
|
</label>
|
|
254
|
-
<button id="exp-query-btn" data-i18n="action.query">Query</button>
|
|
255
255
|
</div>
|
|
256
256
|
|
|
257
257
|
<div id="usage-explorer-chart" class="usage-chart" style="height:260px"></div>
|
|
@@ -381,6 +381,5 @@
|
|
|
381
381
|
</main>
|
|
382
382
|
</div>
|
|
383
383
|
|
|
384
|
-
<script src="app.js"></script>
|
|
385
384
|
</body>
|
|
386
385
|
</html>
|
package/dist/static/style.css
CHANGED
|
@@ -313,6 +313,7 @@ tr:hover td { background: var(--bg2); }
|
|
|
313
313
|
.msg-peers { width: 240px; border-right: 1px solid var(--border); flex-shrink: 0; }
|
|
314
314
|
.msg-stream { flex: 1; padding: 0; }
|
|
315
315
|
.msg-stream-body { padding: 12px; }
|
|
316
|
+
.msg-load-more, .sess-load-more { display: block; margin: 0 auto 14px; }
|
|
316
317
|
.list-item {
|
|
317
318
|
padding: 8px 12px; cursor: pointer; border-bottom: 1px solid var(--border);
|
|
318
319
|
}
|
|
@@ -359,6 +360,28 @@ tr:hover td { background: var(--bg2); }
|
|
|
359
360
|
.bubble.in .body { background: var(--user-bubble-bg); border-left: 2px solid var(--green); }
|
|
360
361
|
.bubble.out .body { border-left: 2px solid var(--blue); }
|
|
361
362
|
.msg-tag { display: inline-block; padding: 0 5px; border-radius: 3px; font-size: 10px; margin-left: 4px; background: var(--bg3); color: var(--magenta); font-weight: 400; line-height: 1.4; vertical-align: baseline; }
|
|
363
|
+
.msg-tag.msg-channel {
|
|
364
|
+
color: var(--msg-channel-color);
|
|
365
|
+
background: color-mix(in srgb, var(--msg-channel-color) 12%, transparent);
|
|
366
|
+
box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--msg-channel-color) 20%, transparent);
|
|
367
|
+
font-weight: 500;
|
|
368
|
+
}
|
|
369
|
+
.msg-channel-aun { --msg-channel-color: #7655a6; }
|
|
370
|
+
.msg-channel-wechat { --msg-channel-color: #277a58; }
|
|
371
|
+
.msg-channel-wecom { --msg-channel-color: #1c7582; }
|
|
372
|
+
.msg-channel-feishu { --msg-channel-color: #376aa4; }
|
|
373
|
+
.msg-channel-dingtalk { --msg-channel-color: #2f7392; }
|
|
374
|
+
.msg-channel-qqbot { --msg-channel-color: #8b681f; }
|
|
375
|
+
.msg-channel-daemon,
|
|
376
|
+
.msg-channel-other { --msg-channel-color: #5f6f82; }
|
|
377
|
+
[data-theme="dark"] .msg-channel-aun { --msg-channel-color: #c3a6ea; }
|
|
378
|
+
[data-theme="dark"] .msg-channel-wechat { --msg-channel-color: #6bc99a; }
|
|
379
|
+
[data-theme="dark"] .msg-channel-wecom { --msg-channel-color: #63c4ce; }
|
|
380
|
+
[data-theme="dark"] .msg-channel-feishu { --msg-channel-color: #82b4e8; }
|
|
381
|
+
[data-theme="dark"] .msg-channel-dingtalk { --msg-channel-color: #79b9d6; }
|
|
382
|
+
[data-theme="dark"] .msg-channel-qqbot { --msg-channel-color: #d6b65f; }
|
|
383
|
+
[data-theme="dark"] .msg-channel-daemon,
|
|
384
|
+
[data-theme="dark"] .msg-channel-other { --msg-channel-color: #a8b6c6; }
|
|
362
385
|
|
|
363
386
|
.msg-session-header { height: 44px; min-height: 44px; padding: 12px 16px; box-sizing: border-box; z-index: 2; }
|
|
364
387
|
.msg-session-header .sh-title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
@@ -379,7 +402,7 @@ tr:hover td { background: var(--bg2); }
|
|
|
379
402
|
/* ── Sessions ── */
|
|
380
403
|
.sess-list { width: 360px; border-right: 1px solid var(--border); flex-shrink: 0; display: flex; flex-direction: column; overflow: hidden; }
|
|
381
404
|
.sess-filter { padding: 10px; border-bottom: 1px solid var(--border); display: flex; flex-direction: column; gap: 8px; flex-shrink: 0; }
|
|
382
|
-
.sess-select-row { display: grid; grid-template-columns:
|
|
405
|
+
.sess-select-row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
|
|
383
406
|
.sess-filter-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 24px; }
|
|
384
407
|
.sess-filter select {
|
|
385
408
|
width: 100%; padding: 6px 8px; background: var(--bg); color: var(--fg);
|
|
@@ -402,6 +425,12 @@ tr:hover td { background: var(--bg2); }
|
|
|
402
425
|
.bind-badge { display: inline-flex; align-items: center; gap: 3px; padding: 0 5px; border-radius: 3px; background: var(--bg3); color: var(--accent); font-size: 10px; }
|
|
403
426
|
.bind-badge .dot { width: 6px; height: 6px; margin: 0; }
|
|
404
427
|
.msg-count { color: var(--dim); }
|
|
428
|
+
.session-source-badge { display: inline-flex; align-items: center; min-height: 16px; padding: 0 5px; border-radius: 3px; background: var(--bg3); font-size: 10px; font-weight: 600; }
|
|
429
|
+
.session-source-badge.source-trigger { color: var(--orange); }
|
|
430
|
+
.session-source-badge.source-agent { color: var(--green); }
|
|
431
|
+
.session-source-badge.source-cli { color: var(--fg); }
|
|
432
|
+
.session-source-badge.source-user { color: var(--blue); }
|
|
433
|
+
.session-source-badge.source-unknown { color: var(--dim); }
|
|
405
434
|
|
|
406
435
|
.sess-detail { flex: 1; padding: 0; overflow-y: auto; }
|
|
407
436
|
|
|
@@ -426,6 +455,7 @@ tr:hover td { background: var(--bg2); }
|
|
|
426
455
|
.cat-chip.cat-tool_call .cat-swatch { background: var(--magenta); }
|
|
427
456
|
.cat-chip.cat-tool_result .cat-swatch { background: var(--orange); }
|
|
428
457
|
.cat-chip.cat-msg_send .cat-swatch { background: var(--cyan, #22d3a8); }
|
|
458
|
+
.cat-chip.cat-subtask .cat-swatch { background: var(--accent); }
|
|
429
459
|
|
|
430
460
|
/* 视图切换位于会话信息栏内,不额外占用纵向空间 */
|
|
431
461
|
.view-toggle { height: 26px; padding: 2px 11px; border-radius: 13px; border: 1px solid var(--border); background: var(--bg3); color: var(--fg); cursor: pointer; font-size: 12px; line-height: 1; font-family: inherit; white-space: nowrap; transition: background .16s ease, border-color .16s ease, color .16s ease; }
|
|
@@ -467,6 +497,7 @@ tr:hover td { background: var(--bg2); }
|
|
|
467
497
|
.turn.cat-model_output { border-left-color: var(--blue); }
|
|
468
498
|
.turn.cat-tool_call { border-left-color: var(--magenta); }
|
|
469
499
|
.turn.cat-tool_result { border-left-color: var(--orange); }
|
|
500
|
+
.turn.cat-subtask { border-left-color: var(--accent); }
|
|
470
501
|
.turn.cat-system { border-left-color: var(--dim); }
|
|
471
502
|
|
|
472
503
|
.turn-head { display: flex; align-items: baseline; gap: 10px; margin-bottom: 6px; }
|
|
@@ -475,6 +506,7 @@ tr:hover td { background: var(--bg2); }
|
|
|
475
506
|
.turn.cat-model_output .turn-role { color: var(--blue); }
|
|
476
507
|
.turn.cat-tool_call .turn-role { color: var(--magenta); }
|
|
477
508
|
.turn.cat-tool_result .turn-role { color: var(--orange); }
|
|
509
|
+
.turn.cat-subtask .turn-role { color: var(--accent); }
|
|
478
510
|
.turn.cat-system .turn-role { color: var(--dim); }
|
|
479
511
|
.turn-time { font-size: 11px; color: var(--dim); }
|
|
480
512
|
.turn-usage { font-size: 11px; color: var(--dim); margin-left: auto; }
|
|
@@ -492,7 +524,9 @@ tr:hover td { background: var(--bg2); }
|
|
|
492
524
|
.blk-tool { background: var(--bg2); border: 1px solid var(--border); border-radius: 8px; padding: 8px 10px; }
|
|
493
525
|
.tool-head { cursor: pointer; font-size: 12px; }
|
|
494
526
|
.blk-tool[open] .tool-head { margin-bottom: 4px; }
|
|
495
|
-
.tool-params
|
|
527
|
+
.tool-params { --collapse-fade-bg: var(--bg2); }
|
|
528
|
+
.tool-params-body { --collapse-preview-lines: 12; line-height: 1.5; }
|
|
529
|
+
.tool-params-body.is-collapsed { max-height: calc(var(--collapse-preview-lines) * 1.5em); }
|
|
496
530
|
.tool-name { font-weight: 600; color: var(--accent); font-family: ui-monospace, "SF Mono", Consolas, monospace; }
|
|
497
531
|
.tool-param { display: flex; gap: 8px; margin-top: 3px; font-size: 12px; align-items: baseline; }
|
|
498
532
|
.tool-param .pk { color: var(--dim); flex-shrink: 0; min-width: 64px; }
|
|
@@ -502,17 +536,73 @@ tr:hover td { background: var(--bg2); }
|
|
|
502
536
|
white-space: pre-wrap; display: block; flex: 1;
|
|
503
537
|
}
|
|
504
538
|
|
|
505
|
-
/*
|
|
539
|
+
/* 长结果与模型输出共用的折叠交互 */
|
|
506
540
|
.blk-result { font-size: 12px; }
|
|
507
541
|
.blk-result summary { cursor: pointer; color: var(--dim); }
|
|
508
542
|
.blk-result.err summary { color: var(--red); }
|
|
543
|
+
.collapse-content { position: relative; }
|
|
544
|
+
.result-content { --collapse-fade-bg: var(--bg); margin-top: 6px; }
|
|
545
|
+
.collapse-content::after {
|
|
546
|
+
content: ''; position: absolute; right: 0; bottom: 0; left: 0; height: 36px;
|
|
547
|
+
display: none; pointer-events: none;
|
|
548
|
+
background: linear-gradient(to bottom, transparent, var(--collapse-fade-bg, var(--bg)));
|
|
549
|
+
}
|
|
550
|
+
.result-content::after { right: 1px; bottom: 1px; left: 1px; }
|
|
551
|
+
.collapse-content.is-collapsed::after { display: block; }
|
|
552
|
+
.collapse-body { overflow: hidden; transition: max-height .26s cubic-bezier(.2, .75, .25, 1); }
|
|
509
553
|
.result-body {
|
|
510
|
-
|
|
511
|
-
|
|
554
|
+
--collapse-preview-lines: 12;
|
|
555
|
+
padding: 8px 10px; background: var(--bg); border: 1px solid var(--border);
|
|
556
|
+
border-radius: 6px; white-space: pre-wrap; word-break: break-word;
|
|
512
557
|
font-family: ui-monospace, "SF Mono", Consolas, monospace; font-size: 11.5px; line-height: 1.5;
|
|
513
558
|
}
|
|
559
|
+
.result-body.is-collapsed {
|
|
560
|
+
max-height: calc(var(--collapse-preview-lines) * 1.5em + 16px);
|
|
561
|
+
}
|
|
562
|
+
.model-output-body,
|
|
563
|
+
.user-input-body {
|
|
564
|
+
--collapse-preview-lines: 12;
|
|
565
|
+
white-space: pre-wrap; word-break: break-word; line-height: 1.55;
|
|
566
|
+
}
|
|
567
|
+
.model-output-body.is-collapsed,
|
|
568
|
+
.user-input-body.is-collapsed { max-height: calc(var(--collapse-preview-lines) * 1.55em); }
|
|
569
|
+
.chat-bubble.model-output-content { --collapse-fade-bg: var(--bg3); }
|
|
570
|
+
.chat-bubble.user-input-content { --collapse-fade-bg: var(--user-bubble-bg); }
|
|
571
|
+
.collapse-arrow-toggle {
|
|
572
|
+
position: absolute; bottom: 0; left: 42%; z-index: 1; display: inline-flex;
|
|
573
|
+
align-items: center; justify-content: center; width: 18px; height: 18px; padding: 0;
|
|
574
|
+
border: 0; border-radius: 50%; background: var(--collapse-fade-bg, var(--bg)); color: var(--dim); cursor: pointer;
|
|
575
|
+
box-shadow: 0 0 0 1px var(--collapse-fade-bg, var(--bg));
|
|
576
|
+
transition: color .16s ease, transform .16s ease;
|
|
577
|
+
}
|
|
578
|
+
.collapse-arrow-toggle:hover { color: var(--fg); }
|
|
579
|
+
.collapse-arrow-toggle:active { transform: translateY(1px); }
|
|
580
|
+
.collapse-arrow-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
581
|
+
.collapse-arrow-icon {
|
|
582
|
+
width: 6px; height: 6px; margin-top: -2px; border-right: 1.5px solid currentColor;
|
|
583
|
+
border-bottom: 1.5px solid currentColor; transform: rotate(45deg); transform-origin: center;
|
|
584
|
+
transition: transform .22s cubic-bezier(.2, .75, .25, 1);
|
|
585
|
+
}
|
|
586
|
+
.collapse-arrow-toggle[aria-expanded="true"] .collapse-arrow-icon { transform: rotate(225deg); }
|
|
514
587
|
.blk-result.err .result-body { border-color: var(--red); }
|
|
515
588
|
|
|
589
|
+
@media (prefers-reduced-motion: reduce) {
|
|
590
|
+
.collapse-body, .collapse-arrow-toggle, .collapse-arrow-icon { transition: none; }
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
/* Runner 子任务:每个 task 聚合成一个实时更新的生命周期条目 */
|
|
594
|
+
.blk-subtask { padding: 9px 11px; border: 1px solid var(--border); border-radius: 6px; background: var(--bg2); }
|
|
595
|
+
.subtask-main { display: grid; grid-template-columns: 8px max-content minmax(0, 1fr); align-items: center; gap: 8px; min-width: 0; }
|
|
596
|
+
.subtask-status-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--orange); }
|
|
597
|
+
.status-completed .subtask-status-dot { background: var(--green); }
|
|
598
|
+
.status-failed .subtask-status-dot,
|
|
599
|
+
.status-killed .subtask-status-dot { background: var(--red); }
|
|
600
|
+
.status-stopped .subtask-status-dot { background: var(--dim); }
|
|
601
|
+
.subtask-status { color: var(--dim); font-size: 11px; white-space: nowrap; }
|
|
602
|
+
.subtask-title { min-width: 0; overflow-wrap: anywhere; color: var(--fg); font-size: 12px; font-weight: 600; }
|
|
603
|
+
.subtask-meta { display: flex; flex-wrap: wrap; gap: 6px; margin: 5px 0 0 16px; color: var(--dim); font-size: 11px; }
|
|
604
|
+
.subtask-progress { margin: 6px 0 0 16px; color: var(--dim); font-size: 12px; line-height: 1.45; overflow-wrap: anywhere; }
|
|
605
|
+
|
|
516
606
|
/* ── Cache 视图 ── */
|
|
517
607
|
#view-cache { padding: 16px 18px; }
|
|
518
608
|
.cache-cards {
|
|
@@ -564,39 +654,51 @@ tr:hover td { background: var(--bg2); }
|
|
|
564
654
|
.usage-subpanel.active { display: flex; flex-direction: column; }
|
|
565
655
|
#usage-overview { overflow-y: auto; padding: 16px; }
|
|
566
656
|
.overview-filters {
|
|
657
|
+
display: flex;
|
|
658
|
+
align-items: center;
|
|
659
|
+
gap: 10px;
|
|
660
|
+
flex-wrap: wrap;
|
|
567
661
|
margin-bottom: 16px;
|
|
568
662
|
padding: 12px;
|
|
569
663
|
background: var(--bg2);
|
|
570
664
|
border: 1px solid var(--border);
|
|
571
665
|
border-radius: 8px;
|
|
572
666
|
}
|
|
573
|
-
.ov-range-tabs
|
|
667
|
+
.ov-range-tabs,
|
|
668
|
+
.exp-range-tabs {
|
|
574
669
|
display: flex;
|
|
575
|
-
gap:
|
|
670
|
+
gap: 2px;
|
|
671
|
+
width: fit-content;
|
|
672
|
+
max-width: 100%;
|
|
673
|
+
padding: 2px;
|
|
576
674
|
flex-wrap: wrap;
|
|
577
|
-
}
|
|
578
|
-
.ov-range-btn {
|
|
579
|
-
padding: 6px 14px;
|
|
580
|
-
font-size: 12px;
|
|
581
|
-
border: 1px solid var(--border);
|
|
582
675
|
background: var(--bg3);
|
|
583
|
-
|
|
676
|
+
border-radius: 6px;
|
|
677
|
+
}
|
|
678
|
+
.ov-range-btn,
|
|
679
|
+
.exp-range-btn {
|
|
680
|
+
padding: 4px 12px;
|
|
681
|
+
border: none;
|
|
584
682
|
border-radius: 5px;
|
|
683
|
+
background: transparent;
|
|
684
|
+
color: var(--dim);
|
|
585
685
|
cursor: pointer;
|
|
586
|
-
|
|
686
|
+
font-family: inherit;
|
|
687
|
+
font-size: 12px;
|
|
688
|
+
font-weight: 600;
|
|
689
|
+
line-height: 1.4;
|
|
690
|
+
white-space: nowrap;
|
|
691
|
+
transition: background .16s ease, color .16s ease;
|
|
587
692
|
}
|
|
588
|
-
.ov-range-btn:hover
|
|
589
|
-
|
|
693
|
+
.ov-range-btn:hover,
|
|
694
|
+
.exp-range-btn:hover { color: var(--fg); }
|
|
695
|
+
.ov-range-btn.active,
|
|
696
|
+
.exp-range-btn.active {
|
|
697
|
+
background: var(--bg2);
|
|
590
698
|
color: var(--accent);
|
|
591
699
|
}
|
|
592
|
-
.ov-range-btn.active {
|
|
593
|
-
background: var(--accent);
|
|
594
|
-
color: white;
|
|
595
|
-
border-color: var(--accent);
|
|
596
|
-
}
|
|
597
700
|
.ov-custom-date {
|
|
598
701
|
display: none;
|
|
599
|
-
margin-top: 12px;
|
|
600
702
|
gap: 10px;
|
|
601
703
|
align-items: center;
|
|
602
704
|
}
|
|
@@ -1111,6 +1213,13 @@ tr.ag-disabled .ag-name { color: var(--dim); }
|
|
|
1111
1213
|
border-color: var(--accent);
|
|
1112
1214
|
box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 14%, transparent);
|
|
1113
1215
|
}
|
|
1216
|
+
.trig-baseagent-note {
|
|
1217
|
+
margin: -2px 0 12px;
|
|
1218
|
+
color: #c56600;
|
|
1219
|
+
font-size: 11px;
|
|
1220
|
+
line-height: 1.35;
|
|
1221
|
+
}
|
|
1222
|
+
[data-theme="dark"] .trig-baseagent-note { color: #f0a24a; }
|
|
1114
1223
|
.ag-edit-channel-list {
|
|
1115
1224
|
display: flex;
|
|
1116
1225
|
flex-direction: column;
|
|
@@ -1446,6 +1555,8 @@ tr.ag-disabled .ag-name { color: var(--dim); }
|
|
|
1446
1555
|
.ag-msg .text-out { color: var(--msg-out); font-weight: 500; }
|
|
1447
1556
|
.ag-msg .mtag { display: inline-block; padding: 0 4px; margin: 0 2px; border-radius: 3px; font-size: 10px; background: var(--bg3); color: var(--magenta); vertical-align: middle; }
|
|
1448
1557
|
.ag-msg .mtag-reply { color: var(--green); font-weight: 700; }
|
|
1558
|
+
/* 渠道标:非 AUN 渠道才渲染,用冷色和消息标记区分开 */
|
|
1559
|
+
.ag-msg .mtag-channel { color: var(--blue); font-weight: 600; }
|
|
1449
1560
|
.ag-msg .mtags { color: var(--magenta); font-size: 10.5px; }
|
|
1450
1561
|
.ag-path { font-family: ui-monospace, Consolas, monospace; font-size: 10.5px; color: var(--dim); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 70vw; }
|
|
1451
1562
|
|
|
@@ -1460,6 +1571,7 @@ tr.ag-disabled .ag-name { color: var(--dim); }
|
|
|
1460
1571
|
.tip-kind { margin: 0 2px; font-weight: 600; }
|
|
1461
1572
|
.tip-kind-reply { color: var(--green); font-weight: 700; }
|
|
1462
1573
|
.tip-flag { margin: 0 2px; padding: 0 4px; border-radius: 3px; background: var(--bg3); color: var(--magenta); font-size: 10.5px; }
|
|
1574
|
+
.tip-flag-channel { color: var(--blue); font-weight: 600; }
|
|
1463
1575
|
.tip-row b { color: var(--orange); font-weight: 600; }
|
|
1464
1576
|
|
|
1465
1577
|
|
|
@@ -1948,55 +2060,28 @@ tr.ag-disabled .ag-name { color: var(--dim); }
|
|
|
1948
2060
|
|
|
1949
2061
|
/* ── Explorer time filters (类似总览的时间选择) ── */
|
|
1950
2062
|
.exp-time-filters {
|
|
2063
|
+
display: flex;
|
|
2064
|
+
align-items: center;
|
|
2065
|
+
gap: 10px;
|
|
2066
|
+
flex-wrap: wrap;
|
|
1951
2067
|
margin-bottom: 16px;
|
|
1952
2068
|
padding: 12px;
|
|
1953
|
-
background: var(--
|
|
2069
|
+
background: var(--bg2);
|
|
1954
2070
|
border-radius: 8px;
|
|
1955
2071
|
border: 1px solid var(--border);
|
|
1956
2072
|
}
|
|
1957
2073
|
|
|
1958
|
-
.exp-range-tabs {
|
|
1959
|
-
display: flex;
|
|
1960
|
-
gap: 8px;
|
|
1961
|
-
flex-wrap: wrap;
|
|
1962
|
-
margin-bottom: 8px;
|
|
1963
|
-
}
|
|
1964
|
-
|
|
1965
|
-
.exp-range-btn {
|
|
1966
|
-
padding: 6px 12px;
|
|
1967
|
-
font-size: 12px;
|
|
1968
|
-
border: 1px solid var(--border);
|
|
1969
|
-
background: var(--bg2);
|
|
1970
|
-
color: var(--fg);
|
|
1971
|
-
border-radius: 6px;
|
|
1972
|
-
cursor: pointer;
|
|
1973
|
-
transition: all 0.2s;
|
|
1974
|
-
}
|
|
1975
|
-
|
|
1976
|
-
.exp-range-btn:hover {
|
|
1977
|
-
background: var(--bg3);
|
|
1978
|
-
border-color: var(--accent);
|
|
1979
|
-
}
|
|
1980
|
-
|
|
1981
|
-
.exp-range-btn.active {
|
|
1982
|
-
background: var(--accent);
|
|
1983
|
-
color: white;
|
|
1984
|
-
border-color: var(--accent);
|
|
1985
|
-
}
|
|
1986
|
-
|
|
1987
2074
|
.exp-custom-date {
|
|
1988
2075
|
display: flex;
|
|
1989
|
-
gap:
|
|
1990
|
-
align-items:
|
|
2076
|
+
gap: 10px;
|
|
2077
|
+
align-items: center;
|
|
1991
2078
|
flex-wrap: wrap;
|
|
1992
|
-
padding-top: 8px;
|
|
1993
|
-
border-top: 1px solid var(--border);
|
|
1994
2079
|
}
|
|
1995
2080
|
|
|
1996
2081
|
.exp-custom-date label {
|
|
1997
2082
|
display: flex;
|
|
1998
|
-
|
|
1999
|
-
gap:
|
|
2083
|
+
align-items: center;
|
|
2084
|
+
gap: 6px;
|
|
2000
2085
|
font-size: 12px;
|
|
2001
2086
|
color: var(--dim);
|
|
2002
2087
|
}
|
|
@@ -2026,6 +2111,11 @@ tr.ag-disabled .ag-name { color: var(--dim); }
|
|
|
2026
2111
|
opacity: 0.9;
|
|
2027
2112
|
}
|
|
2028
2113
|
|
|
2114
|
+
@media (max-width: 720px) {
|
|
2115
|
+
.ov-custom-date,
|
|
2116
|
+
.exp-custom-date { flex-basis: 100%; }
|
|
2117
|
+
}
|
|
2118
|
+
|
|
2029
2119
|
/* ── Explorer filters (优化后的样式) ── */
|
|
2030
2120
|
.explorer-filters {
|
|
2031
2121
|
display: flex;
|
|
@@ -2034,7 +2124,7 @@ tr.ag-disabled .ag-name { color: var(--dim); }
|
|
|
2034
2124
|
flex-wrap: wrap;
|
|
2035
2125
|
margin-bottom: 16px;
|
|
2036
2126
|
padding: 12px;
|
|
2037
|
-
background: var(--
|
|
2127
|
+
background: var(--bg2);
|
|
2038
2128
|
border-radius: 8px;
|
|
2039
2129
|
border: 1px solid var(--border);
|
|
2040
2130
|
}
|
|
@@ -2161,14 +2251,14 @@ tr.ag-disabled .ag-name { color: var(--dim); }
|
|
|
2161
2251
|
.mon-toolbar { display: flex; align-items: center; gap: 12px; flex-shrink: 0; }
|
|
2162
2252
|
.mon-toolbar-label { font-size: 12px; color: var(--dim); font-weight: 500; }
|
|
2163
2253
|
.mon-range-tabs { display: flex; gap: 2px; background: var(--bg3); border-radius: 6px; padding: 2px; }
|
|
2164
|
-
.mon-range { padding: 4px 12px; border: none; background: none; border-radius: 5px; font-size: 12px; font-
|
|
2254
|
+
.mon-range { padding: 4px 12px; border: none; background: none; border-radius: 5px; font-family: inherit; font-size: 12px; font-weight: 600; line-height: 1.4; color: var(--dim); cursor: pointer; }
|
|
2165
2255
|
.mon-range:hover { color: var(--fg); }
|
|
2166
|
-
.mon-range.active { background: var(--
|
|
2167
|
-
.mon-row2 { display: flex; gap: 14px; }
|
|
2256
|
+
.mon-range.active { background: var(--bg2); color: var(--accent); }
|
|
2257
|
+
.mon-row2 { display: flex; flex: 0 0 auto; gap: 14px; }
|
|
2168
2258
|
.mon-chart { flex: 1; height: 250px; min-width: 0; background: var(--bg2); border: 1px solid var(--border); border-radius: 10px; padding: 6px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); }
|
|
2169
2259
|
@media (max-width: 900px) {
|
|
2170
2260
|
.mon-row2 { flex-direction: column; }
|
|
2171
|
-
.mon-chart { height: 190px; }
|
|
2261
|
+
.mon-chart { flex: 0 0 190px; height: 190px; }
|
|
2172
2262
|
.mon-toolbar { flex-wrap: wrap; }
|
|
2173
2263
|
}
|
|
2174
2264
|
|