feat(web): rebuild Cerca modello tab — model picker + result canvas

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Adriano Dal PastroandClaude Opus 4.7 committed 2026-05-13 10:10:35 +02:00
1 parent 3857ef533a
commit af8d4d6fc4
1 file changed
+23 -17
+23 -17
View File
@@ -226,6 +226,7 @@
</section>
<!-- ============================== TROVA UTENSILE ============================== -->
<!-- ============================== CERCA MODELLO ============================== -->
<section class="panel" id="tab-grasp">
<div class="grid-2">
<div>
@@ -237,36 +238,41 @@
<div class="kv">
<label>Nuvola di <select id="graspObjectPick"><option value="">(top overall)</option></select></label>
<label>Confidenza <input type="number" id="graspConf" value="0.5" step="0.05" min="0" max="1" /></label>
<label class="inline"><input type="checkbox" id="graspDryRun" checked /> Dry-run</label>
</div>
<div id="graspLegend" class="grasp-legend"></div>
<div class="actions">
<button id="detectBtn">Rileva oggetto</button>
<button id="loopBtn">▶ Loop riconoscimento</button>
<label class="inline" style="margin-left:8px"><input type="number" id="loopRateMs" value="500" min="100" step="50" style="width:80px"> ms</label>
<button id="planBtn" class="primary">Pianifica grasp</button>
<button id="executeBtn" class="primary">Esegui presa</button>
</div>
</div>
<div>
<h2>Crop utensile</h2>
<div class="canvas-wrap small">
<canvas id="cropCanvas" width="320" height="240"></canvas>
<h2>Fit modello 3D</h2>
<div class="kv">
<label>Modello
<select id="findModelPick"><option value="">— carico ricette… —</option></select>
</label>
<button id="findRecipesRefreshBtn" class="ghost" title="Ricarica ricette">↻</button>
</div>
<div class="actions">
<button id="findBtn" class="primary" disabled>Trova</button>
</div>
<h2>Nuvola punti oggetto (base frame)</h2>
<div class="scatter-row">
<div>
<div class="scatter-title">Top-down (X-Y)</div>
<canvas id="scatterXY" width="260" height="260"></canvas>
</div>
<div>
<div class="scatter-title">Laterale (X-Z)</div>
<canvas id="scatterXZ" width="260" height="260"></canvas>
</div>
<div id="findStatus" class="status-line">—</div>
<div class="canvas-wrap">
<canvas id="findResultCanvas" width="640" height="480"></canvas>
</div>
<!-- Hidden DOM hooks consumed by app.js (Precisione + Dettagli UI removed). -->
<div class="kv">
<label class="inline"><input type="checkbox" id="findShowModel" checked> Punti modello (blu)</label>
<label class="inline"><input type="checkbox" id="findShowAccepted"> Punti accettati (verdi)</label>
<label class="inline"><input type="checkbox" id="findShowExcluded"> Punti esclusi (rossi)</label>
</div>
<pre id="findDetails" class="log small">—</pre>
<!-- DOM hooks dormienti consumati da app.js residuo. Tenuti per evitare null deref. -->
<div style="display:none">
<span id="statsWindow">5</span>
<table id="statsTable"><tbody>