From c4124a2983e740f9a57104233ced64ba6135f650 Mon Sep 17 00:00:00 2001 From: Adriano Dal Pastro Date: Thu, 21 May 2026 15:50:49 +0200 Subject: [PATCH] feat(pose_3d): markup HTML + CSS della tab --- web/index.html | 74 +++++++++++++++++++++++++++++ web/pose_3d.css | 120 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 194 insertions(+) create mode 100644 web/pose_3d.css diff --git a/web/index.html b/web/index.html index 9d4e511..572a6f7 100644 --- a/web/index.html +++ b/web/index.html @@ -5,6 +5,7 @@ presa-mano +
@@ -17,6 +18,7 @@ +
@@ -465,6 +467,77 @@ + +
+
+
+ +
Editor
+
click polso = seleziona · gizmo: T sposta / R ruota · drag = muovi · orbit = wheel/drag fondo · pan = shift+drag
+
+ +
+
+
@@ -527,5 +600,6 @@ + diff --git a/web/pose_3d.css b/web/pose_3d.css new file mode 100644 index 0000000..e88e22d --- /dev/null +++ b/web/pose_3d.css @@ -0,0 +1,120 @@ +#tab-pose-3d .p3-layout { + display: grid; + grid-template-columns: 1fr 360px; + gap: 16px; + height: calc(100vh - 140px); + min-height: 600px; +} + +#tab-pose-3d .p3-viewport { + position: relative; + background: #0d1014; + border: 1px solid #2a2f36; + border-radius: 6px; + overflow: hidden; +} +#tab-pose-3d .p3-viewport canvas { display: block; width: 100%; height: 100%; } + +#tab-pose-3d .p3-mode-badge { + position: absolute; + top: 10px; left: 10px; + padding: 4px 10px; + background: rgba(20, 30, 40, 0.85); + border: 1px solid #4da3ff; + border-radius: 4px; + color: #4da3ff; + font-size: 13px; + font-weight: bold; +} +#tab-pose-3d .p3-mode-badge.jog { + border-color: #ff5e7e; + color: #ff5e7e; + animation: p3-blink 1.4s ease-in-out infinite; +} +@keyframes p3-blink { 50% { opacity: 0.5; } } + +#tab-pose-3d .p3-help { + position: absolute; + bottom: 8px; left: 10px; right: 10px; + font-size: 11px; + color: #888; +} + +#tab-pose-3d .p3-sidebar { + display: flex; + flex-direction: column; + gap: 12px; + overflow-y: auto; +} + +#tab-pose-3d .p3-section { + background: #1a1f26; + border: 1px solid #2a2f36; + border-radius: 6px; + padding: 10px 12px; +} +#tab-pose-3d .p3-section h3 { + margin: 0 0 8px 0; + font-size: 13px; + color: #ccc; +} + +#tab-pose-3d .p3-row { + display: flex; + align-items: center; + gap: 8px; + margin-bottom: 6px; + flex-wrap: wrap; +} +#tab-pose-3d .p3-row:last-child { margin-bottom: 0; } +#tab-pose-3d .p3-row label { font-size: 13px; color: #ddd; } + +#tab-pose-3d .p3-check { display: block; margin-top: 8px; font-size: 13px; color: #ddd; } + +#tab-pose-3d .p3-readout { + display: grid; + grid-template-columns: 1fr 1fr 1fr; + gap: 6px 12px; + font-family: monospace; + font-size: 12px; + color: #ddd; + margin-bottom: 8px; +} +#tab-pose-3d .p3-readout span { color: #4da3ff; } + +#tab-pose-3d .p3-status { font-size: 12px; color: #888; margin-bottom: 8px; } +#tab-pose-3d .p3-status.modified { color: #f0ad4e; } +#tab-pose-3d .p3-status.ok { color: #3ecf8e; } +#tab-pose-3d .p3-status.error { color: #e74c3c; } + +#tab-pose-3d button { + background: #2a3038; + border: 1px solid #3a4048; + color: #e0e0e0; + padding: 5px 10px; + border-radius: 4px; + font-size: 12px; + cursor: pointer; +} +#tab-pose-3d button:hover { background: #34404a; } +#tab-pose-3d button:disabled { opacity: 0.4; cursor: not-allowed; } + +#tab-pose-3d select, #tab-pose-3d input[type=text] { + background: #0d1014; + border: 1px solid #2a2f36; + color: #e0e0e0; + padding: 4px 6px; + border-radius: 3px; + font-size: 12px; + flex: 1; + min-width: 0; +} + +#tab-pose-3d .p3-error { + background: #3a1014; + border: 1px solid #e74c3c; + border-radius: 4px; + padding: 8px; + color: #ffcccc; + font-size: 12px; +}