Update DICOM UPP fusion workspace view

This commit is contained in:
Codex
2026-05-30 10:37:44 +08:00
parent 86e25d0a51
commit bdd0db2a4c
3 changed files with 422 additions and 170 deletions

View File

@@ -1018,6 +1018,10 @@ button {
opacity: 0.62;
}
.viewer-tools .ghost-btn:disabled {
cursor: not-allowed;
}
.ghost-btn.accent {
border-color: rgba(25, 214, 195, 0.56);
color: #bffbf2;
@@ -1087,13 +1091,25 @@ button {
.fusion-stage {
position: relative;
min-height: 0;
height: 100%;
min-height: 520px;
margin: 12px 12px 0;
overflow: hidden;
border: 1px solid #1e293b;
border-radius: 24px;
background: #000;
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.48), 0 8px 10px -6px rgba(0, 0, 0, 0.36);
}
#fusionViewport {
position: absolute;
inset: 0;
cursor: grab;
touch-action: none;
}
#fusionViewport:active {
cursor: grabbing;
}
#fusionViewport canvas {
@@ -1104,99 +1120,190 @@ button {
.fusion-hud {
position: absolute;
z-index: 4;
top: 16px;
z-index: 10;
max-width: 46%;
overflow: hidden;
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 12px;
background: rgba(0, 0, 0, 0.58);
color: rgba(255, 255, 255, 0.72);
font-size: 11px;
background: rgba(0, 0, 0, 0.6);
color: rgba(255, 255, 255, 0.62);
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
font-size: 10px;
font-weight: 800;
line-height: 1.2;
padding: 8px 10px;
text-overflow: ellipsis;
white-space: nowrap;
}
.fusion-hud.left {
top: 14px;
left: 14px;
.fusion-status {
left: 16px;
}
.fusion-hud.right {
top: 14px;
right: 14px;
.fusion-meta {
right: 16px;
border-color: rgba(34, 211, 238, 0.22);
background: rgba(8, 47, 73, 0.5);
color: #cffafe;
}
.fusion-reset-btn {
position: absolute;
top: 64px;
right: 16px;
z-index: 11;
height: 32px;
display: flex;
align-items: center;
gap: 7px;
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 12px;
background: rgba(0, 0, 0, 0.6);
color: rgba(255, 255, 255, 0.72);
padding: 0 12px;
font-size: 10px;
font-weight: 900;
box-shadow: 0 10px 24px rgba(0, 0, 0, 0.3);
}
.fusion-reset-btn:hover {
border-color: rgba(103, 232, 249, 0.34);
color: #cffafe;
}
.fusion-reset-btn svg {
width: 13px;
height: 13px;
fill: none;
stroke: currentColor;
stroke-linecap: round;
stroke-linejoin: round;
stroke-width: 2;
}
.fusion-axis-inset {
position: absolute;
right: 18px;
bottom: 18px;
z-index: 4;
width: 76px;
height: 76px;
right: 12px;
bottom: 12px;
z-index: 10;
width: 66px;
height: 66px;
border: 1px solid rgba(148, 163, 184, 0.18);
border-radius: 14px;
background: rgba(0, 0, 0, 0.58);
box-shadow: 0 12px 28px rgba(0, 0, 0, 0.28);
border-radius: 9px;
background: rgba(0, 0, 0, 0.6);
padding: 6px;
box-shadow: 0 12px 28px rgba(0, 0, 0, 0.32);
pointer-events: none;
}
.fusion-axis-inset svg {
display: block;
width: 100%;
height: 100%;
width: 54px;
height: 54px;
}
.fusion-axis-inset line {
stroke-width: 3;
stroke-width: 2.2;
stroke-linecap: round;
}
.fusion-axis-inset circle {
fill: #f87171;
fill: #e5e7eb;
}
.fusion-axis-inset text {
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
font-size: 11px;
font-weight: 950;
fill: #e8f1fb;
font-size: 8px;
font-weight: 800;
}
.fusion-axis-inset .axis-x {
stroke: #f87171;
stroke: #ef4444;
}
.fusion-axis-inset .axis-y {
stroke: #4ade80;
stroke: #22c55e;
}
.fusion-axis-inset .axis-z {
stroke: #60a5fa;
stroke: #38bdf8;
}
.fusion-axis-inset .axis-x-text {
fill: #fecaca;
}
.fusion-axis-inset .axis-y-text {
fill: #bbf7d0;
}
.fusion-axis-inset .axis-z-text {
fill: #bae6fd;
}
.fusion-webgl-error {
position: absolute;
inset: 0;
z-index: 20;
display: flex;
align-items: center;
justify-content: center;
background: rgba(2, 6, 23, 0.92);
padding: 32px;
text-align: center;
}
.fusion-webgl-error > div {
max-width: 420px;
border: 1px solid rgba(252, 211, 77, 0.2);
border-radius: 16px;
background: rgba(15, 23, 42, 0.9);
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.38);
color: #fef3c7;
padding: 22px;
}
.fusion-webgl-error strong {
display: block;
font-size: 14px;
font-weight: 950;
}
.fusion-webgl-error p {
margin: 12px 0 0;
color: rgba(254, 243, 199, 0.78);
font-size: 12px;
font-weight: 700;
line-height: 1.8;
}
.fusion-loading {
position: absolute;
left: 40px;
right: 40px;
bottom: 24px;
z-index: 5;
border: 1px solid rgba(255, 255, 255, 0.12);
border-radius: 13px;
background: rgba(0, 0, 0, 0.68);
bottom: 32px;
z-index: 12;
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 12px;
background: rgba(0, 0, 0, 0.7);
padding: 12px;
}
.fusion-loading span {
display: block;
display: inline-block;
max-width: calc(100% - 54px);
margin-bottom: 8px;
overflow: hidden;
color: rgba(255, 255, 255, 0.72);
font-size: 12px;
font-size: 10px;
font-weight: 900;
text-overflow: ellipsis;
white-space: nowrap;
}
.fusion-loading div {
height: 4px;
height: 8px;
overflow: hidden;
border-radius: 999px;
background: rgba(255, 255, 255, 0.12);
@@ -1212,7 +1319,7 @@ button {
.fusion-loading i {
width: 0;
background: linear-gradient(90deg, var(--cyan), var(--blue));
background: #3b82f6;
transition: width 0.18s ease;
}
@@ -1227,10 +1334,13 @@ button {
}
.fusion-loading em {
position: absolute;
top: 12px;
right: 12px;
display: block;
margin-top: 6px;
color: #c8f7ff;
font-size: 11px;
margin: 0;
color: rgba(255, 255, 255, 0.72);
font-size: 10px;
font-style: normal;
font-weight: 900;
text-align: right;