Improve DICOM UPP relation visualizer

This commit is contained in:
Codex
2026-05-28 08:49:16 +08:00
parent b6149a31eb
commit 4fe6466e20
7 changed files with 831 additions and 119 deletions

View File

@@ -34,7 +34,8 @@ body {
}
button,
input {
input,
select {
font: inherit;
}
@@ -87,6 +88,19 @@ button {
gap: 10px;
}
.hidden {
display: none !important;
}
.user-badge {
max-width: 170px;
overflow: hidden;
color: var(--muted);
font-size: 12px;
text-overflow: ellipsis;
white-space: nowrap;
}
.status-pill,
.relation-badge {
min-width: 82px;
@@ -134,6 +148,30 @@ button {
color: var(--text);
}
.primary-btn,
.link-btn {
height: 34px;
padding: 0 14px;
border: 1px solid rgba(52, 118, 246, 0.72);
border-radius: 8px;
background: var(--blue);
color: white;
font-weight: 700;
}
.link-btn {
height: 30px;
border-color: rgba(25, 212, 194, 0.42);
background: rgba(25, 212, 194, 0.12);
color: #baf8ee;
font-size: 12px;
}
.link-btn:disabled {
cursor: not-allowed;
opacity: 0.45;
}
.dark-btn:hover,
.filter-grid button:hover {
border-color: var(--line-strong);
@@ -160,7 +198,7 @@ button {
}
.content {
grid-template-rows: auto auto auto minmax(0, 1fr);
grid-template-rows: auto auto minmax(0, 1fr);
}
.panel {
@@ -337,9 +375,35 @@ button {
color: #fecdd3;
}
.inline-tags {
display: flex;
min-width: 0;
gap: 6px;
overflow: hidden;
}
.inline-tags em {
max-width: 96px;
padding: 2px 7px;
overflow: hidden;
border: 1px solid rgba(25, 212, 194, 0.42);
border-radius: 999px;
color: #baf8ee;
background: rgba(25, 212, 194, 0.08);
font-size: 11px;
font-style: normal;
text-overflow: ellipsis;
white-space: nowrap;
}
.subtle {
color: var(--muted);
font-size: 12px;
}
.metrics {
display: grid;
grid-template-columns: repeat(6, minmax(116px, 1fr));
grid-template-columns: repeat(5, minmax(116px, 1fr));
gap: 10px;
}
@@ -431,11 +495,24 @@ button {
padding: 14px;
}
.detail-card h3 {
.detail-card h3,
.detail-title h3 {
margin: 0 0 12px;
font-size: 15px;
}
.detail-title {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
margin-bottom: 12px;
}
.detail-title h3 {
margin: 0;
}
dl {
display: grid;
grid-template-columns: 96px minmax(0, 1fr);
@@ -513,6 +590,176 @@ dd {
text-align: center;
}
.error-line {
color: #fecdd3;
font-size: 12px;
}
.login-overlay {
position: fixed;
inset: 0;
z-index: 20;
display: grid;
place-items: center;
padding: 22px;
background:
radial-gradient(circle at 30% 20%, rgba(25, 212, 194, 0.2), transparent 30%),
rgba(7, 10, 15, 0.86);
backdrop-filter: blur(8px);
}
.login-panel {
width: min(420px, 100%);
display: grid;
gap: 12px;
padding: 26px;
border: 1px solid var(--line-strong);
border-radius: 10px;
background: rgba(11, 17, 27, 0.96);
box-shadow: 0 24px 72px rgba(0, 0, 0, 0.45);
}
.login-panel h2 {
margin: 4px 0 0;
font-size: 20px;
}
.login-panel p {
margin: 0 0 4px;
color: var(--muted);
font-size: 13px;
}
.settings-page {
height: calc(100vh - 66px);
padding: 14px;
overflow: auto;
}
.settings-shell {
max-width: 1180px;
margin: 0 auto;
padding: 18px;
}
.settings-head,
.settings-title {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
}
.settings-head h2,
.settings-title h3 {
margin: 0;
}
.settings-head p,
.settings-title span {
margin: 4px 0 0;
color: var(--muted);
font-size: 12px;
}
.settings-content {
display: grid;
gap: 14px;
margin-top: 18px;
}
.settings-section {
padding: 14px;
border: 1px solid var(--line);
border-radius: 8px;
background: rgba(7, 10, 15, 0.55);
}
.settings-section.split {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
gap: 14px;
}
.settings-form {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) 130px 110px 110px;
gap: 8px;
margin: 14px 0;
}
.settings-form input,
.settings-form select,
.password-reset input {
min-width: 0;
height: 34px;
padding: 0 10px;
border: 1px solid var(--line);
border-radius: 8px;
outline: 0;
background: #080d15;
color: var(--text);
}
.settings-table {
width: 100%;
border-collapse: collapse;
overflow: hidden;
border-radius: 8px;
background: #0b111b;
}
.settings-table th,
.settings-table td {
padding: 10px;
border-bottom: 1px solid var(--line);
color: var(--text);
font-size: 12px;
text-align: left;
}
.settings-table th {
color: #b8c7dc;
background: rgba(52, 118, 246, 0.08);
}
.password-reset {
display: grid;
grid-template-columns: minmax(0, 1fr) 64px;
gap: 6px;
}
.password-reset button {
border: 1px solid rgba(25, 212, 194, 0.42);
border-radius: 8px;
background: rgba(25, 212, 194, 0.1);
color: #baf8ee;
}
.settings-dl {
margin-top: 12px;
}
.role-grid {
display: grid;
gap: 8px;
margin-top: 12px;
}
.role-card {
display: grid;
gap: 5px;
padding: 10px;
border: 1px solid var(--line);
border-radius: 8px;
background: #0b111b;
}
.role-card span {
color: var(--muted);
font-size: 12px;
}
@media (max-width: 1180px) {
body {
overflow: auto;
@@ -525,10 +772,15 @@ dd {
.metrics,
.detail-grid,
.settings-section.split,
.link-map {
grid-template-columns: 1fr;
}
.settings-form {
grid-template-columns: 1fr;
}
.link-line {
width: 2px;
height: 22px;