diff --git a/frontend/src/pages/Products/Products.js b/frontend/src/pages/Products/Products.js index b47a2f5..65896d0 100644 --- a/frontend/src/pages/Products/Products.js +++ b/frontend/src/pages/Products/Products.js @@ -537,6 +537,18 @@ const CreateProductModal = ({ onSubmit, onCancel, sharedProducts, categories }) const [seedBlend, setSeedBlend] = useState([]); // [{cultivar:'', percent:0}] const [seedNewRate, setSeedNewRate] = useState(''); const [seedOverRate, setSeedOverRate] = useState(''); + // Sync default rate field as average for compatibility + useEffect(() => { + if (formData.productType === 'seed') { + const n = parseFloat(seedNewRate); + const o = parseFloat(seedOverRate); + let avg = ''; + if (!isNaN(n) && !isNaN(o)) avg = ((n + o) / 2).toFixed(2); + else if (!isNaN(n)) avg = n; + else if (!isNaN(o)) avg = o; + setFormData(prev => ({ ...prev, customRateAmount: avg })); + } + }, [formData.productType, seedNewRate, seedOverRate]); const [availableSpreaders, setAvailableSpreaders] = useState([]); const [loadingSpreaders, setLoadingSpreaders] = useState(false); const [newSpreaderSetting, setNewSpreaderSetting] = useState({ @@ -713,19 +725,7 @@ const CreateProductModal = ({ onSubmit, onCancel, sharedProducts, categories }) {formData.productType === 'seed' && ( - <> - -
-
- - setSeedNewRate(e.target.value)} placeholder="e.g., 7" /> -
-
- - setSeedOverRate(e.target.value)} placeholder="e.g., 3" /> -
-
- + )}
@@ -754,15 +754,33 @@ const CreateProductModal = ({ onSubmit, onCancel, sharedProducts, categories })
- - setFormData({ ...formData, customRateAmount: e.target.value })} - placeholder="2.5" - /> + {formData.productType === 'seed' ? ( +
+ +
+
+ + setSeedNewRate(e.target.value)} placeholder="e.g., 7" /> +
+
+ + setSeedOverRate(e.target.value)} placeholder="e.g., 3" /> +
+
+
+ ) : ( + <> + + setFormData({ ...formData, customRateAmount: e.target.value })} + placeholder="2.5" + /> + + )}
@@ -936,6 +954,18 @@ const EditProductModal = ({ product, onSubmit, onCancel, sharedProducts, categor const [editSeedBlend, setEditSeedBlend] = useState([]); const [editSeedNewRate, setEditSeedNewRate] = useState(''); const [editSeedOverRate, setEditSeedOverRate] = useState(''); + // Keep default rate synced in advanced edit when seed + useEffect(() => { + if (formData.productType === 'seed') { + const n = parseFloat(editSeedNewRate); + const o = parseFloat(editSeedOverRate); + let avg = ''; + if (!isNaN(n) && !isNaN(o)) avg = ((n + o) / 2).toFixed(2); + else if (!isNaN(n)) avg = n; + else if (!isNaN(o)) avg = o; + setFormData(prev => ({ ...prev, customRateAmount: avg })); + } + }, [formData.productType, editSeedNewRate, editSeedOverRate]); const [editMode, setEditMode] = useState('basic'); // 'basic' or 'advanced' const [editSpreaderSettings, setEditSpreaderSettings] = useState([]); @@ -1400,19 +1430,7 @@ const EditProductModal = ({ product, onSubmit, onCancel, sharedProducts, categor
{formData.productType === 'seed' ? ( - <> - -
-
- - setEditSeedNewRate(e.target.value)} placeholder="e.g., 7" /> -
-
- - setEditSeedOverRate(e.target.value)} placeholder="e.g., 3" /> -
-
- + ) : (
@@ -1439,15 +1457,33 @@ const EditProductModal = ({ product, onSubmit, onCancel, sharedProducts, categor
- - setFormData({ ...formData, customRateAmount: e.target.value })} - placeholder="2.5" - /> + {formData.productType === 'seed' ? ( +
+ +
+
+ + setEditSeedNewRate(e.target.value)} placeholder="e.g., 7" /> +
+
+ + setEditSeedOverRate(e.target.value)} placeholder="e.g., 3" /> +
+
+
+ ) : ( + <> + + setFormData({ ...formData, customRateAmount: e.target.value })} + placeholder="2.5" + /> + + )}