Add files via upload

This commit is contained in:
公明
2026-06-17 10:50:19 +08:00
committed by GitHub
parent 8d999792b8
commit 616d87f4cc
3 changed files with 12 additions and 12 deletions
+5 -8
View File
@@ -7226,16 +7226,15 @@ header {
} }
.mcp-stats-timeline-dot { .mcp-stats-timeline-dot {
fill: #fff; fill: #3b82f6;
stroke: #3b82f6; stroke: none;
stroke-width: 1.5;
cursor: crosshair; cursor: crosshair;
opacity: 0; opacity: 0;
transition: opacity 0.12s ease; transition: opacity 0.12s ease, r 0.12s ease;
} }
.mcp-stats-timeline-dot--peak { .mcp-stats-timeline-dot--peak {
opacity: 0.7; opacity: 0.85;
} }
.mcp-stats-timeline__chart-wrap:hover .mcp-stats-timeline-dot, .mcp-stats-timeline__chart-wrap:hover .mcp-stats-timeline-dot,
@@ -7244,9 +7243,7 @@ header {
} }
.mcp-stats-timeline-dot.is-active { .mcp-stats-timeline-dot.is-active {
fill: #2563eb; fill: #1d4ed8;
stroke: #fff;
stroke-width: 2;
} }
.mcp-stats-timeline-error { .mcp-stats-timeline-error {
+5 -2
View File
@@ -7468,8 +7468,11 @@ async function deleteSelectedConversations() {
for (const id of ids) { for (const id of ids) {
await deleteConversation(id, true); // 跳过内部确认,因为批量删除时已经确认过了 await deleteConversation(id, true); // 跳过内部确认,因为批量删除时已经确认过了
} }
closeBatchManageModal(); // 删除后保持弹窗打开,便于继续管理剩余对话
loadConversationsWithGroups(); const selectAll = document.getElementById('batch-select-all');
if (selectAll) {
selectAll.checked = false;
}
} catch (error) { } catch (error) {
console.error('删除失败:', error); console.error('删除失败:', error);
const failedMsg = typeof window.t === 'function' ? window.t('batchManageModal.deleteFailed') : '删除失败'; const failedMsg = typeof window.t === 'function' ? window.t('batchManageModal.deleteFailed') : '删除失败';
+2 -2
View File
@@ -3887,7 +3887,7 @@ function buildMcpTimelineSvg(points, rangeKey) {
const tipTime = formatMcpTimelineLabel(c.p.t, rangeKey, locale); const tipTime = formatMcpTimelineLabel(c.p.t, rangeKey, locale);
const isPeak = c.i === peakIdx && (c.p.total || 0) > 0; const isPeak = c.i === peakIdx && (c.p.total || 0) > 0;
const dotClass = 'mcp-stats-timeline-dot' + (isPeak ? ' mcp-stats-timeline-dot--peak' : ''); const dotClass = 'mcp-stats-timeline-dot' + (isPeak ? ' mcp-stats-timeline-dot--peak' : '');
return `<circle class="${dotClass}" cx="${c.x.toFixed(2)}" cy="${c.y.toFixed(2)}" r="${isPeak ? 3 : 2.5}" return `<circle class="${dotClass}" cx="${c.x.toFixed(2)}" cy="${c.y.toFixed(2)}" r="${isPeak ? 2 : 1.5}"
data-time="${escapeHtml(tipTime)}" data-time="${escapeHtml(tipTime)}"
data-total="${c.p.total || 0}" data-total="${c.p.total || 0}"
data-failed="${c.p.failed || 0}" />`; data-failed="${c.p.failed || 0}" />`;
@@ -3895,7 +3895,7 @@ function buildMcpTimelineSvg(points, rangeKey) {
const peakC = coords[peakIdx]; const peakC = coords[peakIdx];
const peakMarker = (peakC.p.total || 0) > 0 const peakMarker = (peakC.p.total || 0) > 0
? `<circle class="mcp-stats-timeline-peak-glow" cx="${peakC.x.toFixed(2)}" cy="${peakC.y.toFixed(2)}" r="7" />` ? `<circle class="mcp-stats-timeline-peak-glow" cx="${peakC.x.toFixed(2)}" cy="${peakC.y.toFixed(2)}" r="5" />`
: ''; : '';
return `<svg class="mcp-stats-timeline__chart" viewBox="0 0 ${W} ${H}" preserveAspectRatio="none" aria-hidden="true"> return `<svg class="mcp-stats-timeline__chart" viewBox="0 0 ${W} ${H}" preserveAspectRatio="none" aria-hidden="true">