feat: Redesign job editor with multi-row parts and unified cut list results

- Part form now supports adding multiple parts at once via a table with
  add/remove row controls; edit mode stays single-row
- Shape and size dropdowns lock when editing an existing part
- Results tab replaces split in-stock/purchase cards with a unified table
  per material showing source badges (Stock/Purchase) for each bar
- New Purchase List card summarizes materials to order with quantities
- Print styles use repeating thead headers per material for multi-page
  cut lists; large cards can now break across pages

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-16 01:01:01 -05:00
parent 5000021193
commit a226a1f652
2 changed files with 320 additions and 160 deletions

View File

@@ -136,6 +136,11 @@
white-space: pre-wrap;
}
/* Cut list material headers — hidden on screen, shown in print via repeating thead */
.cutlist-material-print-header {
display: none;
}
/* Print styles - Compact layout to save paper */
@media print {
body {
@@ -299,18 +304,23 @@
margin: 0 !important;
}
/* Hide redundant stock summary (shown per-material) */
.print-stock-summary {
display: none !important;
}
/* General card print styles */
.card {
border: 1px solid #ccc !important;
/* Keep purchase list with cut lists to save paper */
.print-purchase-list {
break-inside: avoid;
page-break-inside: avoid;
}
/* General card print styles — allow large cards to break across pages */
.card {
border: 1px solid #ccc !important;
}
/* Keep card headers with the start of their content */
.card-header {
break-after: avoid;
page-break-after: avoid;
}
.card-header {
background-color: #f0f0f0 !important;
}
@@ -319,6 +329,42 @@
border: 1px solid #999;
}
/* Cut list tables: hide screen header, show repeating print header in thead */
.cutlist-material-screen-header {
display: none !important;
}
.cutlist-material-print-header {
display: table-row !important;
}
.cutlist-material-print-header th {
background: #f0f0f0 !important;
padding: 0.4rem 0.5rem !important;
border-bottom: 1px solid #ccc !important;
}
.cutlist-material-name {
font-size: 12pt;
font-weight: 700;
}
.cutlist-material-stats {
float: right;
font-size: 9pt;
font-weight: 400;
color: #666;
}
/* Remove card border/padding for cut list cards in print — table handles it */
.cutlist-material-card {
border: none !important;
}
.cutlist-material-card > .card-body {
padding: 0 !important;
}
/* Reduce spacing */
.mb-4 {
margin-bottom: 0.5rem !important;