diff --git a/src/components/spreadsheet-view/hooks/use-spreadsheet-equipments.ts b/src/components/spreadsheet-view/hooks/use-spreadsheet-equipments.ts index ee7840d2f4..c9810db911 100644 --- a/src/components/spreadsheet-view/hooks/use-spreadsheet-equipments.ts +++ b/src/components/spreadsheet-view/hooks/use-spreadsheet-equipments.ts @@ -37,7 +37,7 @@ export const useSpreadsheetEquipments = () => { const applyToAllTypes = useCallback( (callback: (type: SpreadsheetEquipmentType) => void) => { - tablesDefinitions.map((tableDefinition) => tableDefinition.type).forEach((type) => callback(type)); + new Set(tablesDefinitions.map((tableDefinition) => tableDefinition.type)).forEach((type) => callback(type)); }, [tablesDefinitions] ); diff --git a/src/components/spreadsheet-view/spreadsheet/spreadsheet-content/spreadsheet-content.tsx b/src/components/spreadsheet-view/spreadsheet/spreadsheet-content/spreadsheet-content.tsx index ae218412e7..1c545313b2 100644 --- a/src/components/spreadsheet-view/spreadsheet/spreadsheet-content/spreadsheet-content.tsx +++ b/src/components/spreadsheet-view/spreadsheet/spreadsheet-content/spreadsheet-content.tsx @@ -80,10 +80,24 @@ export const SpreadsheetContent = memo( // Initial data loading for this type when the tab is opened useEffect(() => { - if (active && nodesIds.length > 0 && Object.keys(equipments.equipmentsByNodeId).length === 0) { + if ( + active && + nodesIds.length > 0 && + Object.keys(equipments.equipmentsByNodeId).length === 0 && + // There is automatic re-fetch in several cases (tree node change, aliases modified, loading options changed) in useSpreadsheetEquipments hook + // then we want to make sure the active tab is not duplicating fetch during automatic operation. + !equipments.isFetching + ) { fetchNodesEquipmentData(tableDefinition?.type, new Set(nodesIds)); } - }, [active, nodesIds, equipments.equipmentsByNodeId, fetchNodesEquipmentData, tableDefinition?.type]); + }, [ + active, + nodesIds, + equipments.equipmentsByNodeId, + fetchNodesEquipmentData, + tableDefinition?.type, + equipments.isFetching, + ]); const { onModelUpdated } = useGridCalculations(gridRef, tableDefinition.uuid, columns);