feat(lab): visualize dual evidence replay

This commit is contained in:
DCCONSTRUCTIONS
2026-08-05 19:18:14 +03:00
parent b0d0bc8d7f
commit de19229895
17 changed files with 1825 additions and 115 deletions
@@ -46,7 +46,7 @@
user-select: none;
}
.e46c-video-scene {
.recorded-evidence-video-scene {
position: relative;
width: 100%;
height: 100%;
@@ -55,12 +55,12 @@
background: var(--nodedc-canvas);
}
.e46c-video-scene > .recorded-media-player {
.recorded-evidence-video-scene > .recorded-media-player {
position: absolute;
inset: 0;
}
.e46c-video-scene > canvas {
.recorded-evidence-video-scene > canvas {
position: absolute;
z-index: 2;
inset: 0;
@@ -0,0 +1,110 @@
.laboratory-metric-evidence-scene,
.laboratory-metric-evidence-scene__viewport {
width: 100%;
height: 100%;
min-width: 0;
min-height: 0;
}
.laboratory-metric-evidence-scene {
position: relative;
overflow: hidden;
background: var(--nodedc-canvas);
}
.laboratory-metric-evidence-scene__viewport {
position: absolute;
inset: 0;
}
.laboratory-metric-evidence-scene__viewport canvas {
display: block;
width: 100%;
height: 100%;
cursor: grab;
touch-action: none;
}
.laboratory-metric-evidence-scene__viewport canvas:active {
cursor: grabbing;
}
.laboratory-metric-evidence-scene__viewport p {
position: absolute;
inset: 0;
display: grid;
place-items: center;
margin: 0;
color: var(--nodedc-text-muted);
font-size: 0.62rem;
}
.laboratory-metric-evidence-scene__toolbar {
position: absolute;
z-index: 3;
top: 0.6rem;
left: 0.6rem;
display: flex;
align-items: center;
gap: 0.5rem;
}
.laboratory-metric-evidence-scene__toolbar .nodedc-button,
.laboratory-metric-evidence-scene__toolbar > span,
.laboratory-metric-evidence-scene__legend {
background: var(--nodedc-floating-surface);
backdrop-filter: blur(var(--nodedc-blur-control));
}
.laboratory-metric-evidence-scene__toolbar > span {
border-radius: var(--nodedc-radius-control-compact);
padding: 0.43rem 0.55rem;
color: var(--nodedc-text-secondary);
font-size: 0.5rem;
}
.laboratory-metric-evidence-scene__legend {
position: absolute;
z-index: 3;
right: 0.6rem;
bottom: 0.6rem;
display: flex;
flex-wrap: wrap;
gap: 0.55rem;
border-radius: var(--nodedc-radius-control-compact);
padding: 0.42rem 0.55rem;
color: var(--nodedc-text-secondary);
}
.laboratory-metric-evidence-scene__legend span {
display: inline-flex;
align-items: center;
gap: 0.25rem;
font-size: 0.5rem;
}
.laboratory-metric-evidence-scene__legend span::before {
width: 0.38rem;
height: 0.38rem;
border-radius: 50%;
background: var(--nodedc-text-muted);
content: "";
}
.laboratory-metric-evidence-scene__legend span[data-decision="threat"]::before {
background: rgb(var(--nodedc-danger-rgb));
}
.laboratory-metric-evidence-scene__legend span[data-decision="not-threat"]::before {
background: rgb(var(--nodedc-success-rgb));
}
.laboratory-metric-evidence-scene__legend span[data-decision="unknown"]::before {
background: rgb(var(--nodedc-warning-rgb));
}
@media (max-width: 900px) {
.laboratory-metric-evidence-scene__toolbar > span {
display: none;
}
}