feat(simulation): add Gaussian UGV runtime pipeline
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
.simulation-workspace {
|
||||
display: grid;
|
||||
height: 100%;
|
||||
min-width: 0;
|
||||
grid-template-rows: auto minmax(0, 1fr);
|
||||
gap: 0.9rem;
|
||||
padding-bottom: 1rem;
|
||||
}
|
||||
@@ -17,6 +19,7 @@
|
||||
.simulation-viewport__notice,
|
||||
.simulation-catalog__summary,
|
||||
.simulation-catalog__state,
|
||||
.simulation-catalog__notice,
|
||||
.simulation-catalog__actions,
|
||||
.simulation-project-window__footer-state,
|
||||
.simulation-source-drop > div,
|
||||
@@ -60,7 +63,10 @@
|
||||
}
|
||||
|
||||
.simulation-catalog {
|
||||
position: relative;
|
||||
display: grid;
|
||||
min-height: 0;
|
||||
align-content: start;
|
||||
gap: 0.55rem;
|
||||
min-width: 0;
|
||||
}
|
||||
@@ -100,23 +106,28 @@
|
||||
.simulation-catalog__table-wrap {
|
||||
overflow: auto;
|
||||
border-radius: 1rem;
|
||||
background: rgb(255 255 255 / 0.025);
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.simulation-catalog__table {
|
||||
width: 100%;
|
||||
min-width: 62rem;
|
||||
border-collapse: collapse;
|
||||
min-width: 52rem;
|
||||
border-collapse: separate;
|
||||
border-spacing: 0 0.34rem;
|
||||
}
|
||||
|
||||
.simulation-catalog__table th,
|
||||
.simulation-catalog__table td {
|
||||
border-bottom: 1px solid var(--station-hairline);
|
||||
padding: 0.72rem 0.8rem;
|
||||
text-align: left;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.simulation-catalog__table th {
|
||||
padding-top: 0.2rem;
|
||||
padding-bottom: 0.18rem;
|
||||
}
|
||||
|
||||
.simulation-catalog__table th:first-child,
|
||||
.simulation-catalog__table td:first-child {
|
||||
padding-left: 1rem;
|
||||
@@ -124,6 +135,8 @@
|
||||
|
||||
.simulation-catalog__table th:last-child,
|
||||
.simulation-catalog__table td:last-child {
|
||||
width: 6.4rem;
|
||||
min-width: 6.4rem;
|
||||
padding-right: 1rem;
|
||||
}
|
||||
|
||||
@@ -131,12 +144,21 @@
|
||||
transition: background var(--nodedc-duration-fast) var(--nodedc-ease-standard);
|
||||
}
|
||||
|
||||
.simulation-catalog__table tbody tr:hover {
|
||||
.simulation-catalog__table tbody td {
|
||||
background: rgb(255 255 255 / 0.025);
|
||||
transition: background var(--nodedc-duration-fast) var(--nodedc-ease-standard);
|
||||
}
|
||||
|
||||
.simulation-catalog__table tbody tr:last-child td {
|
||||
border-bottom: 0;
|
||||
.simulation-catalog__table tbody tr:hover td {
|
||||
background: rgb(255 255 255 / 0.045);
|
||||
}
|
||||
|
||||
.simulation-catalog__table tbody td:first-child {
|
||||
border-radius: 0.85rem 0 0 0.85rem;
|
||||
}
|
||||
|
||||
.simulation-catalog__table tbody td:last-child {
|
||||
border-radius: 0 0.85rem 0.85rem 0;
|
||||
}
|
||||
|
||||
.simulation-catalog__table td {
|
||||
@@ -156,7 +178,7 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.65rem;
|
||||
min-width: 14rem;
|
||||
min-width: 11rem;
|
||||
border: 0;
|
||||
background: transparent;
|
||||
color: inherit;
|
||||
@@ -165,16 +187,26 @@
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.simulation-catalog__table td:first-child > button > span:last-child {
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.simulation-catalog__table td:first-child > button strong {
|
||||
display: block;
|
||||
max-width: 20rem;
|
||||
overflow: hidden;
|
||||
overflow: clip;
|
||||
color: var(--nodedc-text-primary);
|
||||
font-size: 0.7rem;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.simulation-catalog__table td:first-child > button small {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.simulation-catalog__project-icon,
|
||||
.simulation-catalog__empty > span {
|
||||
display: grid;
|
||||
@@ -188,10 +220,53 @@
|
||||
}
|
||||
|
||||
.simulation-catalog__actions {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
gap: 0.28rem;
|
||||
}
|
||||
|
||||
.simulation-catalog__progress {
|
||||
display: grid;
|
||||
min-width: 0;
|
||||
gap: 0.26rem;
|
||||
}
|
||||
|
||||
.simulation-catalog__progress-meta,
|
||||
.simulation-catalog__progress-stage {
|
||||
overflow: hidden;
|
||||
color: var(--nodedc-text-muted);
|
||||
font-size: 0.54rem;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.simulation-catalog__progress-track {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
height: 0.3rem;
|
||||
border-radius: 999px;
|
||||
background: rgb(255 255 255 / 0.08);
|
||||
}
|
||||
|
||||
.simulation-catalog__progress-track i {
|
||||
position: absolute;
|
||||
inset: 0 auto 0 0;
|
||||
min-width: 0;
|
||||
border-radius: inherit;
|
||||
background: rgb(var(--nodedc-accent-rgb));
|
||||
transition: width var(--nodedc-duration-fast) var(--nodedc-ease-standard);
|
||||
}
|
||||
|
||||
.simulation-catalog__progress[data-indeterminate="true"] .simulation-catalog__progress-track i {
|
||||
width: 28% !important;
|
||||
animation: simulation-progress-pulse 1.6s ease-in-out infinite;
|
||||
}
|
||||
|
||||
.simulation-catalog__progress-stage {
|
||||
font-size: 0.52rem;
|
||||
}
|
||||
|
||||
.simulation-catalog__state,
|
||||
.simulation-catalog__empty {
|
||||
min-height: 20rem;
|
||||
@@ -203,6 +278,67 @@
|
||||
font-size: 0.65rem;
|
||||
}
|
||||
|
||||
.simulation-catalog__notice {
|
||||
justify-content: flex-start;
|
||||
gap: 0.55rem;
|
||||
border-radius: 0.85rem;
|
||||
background: rgb(var(--nodedc-danger-rgb) / 0.08);
|
||||
color: var(--nodedc-danger);
|
||||
padding: 0.7rem 0.85rem;
|
||||
font-size: 0.62rem;
|
||||
}
|
||||
|
||||
.simulation-catalog__drop-overlay {
|
||||
position: absolute;
|
||||
z-index: 4;
|
||||
inset: 0;
|
||||
display: grid;
|
||||
place-content: center;
|
||||
justify-items: center;
|
||||
gap: 0.55rem;
|
||||
border-radius: 1rem;
|
||||
background: var(--nodedc-canvas);
|
||||
color: var(--nodedc-text-muted);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.simulation-catalog__drop-mark {
|
||||
display: grid;
|
||||
width: 4rem;
|
||||
height: 4rem;
|
||||
margin-bottom: 0.25rem;
|
||||
place-items: center;
|
||||
border-radius: 50%;
|
||||
background: var(--nodedc-glass-control-active);
|
||||
color: var(--nodedc-glass-control-active-text);
|
||||
}
|
||||
|
||||
.simulation-catalog__drop-overlay strong {
|
||||
color: var(--nodedc-text-primary);
|
||||
font-size: 0.86rem;
|
||||
}
|
||||
|
||||
.simulation-catalog__drop-overlay span {
|
||||
font-size: 0.64rem;
|
||||
}
|
||||
|
||||
.simulation-catalog__drop-overlay small {
|
||||
color: var(--nodedc-text-muted);
|
||||
font-size: 0.56rem;
|
||||
}
|
||||
|
||||
@keyframes simulation-progress-pulse {
|
||||
from { transform: translateX(-105%); }
|
||||
to { transform: translateX(360%); }
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.simulation-catalog__progress[data-indeterminate="true"] .simulation-catalog__progress-track i {
|
||||
animation: none;
|
||||
transform: translateX(0);
|
||||
}
|
||||
}
|
||||
|
||||
.simulation-catalog__state > div {
|
||||
display: grid;
|
||||
gap: 0.2rem;
|
||||
@@ -342,6 +478,9 @@
|
||||
}
|
||||
|
||||
.simulation-viewport__toolbar {
|
||||
position: sticky;
|
||||
z-index: 10;
|
||||
top: 0;
|
||||
display: grid;
|
||||
grid-template-columns: minmax(12rem, 1fr) auto minmax(12rem, 1fr);
|
||||
align-items: center;
|
||||
@@ -379,19 +518,34 @@
|
||||
top: calc(100% + 0.65rem);
|
||||
right: 0;
|
||||
display: grid;
|
||||
grid-template-rows: auto minmax(0, 1fr);
|
||||
width: min(21rem, calc(100cqw - 1.3rem));
|
||||
gap: 0.75rem;
|
||||
border-radius: 0.9rem;
|
||||
background: rgb(25 27 31 / 0.98);
|
||||
box-shadow: 0 1rem 3rem rgb(0 0 0 / 0.42);
|
||||
padding: 0.8rem;
|
||||
max-height: min(44rem, calc(100vh - 7rem));
|
||||
overflow: clip;
|
||||
gap: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.simulation-viewport__settings-head {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 0.75rem;
|
||||
background: var(--nodedc-glass-panel-bg-strong);
|
||||
padding: 0.8rem;
|
||||
box-shadow: 0 0.55rem 1rem rgb(0 0 0 / 0.18);
|
||||
backdrop-filter: blur(18px);
|
||||
}
|
||||
|
||||
.simulation-viewport__settings-scroll {
|
||||
display: grid;
|
||||
min-height: 0;
|
||||
overflow-y: auto;
|
||||
overscroll-behavior: contain;
|
||||
gap: 0.75rem;
|
||||
padding: 0.75rem 0.8rem 0.8rem;
|
||||
}
|
||||
|
||||
.simulation-viewport__settings-head > div,
|
||||
@@ -440,16 +594,49 @@
|
||||
gap: 0.55rem;
|
||||
}
|
||||
|
||||
.simulation-viewport__settings-layer-row {
|
||||
.simulation-viewport__settings-rotations {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) 4.5rem;
|
||||
align-items: center;
|
||||
gap: 0.55rem;
|
||||
gap: 0.7rem;
|
||||
}
|
||||
|
||||
.simulation-viewport__axis-select {
|
||||
width: 4.5rem;
|
||||
min-width: 0;
|
||||
.simulation-viewport__rotation-row {
|
||||
display: grid;
|
||||
gap: 0.4rem;
|
||||
}
|
||||
|
||||
.simulation-viewport__rotation-row > strong {
|
||||
color: var(--nodedc-text-secondary);
|
||||
font-size: 0.6rem;
|
||||
}
|
||||
|
||||
.simulation-viewport__rotation-fields {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 0.45rem;
|
||||
}
|
||||
|
||||
.simulation-viewport__rotation-field {
|
||||
gap: 0.22rem;
|
||||
}
|
||||
|
||||
.simulation-viewport__rotation-field .nodedc-field__label-row {
|
||||
padding-inline: 0.15rem;
|
||||
}
|
||||
|
||||
.simulation-viewport__rotation-field .nodedc-field__label {
|
||||
font-size: 0.54rem;
|
||||
}
|
||||
|
||||
.simulation-viewport__rotation-input {
|
||||
min-height: 1.75rem;
|
||||
padding: 0.2rem 0.55rem;
|
||||
font-size: 0.64rem;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.simulation-viewport__rotation-input:disabled {
|
||||
cursor: not-allowed;
|
||||
opacity: 0.45;
|
||||
}
|
||||
|
||||
.simulation-viewport__settings-error {
|
||||
@@ -459,6 +646,30 @@
|
||||
padding: 0.55rem 0.65rem;
|
||||
}
|
||||
|
||||
.simulation-ugv-settings {
|
||||
gap: 0.7rem;
|
||||
}
|
||||
|
||||
.simulation-ugv-settings__subhead {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
justify-content: space-between;
|
||||
gap: 0.65rem;
|
||||
margin-top: 0.1rem;
|
||||
padding-top: 0.55rem;
|
||||
border-top: 1px solid rgb(255 255 255 / 0.055);
|
||||
}
|
||||
|
||||
.simulation-ugv-settings__subhead strong {
|
||||
color: var(--nodedc-text-secondary);
|
||||
font-size: 0.58rem;
|
||||
}
|
||||
|
||||
.simulation-ugv-settings__save {
|
||||
width: 100%;
|
||||
margin-top: 0.15rem;
|
||||
}
|
||||
|
||||
.simulation-viewport__toolbar-balance {
|
||||
min-width: 0;
|
||||
}
|
||||
@@ -472,7 +683,7 @@
|
||||
.simulation-viewport__stage {
|
||||
position: relative;
|
||||
min-width: 0;
|
||||
min-height: 30rem;
|
||||
min-height: 18rem;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
@@ -491,6 +702,16 @@
|
||||
cursor: grabbing;
|
||||
}
|
||||
|
||||
.simulation-viewport[data-control-mode="ugv"] .simulation-viewport__stage canvas,
|
||||
.simulation-viewport[data-control-mode="ugv"] .simulation-viewport__stage canvas:active {
|
||||
cursor: grab;
|
||||
}
|
||||
|
||||
.simulation-viewport[data-control-mode="ugv"] .simulation-viewport__stage canvas.is-orbiting,
|
||||
.simulation-viewport[data-control-mode="ugv"] .simulation-viewport__stage canvas.is-orbiting:active {
|
||||
cursor: grabbing;
|
||||
}
|
||||
|
||||
.simulation-viewport__stage canvas:focus-visible {
|
||||
box-shadow: inset 0 0 0 2px rgb(var(--nodedc-accent-rgb) / 0.7);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user