diff --git a/docs/implementation.md b/docs/implementation.md index 04adb81..f6c6f9c 100644 --- a/docs/implementation.md +++ b/docs/implementation.md @@ -229,6 +229,9 @@ In `FotoFirstBulkImportWorkflow.vue`, `photos`' durable state is the `WorkflowIn Once a photo finishes uploading, the gallery switches it to the server-fetched thumbnail by re-looking it up by hash rather than mutating the closed-over `photo` object from the upload closure - that reference predates the `this.photos.push()` call, so it's the raw object, not the reactive proxy Vue tracks, and writing to it wouldn't trigger a re-render. +### Bulk Label Print Workflow +`BulkLabelPrintWorkflow.vue` implements the `bulk-label-print` workflow: step 1 collects a kind/owner/id range plus a label layout (reusing `LabelLayoutPreview.vue` for the template grid, previewed against the range's first id); step 2 connects a printer (or falls back to PNG downloads, same device-chip/PNG-Export pattern as `Print.vue`) and, on start, sequentially renders and prints/downloads one label per id in the range via `label.js`'s `drawLabel`, logging each id's outcome. `MAX_RANGE_SIZE` caps a single run so a mistyped range can't queue an unbounded number of labels. + ### Foto First Bulk Import Workflow `FotoFirstBulkImportWorkflow2.vue` implements every step of the `foto-first-bulk-import` workflow (photo capture, image processing, item detail entry, import completion) in a single component. Keeping the whole workflow in one file avoids splitting closely related state (photos, processed images, completed items) across many small step components and their prop/emit boundaries. diff --git a/frontend/src/workflows.js b/frontend/src/workflows.js index 0d392f8..f772d11 100644 --- a/frontend/src/workflows.js +++ b/frontend/src/workflows.js @@ -6,6 +6,7 @@ import StorageOptimizationWorkflow from '@/components/workflow/workflows/Storage import MaintenanceScheduleWorkflow from '@/components/workflow/workflows/MaintenanceScheduleWorkflow.vue'; import ExpiryCheckWorkflow from '@/components/workflow/workflows/ExpiryCheckWorkflow.vue'; import BackupRestoreWorkflow from '@/components/workflow/workflows/BackupRestoreWorkflow.vue'; +import BulkLabelPrintWorkflow from '@/components/workflow/workflows/BulkLabelPrintWorkflow.vue'; const workflows = [ {...FotoFirstBulkImportWorkflow.meta, component: FotoFirstBulkImportWorkflow}, @@ -15,6 +16,7 @@ const workflows = [ {...MaintenanceScheduleWorkflow.meta, component: MaintenanceScheduleWorkflow}, {...ExpiryCheckWorkflow.meta, component: ExpiryCheckWorkflow}, {...BackupRestoreWorkflow.meta, component: BackupRestoreWorkflow}, + {...BulkLabelPrintWorkflow.meta, component: BulkLabelPrintWorkflow}, ]; export function getAllWorkflows() {