perf: defer cut yield recommendations
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m10s
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m10s
This commit is contained in:
@@ -157,6 +157,7 @@ const Cutting = () => {
|
|||||||
const [settingsSection, setSettingsSection] = useState<SettingsSection>('rules');
|
const [settingsSection, setSettingsSection] = useState<SettingsSection>('rules');
|
||||||
const [cuttingSettings, setCuttingSettings] = useState<CuttingSettings>(loadCuttingSettings);
|
const [cuttingSettings, setCuttingSettings] = useState<CuttingSettings>(loadCuttingSettings);
|
||||||
const [yieldRecommendations, setYieldRecommendations] = useState<ProductionYieldRecommendation[]>([]);
|
const [yieldRecommendations, setYieldRecommendations] = useState<ProductionYieldRecommendation[]>([]);
|
||||||
|
const [hasLoadedYieldRecommendations, setHasLoadedYieldRecommendations] = useState(false);
|
||||||
const [saveStatus, setSaveStatus] = useState<SaveStatus>('idle');
|
const [saveStatus, setSaveStatus] = useState<SaveStatus>('idle');
|
||||||
const [hasUnsavedSettings, setHasUnsavedSettings] = useState(false);
|
const [hasUnsavedSettings, setHasUnsavedSettings] = useState(false);
|
||||||
const [correctionIssueFilter, setCorrectionIssueFilter] = useState<CorrectionIssueFilter>('all');
|
const [correctionIssueFilter, setCorrectionIssueFilter] = useState<CorrectionIssueFilter>('all');
|
||||||
@@ -214,14 +215,22 @@ const Cutting = () => {
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (!isSettingsOpen || settingsSection !== 'rules' || hasLoadedYieldRecommendations) return;
|
||||||
|
|
||||||
let isMounted = true;
|
let isMounted = true;
|
||||||
void fetchProductionOrderImportData().then(data => {
|
void fetchProductionOrderImportData().then(data => {
|
||||||
if (isMounted) setYieldRecommendations(data.recommendations);
|
if (isMounted) {
|
||||||
|
setYieldRecommendations(data.recommendations);
|
||||||
|
setHasLoadedYieldRecommendations(true);
|
||||||
|
}
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
if (isMounted) setYieldRecommendations([]);
|
if (isMounted) {
|
||||||
|
setYieldRecommendations([]);
|
||||||
|
setHasLoadedYieldRecommendations(true);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
return () => { isMounted = false; };
|
return () => { isMounted = false; };
|
||||||
}, []);
|
}, [hasLoadedYieldRecommendations, isSettingsOpen, settingsSection]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
let isMounted = true;
|
let isMounted = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user