Add result curve discovery dashboard

This commit is contained in:
2026-06-30 13:35:07 +08:00
parent 2d7d54ba13
commit 7d6e1692b1
10 changed files with 554 additions and 22 deletions

View File

@@ -32,7 +32,7 @@ button, textarea, select {
font: inherit;
}
input {
input, select {
font: inherit;
color: var(--ink);
}
@@ -477,10 +477,20 @@ textarea {
}
.datasetCard {
width: 100%;
display: block;
text-align: left;
padding: 12px;
border: 1px solid var(--line);
border-radius: 7px;
background: #101310;
color: var(--ink);
cursor: pointer;
}
.datasetCard.selected {
border-color: var(--green);
background: rgba(157, 226, 111, 0.08);
}
.datasetCardHead {
@@ -619,6 +629,136 @@ meter {
white-space: pre-wrap;
}
.curvePanel {
display: grid;
gap: 10px;
}
.curvePanel select {
width: 100%;
height: 38px;
padding: 0 10px;
border-radius: 6px;
border: 1px solid var(--line);
background: var(--field);
}
.curveSvg, .curveEmpty {
width: 100%;
aspect-ratio: 2.7 / 1;
min-height: 160px;
border: 1px solid var(--line);
border-radius: 7px;
background: #080a08;
}
.curveSvg .axis {
stroke: rgba(238, 242, 232, 0.28);
stroke-width: 1;
}
.curveSvg .gridLine {
stroke: rgba(238, 242, 232, 0.08);
stroke-width: 1;
}
.curveLegend {
display: grid;
gap: 7px;
}
.curveLegend a {
display: grid;
grid-template-columns: 10px minmax(0, 1fr) auto;
align-items: center;
gap: 8px;
padding: 8px;
border: 1px solid var(--line);
border-radius: 6px;
background: #101310;
text-decoration: none;
color: var(--ink);
}
.curveLegend i {
width: 10px;
height: 10px;
border-radius: 999px;
}
.curveLegend span {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
@media (max-width: 980px) {
body {
min-width: 0;
}
.shell {
grid-template-columns: 1fr;
}
.rail {
position: static;
height: auto;
display: grid;
grid-template-columns: auto 1fr;
gap: 12px;
padding: 14px;
}
.brand {
margin-bottom: 0;
}
nav {
grid-template-columns: repeat(6, minmax(0, 1fr));
align-items: center;
}
nav a {
justify-content: center;
padding: 10px 6px;
}
nav a svg {
flex: none;
}
nav a {
font-size: 0;
}
.workspace {
padding: 16px;
}
.topbar, .panelHead {
align-items: flex-start;
gap: 12px;
}
.metrics,
.grid.two,
.grid.three,
.taskColumns {
grid-template-columns: 1fr;
}
.coverageGrid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.opGrid,
.sampleStrip,
.taskCheckList {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
.resultList a:hover, .jobRow:hover {
border-color: var(--green);
}
@@ -665,7 +805,7 @@ meter {
white-space: nowrap;
}
@media (max-width: 1180px) {
@media (min-width: 981px) and (max-width: 1180px) {
body { min-width: 960px; }
.shell { grid-template-columns: 220px 1fr; }
.metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }