mirror of
https://github.com/christianvidalwolf-prog/Craze-Data-check.git
synced 2026-08-03 19:45:23 +02:00
fix: implement exhaustive safety checks for filters and sorting to prevent white screen crashes
This commit is contained in:
@@ -448,10 +448,13 @@ export function PricingView({ data, headers, onSaveRow, onCaptureState, onEdit,
|
|||||||
case 'outerW': colIndex = COLUMNS.OUTER_W; break;
|
case 'outerW': colIndex = COLUMNS.OUTER_W; break;
|
||||||
case 'outerL': colIndex = COLUMNS.OUTER_L; break;
|
case 'outerL': colIndex = COLUMNS.OUTER_L; break;
|
||||||
case 'outerH': colIndex = COLUMNS.OUTER_H; break;
|
case 'outerH': colIndex = COLUMNS.OUTER_H; break;
|
||||||
|
case 'itemToLogistic': colIndex = COLUMNS.ITEM_TO_LOGISTIC; break;
|
||||||
default: return filteredRows;
|
default: return filteredRows;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (colIndex === undefined || colIndex === null) return filteredRows;
|
||||||
|
|
||||||
const sorted = [...filteredRows].sort((a, b) => {
|
const sorted = [...filteredRows].sort((a, b) => {
|
||||||
const valA = a.row[colIndex];
|
const valA = a.row[colIndex];
|
||||||
const valB = b.row[colIndex];
|
const valB = b.row[colIndex];
|
||||||
@@ -1260,8 +1263,8 @@ export function PricingView({ data, headers, onSaveRow, onCaptureState, onEdit,
|
|||||||
triggerId="filter-trigger-line"
|
triggerId="filter-trigger-line"
|
||||||
uniqueValues={uniqueLines || []}
|
uniqueValues={uniqueLines || []}
|
||||||
selectedValues={lineMultiFilter || []}
|
selectedValues={lineMultiFilter || []}
|
||||||
onToggle={val => setLineMultiFilter(prev => prev.includes(val) ? prev.filter(v => v !== val) : [...prev, val])}
|
onToggle={val => setLineMultiFilter(prev => (prev || []).includes(val) ? (prev || []).filter(v => v !== val) : [...(prev || []), val])}
|
||||||
onSelectAll={vals => setLineMultiFilter(vals)}
|
onSelectAll={vals => setLineMultiFilter(vals || [])}
|
||||||
onClear={() => { setLineMultiFilter([]); setOpenFilter(null); }}
|
onClear={() => { setLineMultiFilter([]); setOpenFilter(null); }}
|
||||||
onClose={() => setOpenFilter(null)}
|
onClose={() => setOpenFilter(null)}
|
||||||
zIndex={500}
|
zIndex={500}
|
||||||
@@ -1298,8 +1301,8 @@ export function PricingView({ data, headers, onSaveRow, onCaptureState, onEdit,
|
|||||||
triggerId="filter-trigger-class"
|
triggerId="filter-trigger-class"
|
||||||
uniqueValues={uniqueClassifications || []}
|
uniqueValues={uniqueClassifications || []}
|
||||||
selectedValues={classificationFilter || []}
|
selectedValues={classificationFilter || []}
|
||||||
onToggle={val => setClassificationFilter(prev => prev.includes(val) ? prev.filter(v => v !== val) : [...prev, val])}
|
onToggle={val => setClassificationFilter(prev => (prev || []).includes(val) ? (prev || []).filter(v => v !== val) : [...(prev || []), val])}
|
||||||
onSelectAll={vals => setClassificationFilter(vals)}
|
onSelectAll={vals => setClassificationFilter(vals || [])}
|
||||||
onClear={() => { setClassificationFilter([]); setOpenFilter(null); }}
|
onClear={() => { setClassificationFilter([]); setOpenFilter(null); }}
|
||||||
onClose={() => setOpenFilter(null)}
|
onClose={() => setOpenFilter(null)}
|
||||||
zIndex={50}
|
zIndex={50}
|
||||||
@@ -1328,8 +1331,8 @@ export function PricingView({ data, headers, onSaveRow, onCaptureState, onEdit,
|
|||||||
triggerId="filter-trigger-type"
|
triggerId="filter-trigger-type"
|
||||||
uniqueValues={uniqueProductTypes || []}
|
uniqueValues={uniqueProductTypes || []}
|
||||||
selectedValues={productTypeFilter || []}
|
selectedValues={productTypeFilter || []}
|
||||||
onToggle={(val: string) => setProductTypeFilter((prev: string[]) => prev.includes(val) ? prev.filter((v: string) => v !== val) : [...prev, val])}
|
onToggle={(val: string) => setProductTypeFilter((prev: string[]) => (prev || []).includes(val) ? (prev || []).filter((v: string) => v !== val) : [...(prev || []), val])}
|
||||||
onSelectAll={vals => setProductTypeFilter(vals)}
|
onSelectAll={vals => setProductTypeFilter(vals || [])}
|
||||||
onClear={() => { setProductTypeFilter([]); setOpenFilter(null); }}
|
onClear={() => { setProductTypeFilter([]); setOpenFilter(null); }}
|
||||||
onClose={() => setOpenFilter(null)}
|
onClose={() => setOpenFilter(null)}
|
||||||
zIndex={50}
|
zIndex={50}
|
||||||
@@ -1366,8 +1369,8 @@ export function PricingView({ data, headers, onSaveRow, onCaptureState, onEdit,
|
|||||||
triggerId="filter-trigger-logistic"
|
triggerId="filter-trigger-logistic"
|
||||||
uniqueValues={uniqueItemToLogistic || []}
|
uniqueValues={uniqueItemToLogistic || []}
|
||||||
selectedValues={itemToLogisticFilter || []}
|
selectedValues={itemToLogisticFilter || []}
|
||||||
onToggle={val => setItemToLogisticFilter(prev => prev.includes(val) ? prev.filter(v => v !== val) : [...prev, val])}
|
onToggle={val => setItemToLogisticFilter(prev => (prev || []).includes(val) ? (prev || []).filter(v => v !== val) : [...(prev || []), val])}
|
||||||
onSelectAll={vals => setItemToLogisticFilter(vals)}
|
onSelectAll={vals => setItemToLogisticFilter(vals || [])}
|
||||||
onClear={() => { setItemToLogisticFilter([]); setOpenFilter(null); }}
|
onClear={() => { setItemToLogisticFilter([]); setOpenFilter(null); }}
|
||||||
onClose={() => setOpenFilter(null)}
|
onClose={() => setOpenFilter(null)}
|
||||||
zIndex={50}
|
zIndex={50}
|
||||||
@@ -1458,8 +1461,8 @@ export function PricingView({ data, headers, onSaveRow, onCaptureState, onEdit,
|
|||||||
triggerId="filter-trigger-unitsOuter"
|
triggerId="filter-trigger-unitsOuter"
|
||||||
uniqueValues={uniqueUnitsOuter || []}
|
uniqueValues={uniqueUnitsOuter || []}
|
||||||
selectedValues={unitsOuterFilter || []}
|
selectedValues={unitsOuterFilter || []}
|
||||||
onToggle={val => setUnitsOuterFilter(prev => prev.includes(val) ? prev.filter(v => v !== val) : [...prev, val])}
|
onToggle={val => setUnitsOuterFilter(prev => (prev || []).includes(val) ? (prev || []).filter(v => v !== val) : [...(prev || []), val])}
|
||||||
onSelectAll={vals => setUnitsOuterFilter(vals)}
|
onSelectAll={vals => setUnitsOuterFilter(vals || [])}
|
||||||
onClear={() => { setUnitsOuterFilter([]); setOpenFilter(null); }}
|
onClear={() => { setUnitsOuterFilter([]); setOpenFilter(null); }}
|
||||||
onClose={() => setOpenFilter(null)}
|
onClose={() => setOpenFilter(null)}
|
||||||
zIndex={50}
|
zIndex={50}
|
||||||
@@ -1497,8 +1500,8 @@ export function PricingView({ data, headers, onSaveRow, onCaptureState, onEdit,
|
|||||||
triggerId="filter-trigger-outerW"
|
triggerId="filter-trigger-outerW"
|
||||||
uniqueValues={uniqueOuterW || []}
|
uniqueValues={uniqueOuterW || []}
|
||||||
selectedValues={outerWFilter || []}
|
selectedValues={outerWFilter || []}
|
||||||
onToggle={val => setOuterWFilter(prev => prev.includes(val) ? prev.filter(v => v !== val) : [...prev, val])}
|
onToggle={val => setOuterWFilter(prev => (prev || []).includes(val) ? (prev || []).filter(v => v !== val) : [...(prev || []), val])}
|
||||||
onSelectAll={vals => setOuterWFilter(vals)}
|
onSelectAll={vals => setOuterWFilter(vals || [])}
|
||||||
onClear={() => { setOuterWFilter([]); setOpenFilter(null); }}
|
onClear={() => { setOuterWFilter([]); setOpenFilter(null); }}
|
||||||
onClose={() => setOpenFilter(null)}
|
onClose={() => setOpenFilter(null)}
|
||||||
zIndex={50}
|
zIndex={50}
|
||||||
@@ -1536,8 +1539,8 @@ export function PricingView({ data, headers, onSaveRow, onCaptureState, onEdit,
|
|||||||
triggerId="filter-trigger-outerL"
|
triggerId="filter-trigger-outerL"
|
||||||
uniqueValues={uniqueOuterL || []}
|
uniqueValues={uniqueOuterL || []}
|
||||||
selectedValues={outerLFilter || []}
|
selectedValues={outerLFilter || []}
|
||||||
onToggle={val => setOuterLFilter(prev => prev.includes(val) ? prev.filter(v => v !== val) : [...prev, val])}
|
onToggle={val => setOuterLFilter(prev => (prev || []).includes(val) ? (prev || []).filter(v => v !== val) : [...(prev || []), val])}
|
||||||
onSelectAll={vals => setOuterLFilter(vals)}
|
onSelectAll={vals => setOuterLFilter(vals || [])}
|
||||||
onClear={() => { setOuterLFilter([]); setOpenFilter(null); }}
|
onClear={() => { setOuterLFilter([]); setOpenFilter(null); }}
|
||||||
onClose={() => setOpenFilter(null)}
|
onClose={() => setOpenFilter(null)}
|
||||||
zIndex={50}
|
zIndex={50}
|
||||||
@@ -1575,8 +1578,8 @@ export function PricingView({ data, headers, onSaveRow, onCaptureState, onEdit,
|
|||||||
triggerId="filter-trigger-outerH"
|
triggerId="filter-trigger-outerH"
|
||||||
uniqueValues={uniqueOuterH || []}
|
uniqueValues={uniqueOuterH || []}
|
||||||
selectedValues={outerHFilter || []}
|
selectedValues={outerHFilter || []}
|
||||||
onToggle={val => setOuterHFilter(prev => prev.includes(val) ? prev.filter(v => v !== val) : [...prev, val])}
|
onToggle={val => setOuterHFilter(prev => (prev || []).includes(val) ? (prev || []).filter(v => v !== val) : [...(prev || []), val])}
|
||||||
onSelectAll={vals => setOuterHFilter(vals)}
|
onSelectAll={vals => setOuterHFilter(vals || [])}
|
||||||
onClear={() => { setOuterHFilter([]); setOpenFilter(null); }}
|
onClear={() => { setOuterHFilter([]); setOpenFilter(null); }}
|
||||||
onClose={() => setOpenFilter(null)}
|
onClose={() => setOpenFilter(null)}
|
||||||
zIndex={50}
|
zIndex={50}
|
||||||
|
|||||||
Reference in New Issue
Block a user