diff --git a/src/components/DimensionsView.tsx b/src/components/DimensionsView.tsx index 39d7b74..29d806d 100644 --- a/src/components/DimensionsView.tsx +++ b/src/components/DimensionsView.tsx @@ -1,6 +1,6 @@ import React, { useState, useMemo } from 'react'; import { ExcelRow, COLUMNS } from '../types'; -import { AlertTriangle, CheckCircle2, ChevronDown, ChevronRight, Edit2, Package, Boxes, Scale, Loader2, Languages } from 'lucide-react'; +import { AlertTriangle, CheckCircle2, ChevronDown, ChevronRight, Edit2, Package, Boxes, Scale, Loader2, RefreshCw } from 'lucide-react'; import { cn } from '../lib/utils'; interface DimensionsViewProps { @@ -45,7 +45,7 @@ export function DimensionsView({ data, headers, onEdit, onSaveRow, onCaptureStat const result: DimensionGroup[] = []; groupMap.forEach((rows, key) => { - if (key === '0x0x0' || key === 'xx') return; // Skip empty/placeholder groups + if (key === '0x0x0' || key === 'xx' || key === '0x0x0') return; // Skip empty/placeholder groups const first = rows[0].row; const firstOuter = `${first[COLUMNS.OUTER_L]}x${first[COLUMNS.OUTER_W]}x${first[COLUMNS.OUTER_H]}`; @@ -96,22 +96,24 @@ export function DimensionsView({ data, headers, onEdit, onSaveRow, onCaptureStat setExpandedGroups(next); }; - const syncGroup = async (group: DimensionGroup) => { - if (!window.confirm(`This will apply the Packaging & MOQ values of product ${group.rows[0].row[COLUMNS.ARTICLE_NO]} to all ${group.rows.length} products in this group. Continue?`)) { + const handleSyncFromRow = async (group: DimensionGroup, sourceRow: ExcelRow) => { + if (!window.confirm(`Apply measures of product ${sourceRow[COLUMNS.ARTICLE_NO]} to all ${group.rows.length} products in this group?`)) { return; } - onCaptureState(`Synced ${group.rows.length} products in ${group.innerDims} group`); + onCaptureState(`Synced ${group.rows.length} products to match ${sourceRow[COLUMNS.ARTICLE_NO]}`); setSyncing(group.key); try { - const first = group.rows[0].row; - const outerL = first[COLUMNS.OUTER_L]; - const outerW = first[COLUMNS.OUTER_W]; - const outerH = first[COLUMNS.OUTER_H]; - const unitsOuter = first[COLUMNS.UNITS_OUTER]; - const moq = first[COLUMNS.MOQ]; + const outerL = sourceRow[COLUMNS.OUTER_L]; + const outerW = sourceRow[COLUMNS.OUTER_W]; + const outerH = sourceRow[COLUMNS.OUTER_H]; + const unitsOuter = sourceRow[COLUMNS.UNITS_OUTER]; + const moq = sourceRow[COLUMNS.MOQ]; for (const { row, index } of group.rows) { + // Skip updating the source row itself (though it doesn't hurt) + if (row === sourceRow) continue; + const updatedRow = [...row]; updatedRow[COLUMNS.OUTER_L] = outerL; updatedRow[COLUMNS.OUTER_W] = outerW; @@ -189,7 +191,7 @@ export function DimensionsView({ data, headers, onEdit, onSaveRow, onCaptureStat -