feat(capture): merge tape orientation into Measure with species

After mask approve, land on one Measure screen: interactive tape
PhotoStage plus Length L, Thickness, and Species (Woo taxonomy leaves).
Approve tape is folded into Calculate. Persist species_id on the device
draft and pass it through createSlab so Review pre-fills.
This commit is contained in:
grokbot_ty
2026-09-26 08:22:08 -07:00
parent 4ea2618475
commit b55344ec05
9 changed files with 269 additions and 57 deletions
+6 -10
View File
@@ -9,7 +9,6 @@
import BatchPhotos from './capture/BatchPhotos.svelte';
import PickCalibration from './capture/PickCalibration.svelte';
import MaskPanel from './capture/MaskPanel.svelte';
import AxisPanel from './capture/AxisPanel.svelte';
import MeasurePanel from './capture/MeasurePanel.svelte';
import Settings from './create/settings/Settings.svelte';
import SlabList from './create/slabs/SlabList.svelte';
@@ -72,6 +71,7 @@
const capture: CalibratedCapture = {
lengthIn: eighthsToIn(m.lengthEighths),
thicknessIn: eighthsToIn(m.thicknessEighths),
speciesId: m.speciesId,
sqft: r.sqft,
bdft: r.bdft,
widthMinIn: eighthsToIn(r.widths.min),
@@ -100,6 +100,7 @@
width_min_in: capture.widthMinIn,
width_max_in: capture.widthMaxIn,
width_avg_in: capture.widthAvgIn,
species_id: capture.speciesId,
price: null,
price_source: 'recommendation',
content_source: 'manual',
@@ -213,19 +214,14 @@
retakes={session.retakes}
back={session.back}
/>
{:else if cap.k === 'axis'}
<AxisPanel
state={cap}
setAxisAngle={session.setAxisAngle}
setTape={session.setTape}
approveAxis={session.approveAxis}
back={session.back}
/>
{:else}
{:else if cap.k === 'measure'}
<MeasurePanel
state={cap}
setLength={session.setLength}
setThickness={session.setThickness}
setSpecies={session.setSpecies}
setAxisAngle={session.setAxisAngle}
setTape={session.setTape}
calculate={session.calculate}
back={session.back}
{pngUrl}