From cb68bffc7ab55eedf07dba1f3fbf40aeed7fc9ce Mon Sep 17 00:00:00 2001
From: Florent MILLOT <75525996+flomillot@users.noreply.github.com>
Date: Fri, 21 Nov 2025 15:11:02 +0100
Subject: [PATCH 1/4] Remove `resize-handle` component and update imports
accordingly
Signed-off-by: Florent MILLOT <75525996+flomillot@users.noreply.github.com>
---
src/components/resize-handle.tsx | 45 -------------------
.../global-filter/global-filter-paper.tsx | 4 +-
src/components/tree-tab.jsx | 4 +-
3 files changed, 4 insertions(+), 49 deletions(-)
delete mode 100644 src/components/resize-handle.tsx
diff --git a/src/components/resize-handle.tsx b/src/components/resize-handle.tsx
deleted file mode 100644
index 52cf46a279..0000000000
--- a/src/components/resize-handle.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * Copyright (c) 2025, RTE (http://www.rte-france.com)
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-
-import { PanelResizeHandle } from 'react-resizable-panels';
-import DragIndicatorIcon from '@mui/icons-material/DragIndicator';
-import { Theme, useTheme } from '@mui/material';
-
-interface ResizeHandleProps {
- visible: boolean;
- rotated?: boolean;
-}
-
-const getStyles = (theme: Theme, visible: boolean, rotated: boolean) => ({
- handle: {
- display: visible ? 'flex' : 'none',
- alignItems: 'center',
- backgroundColor: theme.palette.background.paper,
- borderLeft: !rotated ? `1px solid ${theme.palette.divider}` : 'none',
- borderTop: rotated ? `1px solid ${theme.palette.divider}` : 'none',
- justifyContent: 'center',
- },
- icon: {
- transform: rotated ? 'rotate(90deg)' : 'none',
- transition: 'transform 0.2s',
- color: 'inherit',
- cursor: 'ns-resize',
- },
-});
-
-const ResizeHandle = ({ visible, rotated = false }: ResizeHandleProps) => {
- const theme = useTheme();
- const styles = getStyles(theme, visible, rotated);
-
- return (
-
-
-
- );
-};
-
-export default ResizeHandle;
diff --git a/src/components/results/common/global-filter/global-filter-paper.tsx b/src/components/results/common/global-filter/global-filter-paper.tsx
index 0216b7862b..c79a76e5c6 100644
--- a/src/components/results/common/global-filter/global-filter-paper.tsx
+++ b/src/components/results/common/global-filter/global-filter-paper.tsx
@@ -5,7 +5,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
-import { Box, Button, Chip, Grid, ListItem, ListItemButton, Paper, Typography } from '@mui/material';
+import { Box, Button, Grid, ListItem, ListItemButton, Paper, Typography } from '@mui/material';
import {
getResultsGlobalFiltersChipStyle,
GLOBAL_FILTERS_CELL_HEIGHT,
@@ -28,8 +28,8 @@ import {
ElementType,
fetchElementsInfos,
mergeSx,
- TreeViewFinderNodeProps,
OverflowableChip,
+ TreeViewFinderNodeProps,
} from '@gridsuite/commons-ui';
import { GlobalFilterContext } from './global-filter-context';
diff --git a/src/components/tree-tab.jsx b/src/components/tree-tab.jsx
index e37ee44953..58d56fdb15 100644
--- a/src/components/tree-tab.jsx
+++ b/src/components/tree-tab.jsx
@@ -7,14 +7,14 @@
import { ReactFlowProvider } from '@xyflow/react';
import { Box, useTheme } from '@mui/material';
+import { ResizeHandle } from '@gridsuite/commons-ui';
import { Panel, PanelGroup } from 'react-resizable-panels';
-import { useMemo, useCallback } from 'react';
+import { useCallback, useMemo } from 'react';
import NetworkModificationTreePane from './network-modification-tree-pane';
import GridLayoutPanel from './grid-layout/grid-layout-panel';
import NodeEditor from './graph/menus/network-modifications/node-editor';
import ScenarioEditor from './graph/menus/dynamic-simulation/scenario-editor';
-import ResizeHandle from './resize-handle';
import { usePanelManager } from '../hooks/use-panel-manager';
import { PANEL_CONFIG, PANEL_IDS } from '../constants/panel.constants';
From 648219dca43d7a5eccd2fb2616a39848ea9a8b24 Mon Sep 17 00:00:00 2001
From: Florent MILLOT <75525996+flomillot@users.noreply.github.com>
Date: Mon, 24 Nov 2025 15:23:07 +0100
Subject: [PATCH 2/4] Move cell renderers to @gridsuite/commons-ui
The custom AG Grid cell renderers have been moved from the application-specific folder to the shared @gridsuite/commons-ui library. Updated all references across the codebase to use the shared cell renderers, simplifying code reuse and improving modularity.
Signed-off-by: Florent MILLOT <75525996+flomillot@users.noreply.github.com>
---
.../custom-aggrid/cell-renderers.tsx | 264 ------------------
.../line-type-segment-form.tsx | 9 +-
.../use-column-definitions.ts | 2 +-
.../limit-sets-tabular-modification-form.tsx | 7 +-
.../tabular/tabular-form.tsx | 13 +-
.../voltage-init-modification-dialog.tsx | 9 +-
.../network-modifications-table.tsx | 4 +-
src/components/report-viewer/log-table.tsx | 3 +-
...mic-security-analysis-result-synthesis.tsx | 3 +-
.../dynamic-simulation-result-synthesis.tsx | 3 +-
.../dynamic-simulation-result-timeline.tsx | 3 +-
.../loadflow/limit-violation-result.tsx | 3 +-
.../results/loadflow/load-flow-result.tsx | 3 +-
.../results/pccmin/pcc-min-result-table.tsx | 3 +-
.../security-analysis-result-utils.ts | 3 +-
.../security-analysis-table.tsx | 3 +-
.../sensitivity-analysis-result.tsx | 3 +-
.../shortcircuit-analysis-result-table.tsx | 11 +-
.../state-estimation-quality-result.tsx | 3 +-
.../columns/common-column-definitions.ts | 4 +-
.../columns/utils/column-mapper.ts | 2 +-
21 files changed, 50 insertions(+), 308 deletions(-)
delete mode 100644 src/components/custom-aggrid/cell-renderers.tsx
diff --git a/src/components/custom-aggrid/cell-renderers.tsx b/src/components/custom-aggrid/cell-renderers.tsx
deleted file mode 100644
index 12a580e037..0000000000
--- a/src/components/custom-aggrid/cell-renderers.tsx
+++ /dev/null
@@ -1,264 +0,0 @@
-/**
- * Copyright (c) 2023, RTE (http://www.rte-france.com)
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-
-import { Box, Checkbox, Tooltip } from '@mui/material';
-import { ReactNode, useEffect, useRef, useState } from 'react';
-import { isBlankOrEmpty } from 'components/utils/validation-functions';
-import { ICellRendererParams } from 'ag-grid-community';
-import { CustomCellRendererProps } from 'ag-grid-react';
-import { mergeSx, type MuiStyles } from '@gridsuite/commons-ui';
-import { useIntl } from 'react-intl';
-
-const styles = {
- tableCell: (theme) => ({
- fontSize: 'small',
- cursor: 'inherit',
- display: 'flex',
- '&:before': {
- content: '""',
- position: 'absolute',
- left: theme.spacing(0.5),
- right: theme.spacing(0.5),
- bottom: 0,
- },
- }),
- overflow: {
- whiteSpace: 'pre',
- textOverflow: 'ellipsis',
- overflow: 'hidden',
- },
- numericValue: {
- marginLeft: 'inherit',
- },
-} as const satisfies MuiStyles;
-
-const FORMULA_ERROR_KEY = 'spreadsheet/formula/error';
-
-interface BaseCellRendererProps {
- value: string | undefined;
- tooltip?: string;
-}
-
-export const BooleanCellRenderer = (props: any) => {
- const isChecked = props.value;
- return (
-
- {props.value !== undefined && (
-
- )}
-
- );
-};
-
-export const BooleanNullableCellRenderer = (props: any) => {
- return (
-
-
-
- );
-};
-
-const formatNumericCell = (value: number, fractionDigits?: number) => {
- if (value === null || isNaN(value)) {
- return { value: null };
- }
- return { value: value.toFixed(fractionDigits ?? 2), tooltip: value?.toString() };
-};
-
-const formatCell = (props: any) => {
- let value = props?.valueFormatted || props.value;
- let tooltipValue = undefined;
- // we use valueGetter only if value is not defined
- if (!value && props.colDef.valueGetter) {
- props.colDef.valueGetter(props);
- }
- if (value != null && props.colDef.context?.numeric && props.colDef.context?.fractionDigits) {
- // only numeric rounded cells have a tooltip (their raw numeric value)
- tooltipValue = value;
- value = parseFloat(value).toFixed(props.colDef.context.fractionDigits);
- }
- if (props.colDef.context?.numeric && isNaN(value)) {
- value = null;
- }
- return { value: value, tooltip: tooltipValue };
-};
-
-export interface NumericCellRendererProps extends CustomCellRendererProps {
- fractionDigits?: number;
-}
-
-export const NumericCellRenderer = (props: NumericCellRendererProps) => {
- const numericalValue = typeof props.value === 'number' ? props.value : Number.parseFloat(props.value);
- const cellValue = formatNumericCell(numericalValue, props.fractionDigits);
- return (
-
-
- {cellValue.value}
-
-
- );
-};
-
-const BaseCellRenderer = ({ value, tooltip }: BaseCellRendererProps) => (
-
-
- {value}
-
-
-);
-
-export const ErrorCellRenderer = (props: CustomCellRendererProps) => {
- const intl = useIntl();
- const errorMessage = intl.formatMessage({ id: props.value?.error });
- const errorValue = intl.formatMessage({ id: FORMULA_ERROR_KEY });
- return ;
-};
-
-export const DefaultCellRenderer = (props: CustomCellRendererProps) => {
- const cellValue = formatCell(props).value?.toString();
- return ;
-};
-
-export const NetworkModificationNameCellRenderer = (props: CustomCellRendererProps) => {
- return (
-
-
- {props.value}
-
-
- );
-};
-
-export const MessageLogCellRenderer = ({
- param,
- highlightColor,
- currentHighlightColor,
- searchTerm,
- currentResultIndex,
- searchResults,
-}: {
- param: ICellRendererParams;
- highlightColor?: string;
- currentHighlightColor?: string;
- searchTerm?: string;
- currentResultIndex?: number;
- searchResults?: number[];
-}) => {
- const marginLeft = (param.data?.depth ?? 0) * 2; // add indentation based on depth
- const textRef = useRef(null);
- const [isEllipsisActive, setIsEllipsisActive] = useState(false);
-
- const checkEllipsis = () => {
- if (textRef.current) {
- const zoomLevel = window.devicePixelRatio;
- const adjustedScrollWidth = textRef.current.scrollWidth / zoomLevel;
- const adjustedClientWidth = textRef.current.clientWidth / zoomLevel;
- setIsEllipsisActive(adjustedScrollWidth > adjustedClientWidth);
- }
- };
-
- useEffect(() => {
- checkEllipsis();
- const resizeObserver = new ResizeObserver(() => checkEllipsis());
- if (textRef.current) {
- resizeObserver.observe(textRef.current);
- }
-
- return () => {
- resizeObserver.disconnect();
- };
- }, [param.value]);
-
- const escapeRegExp = (string: string) => {
- return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
- };
-
- const renderHighlightedText = (value: string) => {
- if (!searchTerm || searchTerm === '') {
- return value;
- }
-
- const escapedSearchTerm = escapeRegExp(searchTerm);
- const parts = value.split(new RegExp(`(${escapedSearchTerm})`, 'gi'));
- return (
-
- {parts.map((part: string, index: number) =>
- part.toLowerCase() === searchTerm.toLowerCase() ? (
-
- {part}
-
- ) : (
- part
- )
- )}
-
- );
- };
-
- return (
-
-
-
- {renderHighlightedText(param.value)}
-
-
-
- );
-};
-
-export const ContingencyCellRenderer = ({ value }: { value: { cellValue: ReactNode; tooltipValue: ReactNode } }) => {
- const { cellValue, tooltipValue } = value ?? {};
-
- if (cellValue == null || tooltipValue == null) {
- return null;
- }
-
- return (
-
- {tooltipValue}}>
- {cellValue}
-
-
- );
-};
diff --git a/src/components/dialogs/line-types-catalog/line-type-segment-form.tsx b/src/components/dialogs/line-types-catalog/line-type-segment-form.tsx
index f83cbf7f6a..f6c6e9db53 100644
--- a/src/components/dialogs/line-types-catalog/line-type-segment-form.tsx
+++ b/src/components/dialogs/line-types-catalog/line-type-segment-form.tsx
@@ -29,13 +29,18 @@ import LineTypesCatalogSelectorDialog from './line-types-catalog-selector-dialog
import { roundToDefaultPrecision } from '../../../utils/rounding';
import LineTypeSegmentCreation from './line-type-segment-creation';
import { calculateReactance, calculateResistance, calculateSusceptance } from '../../utils/utils';
-import { CustomAGGrid, type MuiStyles, snackWithFallback, useSnackMessage } from '@gridsuite/commons-ui';
+import {
+ CustomAGGrid,
+ DefaultCellRenderer,
+ type MuiStyles,
+ snackWithFallback,
+ useSnackMessage,
+} from '@gridsuite/commons-ui';
import { getLineTypesCatalog } from '../../../services/network-modification';
import GridItem from '../commons/grid-item';
import { CurrentLimitsInfo, LineTypeInfo } from './line-catalog.type';
import { emptyLineSegment, SegmentFormData } from './segment-utils';
import { ColDef } from 'ag-grid-community';
-import { DefaultCellRenderer } from '../../custom-aggrid/cell-renderers';
import GridSection from '../commons/grid-section';
const styles = {
diff --git a/src/components/dialogs/line-types-catalog/use-column-definitions.ts b/src/components/dialogs/line-types-catalog/use-column-definitions.ts
index 7bc437832a..9dd1a33e60 100644
--- a/src/components/dialogs/line-types-catalog/use-column-definitions.ts
+++ b/src/components/dialogs/line-types-catalog/use-column-definitions.ts
@@ -7,7 +7,7 @@
import { useIntl } from 'react-intl';
import { useCallback, useMemo } from 'react';
import { ColDef } from 'ag-grid-community';
-import { DefaultCellRenderer } from '../../custom-aggrid/cell-renderers';
+import { DefaultCellRenderer } from '@gridsuite/commons-ui';
export const useColumnDefinitions = () => {
const intl = useIntl();
diff --git a/src/components/dialogs/network-modifications/limit-sets/limit-sets-tabular-modification-form.tsx b/src/components/dialogs/network-modifications/limit-sets/limit-sets-tabular-modification-form.tsx
index d67aa4ba4e..7852712621 100644
--- a/src/components/dialogs/network-modifications/limit-sets/limit-sets-tabular-modification-form.tsx
+++ b/src/components/dialogs/network-modifications/limit-sets/limit-sets-tabular-modification-form.tsx
@@ -10,7 +10,9 @@ import { FormattedMessage, useIntl } from 'react-intl';
import { useFormContext, useWatch } from 'react-hook-form';
import {
AutocompleteInput,
+ BooleanNullableCellRenderer,
CustomAGGrid,
+ DefaultCellRenderer,
ErrorInput,
FieldErrorAlert,
IntegerInput,
@@ -19,15 +21,14 @@ import {
} from '@gridsuite/commons-ui';
import {
AMOUNT_TEMPORARY_LIMITS,
- EQUIPMENT_ID,
CSV_FILENAME,
+ EQUIPMENT_ID,
MODIFICATIONS_TABLE,
TYPE,
} from 'components/utils/field-constants';
import { EQUIPMENT_TYPES } from 'components/utils/equipment-types';
import CsvDownloader from 'react-csv-downloader';
import { Alert, Button, Grid } from '@mui/material';
-import { BooleanNullableCellRenderer, DefaultCellRenderer } from 'components/custom-aggrid/cell-renderers';
import Papa from 'papaparse';
import { ColDef } from 'ag-grid-community';
import GridItem from '../../commons/grid-item';
@@ -35,7 +36,7 @@ import { useCSVPicker } from 'components/utils/inputs/input-hooks';
import { AGGRID_LOCALES } from '../../../../translations/not-intl/aggrid-locales';
import { useSelector } from 'react-redux';
import { AppState } from '../../../../redux/reducer';
-import { isFieldTypeOk, setFieldTypeError, transformIfFrenchNumber, TabularField } from '../tabular/tabular-common';
+import { isFieldTypeOk, setFieldTypeError, TabularField, transformIfFrenchNumber } from '../tabular/tabular-common';
import {
LIMIT_SETS_TABULAR_MODIFICATION_EQUIPMENTS,
LIMIT_SETS_TABULAR_MODIFICATION_FIXED_FIELDS,
diff --git a/src/components/dialogs/network-modifications/tabular/tabular-form.tsx b/src/components/dialogs/network-modifications/tabular/tabular-form.tsx
index 3ece800dd5..0e16fe5862 100644
--- a/src/components/dialogs/network-modifications/tabular/tabular-form.tsx
+++ b/src/components/dialogs/network-modifications/tabular/tabular-form.tsx
@@ -10,29 +10,30 @@ import { FormattedMessage, useIntl } from 'react-intl';
import { useFormContext, useWatch } from 'react-hook-form';
import {
AutocompleteInput,
+ BooleanNullableCellRenderer,
CustomAGGrid,
+ DefaultCellRenderer,
+ DirectoryItemSelector,
+ ElementType,
ErrorInput,
fetchStudyMetadata,
FieldErrorAlert,
LANG_FRENCH,
+ type MuiStyles,
+ type TreeViewFinderNodeProps,
useSnackMessage,
useStateBoolean,
- DirectoryItemSelector,
- ElementType,
- type TreeViewFinderNodeProps,
- type MuiStyles,
} from '@gridsuite/commons-ui';
import {
+ CSV_FILENAME,
EQUIPMENT_ID,
MODIFICATIONS_TABLE,
- CSV_FILENAME,
TABULAR_PROPERTIES,
TYPE,
} from 'components/utils/field-constants';
import { EQUIPMENT_TYPES } from 'components/utils/equipment-types';
import CsvDownloader from 'react-csv-downloader';
import { Alert, Button, Grid } from '@mui/material';
-import { BooleanNullableCellRenderer, DefaultCellRenderer } from 'components/custom-aggrid/cell-renderers';
import Papa from 'papaparse';
import GridItem from '../../commons/grid-item';
import { useCSVPicker } from 'components/utils/inputs/input-hooks';
diff --git a/src/components/dialogs/network-modifications/voltage-init-modification/voltage-init-modification-dialog.tsx b/src/components/dialogs/network-modifications/voltage-init-modification/voltage-init-modification-dialog.tsx
index 32f65b11b9..a357f667e5 100644
--- a/src/components/dialogs/network-modifications/voltage-init-modification/voltage-init-modification-dialog.tsx
+++ b/src/components/dialogs/network-modifications/voltage-init-modification/voltage-init-modification-dialog.tsx
@@ -7,7 +7,13 @@
import { FunctionComponent, useCallback, useMemo, useRef, useState } from 'react';
import { BasicModificationDialog } from '../../commons/basicModificationDialog';
-import { BooleanCellRenderer, DefaultCellRenderer } from '../../../custom-aggrid/cell-renderers';
+import {
+ BooleanCellRenderer,
+ CsvExport,
+ CustomAGGrid,
+ DefaultCellRenderer,
+ type MuiStyles,
+} from '@gridsuite/commons-ui';
import { FormattedMessage, useIntl } from 'react-intl';
import { Box, Grid, Tab, Tabs } from '@mui/material';
import { useOpenShortWaitFetching } from '../../commons/handle-modification-form';
@@ -24,7 +30,6 @@ import {
V,
VOLTAGE_SET_POINT,
} from '../../../utils/field-constants';
-import { CustomAGGrid, CsvExport, type MuiStyles } from '@gridsuite/commons-ui';
import { AgGridReact } from 'ag-grid-react';
import { FetchStatus } from '../../../../services/utils.type';
import type { ColDef, RowDataUpdatedEvent } from 'ag-grid-community';
diff --git a/src/components/graph/menus/network-modifications/network-modifications-table.tsx b/src/components/graph/menus/network-modifications/network-modifications-table.tsx
index 4b21e4990f..0b4a0504b8 100644
--- a/src/components/graph/menus/network-modifications/network-modifications-table.tsx
+++ b/src/components/graph/menus/network-modifications/network-modifications-table.tsx
@@ -5,11 +5,12 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
-import React, { useCallback, useEffect, useMemo, SetStateAction, useRef } from 'react';
+import React, { SetStateAction, useCallback, useEffect, useMemo, useRef } from 'react';
import {
CustomAGGrid,
type MuiStyles,
type NetworkModificationMetadata,
+ NetworkModificationNameCellRenderer,
useModificationLabelComputer,
} from '@gridsuite/commons-ui';
import type {
@@ -37,7 +38,6 @@ import RootNetworkChipCellRenderer from './root-network-chip-cell-renderer';
import SwitchCellRenderer from './switch-cell-renderer';
import { AGGRID_LOCALES } from '../../../../translations/not-intl/aggrid-locales';
import { ExcludedNetworkModifications } from './network-modification-menu.type';
-import { NetworkModificationNameCellRenderer } from 'components/custom-aggrid/cell-renderers';
import { AgGridReact } from 'ag-grid-react';
const styles = {
diff --git a/src/components/report-viewer/log-table.tsx b/src/components/report-viewer/log-table.tsx
index 448bf6e923..e7b9f38ebd 100644
--- a/src/components/report-viewer/log-table.tsx
+++ b/src/components/report-viewer/log-table.tsx
@@ -6,7 +6,7 @@
*/
import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { useIntl } from 'react-intl';
-import { CustomAGGrid, type MuiStyles, type SxStyle } from '@gridsuite/commons-ui';
+import { CustomAGGrid, MessageLogCellRenderer, type MuiStyles, type SxStyle } from '@gridsuite/commons-ui';
import { alpha, useTheme } from '@mui/material/styles';
import { setLogsFilter } from '../../redux/actions';
import { makeAgGridCustomHeaderColumn } from 'components/custom-aggrid/utils/custom-aggrid-header-utils';
@@ -28,7 +28,6 @@ import { ComputingAndNetworkModificationType, Log, SelectedReportLog, SeverityLe
import { COMPUTING_AND_NETWORK_MODIFICATION_TYPE } from 'utils/report/report.constant';
import VisibilityOffIcon from '@mui/icons-material/VisibilityOff';
import VisibilityIcon from '@mui/icons-material/Visibility';
-import { MessageLogCellRenderer } from 'components/custom-aggrid/cell-renderers';
import { CustomAggridComparatorFilter } from '../custom-aggrid/custom-aggrid-filters/custom-aggrid-comparator-filter';
import { useFilterSelector } from '../../hooks/use-filter-selector';
import { FilterConfig, FilterType } from '../../types/custom-aggrid-types';
diff --git a/src/components/results/dynamic-security-analysis/dynamic-security-analysis-result-synthesis.tsx b/src/components/results/dynamic-security-analysis/dynamic-security-analysis-result-synthesis.tsx
index b5f3a49004..b8a21c8ccc 100644
--- a/src/components/results/dynamic-security-analysis/dynamic-security-analysis-result-synthesis.tsx
+++ b/src/components/results/dynamic-security-analysis/dynamic-security-analysis-result-synthesis.tsx
@@ -11,11 +11,10 @@ import { memo, useMemo } from 'react';
import { useSelector } from 'react-redux';
import { getNoRowsMessage, useIntlResultStatusMessages } from '../../utils/aggrid-rows-handler';
import { makeAgGridCustomHeaderColumn } from '../../custom-aggrid/utils/custom-aggrid-header-utils';
-import { DefaultCellRenderer } from '../../custom-aggrid/cell-renderers';
+import { ComputingType, CustomAGGrid, DefaultCellRenderer, type MuiStyles } from '@gridsuite/commons-ui';
import { COL_STATUS, StatusCellRender } from '../common/result-cell-renderers';
import type { UUID } from 'node:crypto';
import { AppState } from '../../../redux/reducer';
-import { CustomAGGrid, ComputingType, type MuiStyles } from '@gridsuite/commons-ui';
import { fetchDynamicSecurityAnalysisStatus } from '../../../services/study/dynamic-security-analysis';
import { MEDIUM_COLUMN_WIDTH } from '../dynamicsimulation/utils/dynamic-simulation-result-utils';
import { dynamicSecurityAnalysisResultInvalidations } from '../../computing-status/use-all-computing-status';
diff --git a/src/components/results/dynamicsimulation/dynamic-simulation-result-synthesis.tsx b/src/components/results/dynamicsimulation/dynamic-simulation-result-synthesis.tsx
index 47dff27e9e..95051a3fe4 100644
--- a/src/components/results/dynamicsimulation/dynamic-simulation-result-synthesis.tsx
+++ b/src/components/results/dynamicsimulation/dynamic-simulation-result-synthesis.tsx
@@ -13,11 +13,10 @@ import { MEDIUM_COLUMN_WIDTH } from './utils/dynamic-simulation-result-utils';
import { useSelector } from 'react-redux';
import { getNoRowsMessage, useIntlResultStatusMessages } from '../../utils/aggrid-rows-handler';
import { makeAgGridCustomHeaderColumn } from '../../custom-aggrid/utils/custom-aggrid-header-utils';
-import { DefaultCellRenderer } from '../../custom-aggrid/cell-renderers';
+import { ComputingType, CustomAGGrid, DefaultCellRenderer, type MuiStyles } from '@gridsuite/commons-ui';
import { COL_STATUS, StatusCellRender } from '../common/result-cell-renderers';
import type { UUID } from 'node:crypto';
import { AppState } from '../../../redux/reducer';
-import { CustomAGGrid, ComputingType, type MuiStyles } from '@gridsuite/commons-ui';
import { dynamicSimulationResultInvalidations } from '../../computing-status/use-all-computing-status';
import { useNodeData } from 'components/use-node-data';
import { AGGRID_LOCALES } from '../../../translations/not-intl/aggrid-locales';
diff --git a/src/components/results/dynamicsimulation/dynamic-simulation-result-timeline.tsx b/src/components/results/dynamicsimulation/dynamic-simulation-result-timeline.tsx
index a0cf137777..dcf13ce73e 100644
--- a/src/components/results/dynamicsimulation/dynamic-simulation-result-timeline.tsx
+++ b/src/components/results/dynamicsimulation/dynamic-simulation-result-timeline.tsx
@@ -9,7 +9,7 @@ import { Box, LinearProgress } from '@mui/material';
import { memo, useMemo, useRef } from 'react';
import { useIntl } from 'react-intl';
import { makeAgGridCustomHeaderColumn } from '../../custom-aggrid/utils/custom-aggrid-header-utils';
-import { DefaultCellRenderer } from '../../custom-aggrid/cell-renderers';
+import { ComputingType, CustomAGGrid, DefaultCellRenderer, type MuiStyles } from '@gridsuite/commons-ui';
import { getNoRowsMessage, useIntlResultStatusMessages } from '../../utils/aggrid-rows-handler';
import { useSelector } from 'react-redux';
import { AppState } from '../../../redux/reducer';
@@ -18,7 +18,6 @@ import { TimelineEventKeyType } from './types/dynamic-simulation-result.type';
import { LARGE_COLUMN_WIDTH, MEDIUM_COLUMN_WIDTH, MIN_COLUMN_WIDTH } from './utils/dynamic-simulation-result-utils';
import { NumberCellRenderer } from '../common/result-cell-renderers';
import { DYNAMIC_SIMULATION_RESULT_SORT_STORE, TIMELINE } from 'utils/store-sort-filter-fields';
-import { CustomAGGrid, ComputingType, type MuiStyles } from '@gridsuite/commons-ui';
import { CustomAggridComparatorFilter } from '../../custom-aggrid/custom-aggrid-filters/custom-aggrid-comparator-filter';
import { AgGridReact } from 'ag-grid-react';
import { FilterType } from '../../../types/custom-aggrid-types';
diff --git a/src/components/results/loadflow/limit-violation-result.tsx b/src/components/results/loadflow/limit-violation-result.tsx
index 647c99cbf4..cc489263d2 100644
--- a/src/components/results/loadflow/limit-violation-result.tsx
+++ b/src/components/results/loadflow/limit-violation-result.tsx
@@ -13,7 +13,7 @@ import { RowClassParams } from 'ag-grid-community';
import { LimitViolationResultProps } from './load-flow-result.type';
import { getNoRowsMessage, getRows, useIntlResultStatusMessages } from '../../utils/aggrid-rows-handler';
-import { DefaultCellRenderer } from '../../custom-aggrid/cell-renderers';
+import { ComputingType, DefaultCellRenderer } from '@gridsuite/commons-ui';
import LinearProgress from '@mui/material/LinearProgress';
import { RunningStatus } from '../../utils/running-status';
@@ -21,7 +21,6 @@ import { useOpenLoaderShortWait } from '../../dialogs/commons/handle-loader';
import { RESULTS_LOADING_DELAY } from '../../network/constants';
import { RenderTableAndExportCsv } from '../../utils/renderTable-ExportCsv';
import { AgGridReact } from 'ag-grid-react';
-import { ComputingType } from '@gridsuite/commons-ui';
import { AppState } from 'redux/reducer';
export const LimitViolationResult: FunctionComponent = ({
diff --git a/src/components/results/loadflow/load-flow-result.tsx b/src/components/results/loadflow/load-flow-result.tsx
index f164ce1207..36ade1d97d 100644
--- a/src/components/results/loadflow/load-flow-result.tsx
+++ b/src/components/results/loadflow/load-flow-result.tsx
@@ -13,7 +13,7 @@ import { RowClassParams } from 'ag-grid-community';
import { LoadflowResultProps } from './load-flow-result.type';
import { getNoRowsMessage, getRows, useIntlResultStatusMessages } from '../../utils/aggrid-rows-handler';
-import { DefaultCellRenderer } from '../../custom-aggrid/cell-renderers';
+import { ComputingType, DefaultCellRenderer } from '@gridsuite/commons-ui';
import LinearProgress from '@mui/material/LinearProgress';
import { RunningStatus } from '../../utils/running-status';
@@ -22,7 +22,6 @@ import { RESULTS_LOADING_DELAY } from '../../network/constants';
import { RenderTableAndExportCsv } from '../../utils/renderTable-ExportCsv';
import { formatComponentResult } from './load-flow-result-utils';
import { AgGridReact } from 'ag-grid-react';
-import { ComputingType } from '@gridsuite/commons-ui';
import { AppState } from 'redux/reducer';
export const LoadFlowResult: FunctionComponent = ({ result, isLoadingResult, columnDefs }) => {
diff --git a/src/components/results/pccmin/pcc-min-result-table.tsx b/src/components/results/pccmin/pcc-min-result-table.tsx
index e1a4d0365f..dd7e4aead9 100644
--- a/src/components/results/pccmin/pcc-min-result-table.tsx
+++ b/src/components/results/pccmin/pcc-min-result-table.tsx
@@ -11,8 +11,7 @@ import { Box } from '@mui/material';
import { getNoRowsMessage, getRows, useIntlResultStatusMessages } from '../../utils/aggrid-rows-handler';
import { useSelector } from 'react-redux';
import { AppState } from '../../../redux/reducer';
-import { DefaultCellRenderer } from '../../custom-aggrid/cell-renderers';
-import { ComputingType } from '@gridsuite/commons-ui';
+import { ComputingType, DefaultCellRenderer } from '@gridsuite/commons-ui';
import { getPccMinColumns, PccMinResultTableProps } from './pcc-min-result.type';
import { AgGridReact } from 'ag-grid-react';
diff --git a/src/components/results/securityanalysis/security-analysis-result-utils.ts b/src/components/results/securityanalysis/security-analysis-result-utils.ts
index e4928b216a..89d02f0acd 100644
--- a/src/components/results/securityanalysis/security-analysis-result-utils.ts
+++ b/src/components/results/securityanalysis/security-analysis-result-utils.ts
@@ -16,7 +16,7 @@ import {
} from './security-analysis.type';
import { IntlShape } from 'react-intl';
import { ColDef, PostSortRowsParams, ValueFormatterParams, ValueGetterParams } from 'ag-grid-community';
-import { ContingencyCellRenderer } from 'components/custom-aggrid/cell-renderers';
+import { ComputingType, ContingencyCellRenderer } from '@gridsuite/commons-ui';
import { makeAgGridCustomHeaderColumn } from '../../custom-aggrid/utils/custom-aggrid-header-utils';
import { translateLimitNameBackToFront, translateLimitNameFrontToBack } from '../common/utils';
import {
@@ -25,7 +25,6 @@ import {
SECURITY_ANALYSIS_RESULT_SORT_STORE,
} from 'utils/store-sort-filter-fields';
import { fetchAvailableFilterEnumValues } from '../../../services/study';
-import { ComputingType } from '@gridsuite/commons-ui';
import { useSelector } from 'react-redux';
import { AppState } from 'redux/reducer';
import { UNDEFINED_ACCEPTABLE_DURATION } from '../../utils/utils';
diff --git a/src/components/results/securityanalysis/security-analysis-table.tsx b/src/components/results/securityanalysis/security-analysis-table.tsx
index 98d967a230..3e1d9f02de 100644
--- a/src/components/results/securityanalysis/security-analysis-table.tsx
+++ b/src/components/results/securityanalysis/security-analysis-table.tsx
@@ -10,10 +10,9 @@ import { SecurityAnalysisResultProps } from './security-analysis.type';
import { getNoRowsMessage, getRows, useIntlResultStatusMessages } from '../../utils/aggrid-rows-handler';
import { GridReadyEvent } from 'ag-grid-community';
import { IntlShape, useIntl } from 'react-intl';
-import { DefaultCellRenderer } from '../../custom-aggrid/cell-renderers';
+import { ComputingType, CustomAGGrid, DefaultCellRenderer } from '@gridsuite/commons-ui';
import { useSelector } from 'react-redux';
import { AppState } from '../../../redux/reducer';
-import { CustomAGGrid, ComputingType } from '@gridsuite/commons-ui';
import { AGGRID_LOCALES } from '../../../translations/not-intl/aggrid-locales';
export const SecurityAnalysisTable: FunctionComponent = ({
diff --git a/src/components/results/sensitivity-analysis/sensitivity-analysis-result.tsx b/src/components/results/sensitivity-analysis/sensitivity-analysis-result.tsx
index 41380b56dc..b209cf6626 100644
--- a/src/components/results/sensitivity-analysis/sensitivity-analysis-result.tsx
+++ b/src/components/results/sensitivity-analysis/sensitivity-analysis-result.tsx
@@ -10,13 +10,12 @@ import { useCallback, useMemo, useRef } from 'react';
import { TOOLTIP_DELAY } from 'utils/UIconstants';
import { getNoRowsMessage, getRows, useIntlResultStatusMessages } from '../../utils/aggrid-rows-handler';
import { useSelector } from 'react-redux';
-import { DefaultCellRenderer } from '../../custom-aggrid/cell-renderers';
+import { ComputingType, CustomAGGrid, CustomAGGridProps, DefaultCellRenderer } from '@gridsuite/commons-ui';
import { useOpenLoaderShortWait } from '../../dialogs/commons/handle-loader';
import { RunningStatus } from '../../utils/running-status';
import { RESULTS_LOADING_DELAY } from '../../network/constants';
import { Box, LinearProgress } from '@mui/material';
import { mappingTabs, SUFFIX_TYPES } from './sensitivity-analysis-result-utils.js';
-import { CustomAGGrid, CustomAGGridProps, ComputingType } from '@gridsuite/commons-ui';
import { SENSITIVITY_ANALYSIS_RESULT_SORT_STORE } from '../../../utils/store-sort-filter-fields';
import { FilterType as AgGridFilterType } from '../../../types/custom-aggrid-types';
import { makeAgGridCustomHeaderColumn } from '../../custom-aggrid/utils/custom-aggrid-header-utils';
diff --git a/src/components/results/shortcircuit/shortcircuit-analysis-result-table.tsx b/src/components/results/shortcircuit/shortcircuit-analysis-result-table.tsx
index 764621fc79..75f9681116 100644
--- a/src/components/results/shortcircuit/shortcircuit-analysis-result-table.tsx
+++ b/src/components/results/shortcircuit/shortcircuit-analysis-result-table.tsx
@@ -19,16 +19,21 @@ import {
import { getNoRowsMessage, getRows, useIntlResultStatusMessages } from '../../utils/aggrid-rows-handler';
import { useSelector } from 'react-redux';
import { AppState } from '../../../redux/reducer';
-import { DefaultCellRenderer } from '../../custom-aggrid/cell-renderers';
+import {
+ ComputingType,
+ CustomAGGrid,
+ DefaultCellRenderer,
+ OverflowableText,
+ unitToKiloUnit,
+} from '@gridsuite/commons-ui';
import { makeAgGridCustomHeaderColumn } from '../../custom-aggrid/utils/custom-aggrid-header-utils';
-import { CustomAGGrid, unitToKiloUnit, ComputingType, OverflowableText } from '@gridsuite/commons-ui';
import { convertSide } from '../loadflow/load-flow-result-utils';
import { CustomAggridComparatorFilter } from '../../custom-aggrid/custom-aggrid-filters/custom-aggrid-comparator-filter';
import { CustomAggridAutocompleteFilter } from '../../custom-aggrid/custom-aggrid-filters/custom-aggrid-autocomplete-filter';
import { SHORTCIRCUIT_ANALYSIS_RESULT_SORT_STORE } from '../../../utils/store-sort-filter-fields';
import {
- FilterType as AgGridFilterType,
FilterConfig,
+ FilterType as AgGridFilterType,
numericFilterParams,
textFilterParams,
} from '../../../types/custom-aggrid-types';
diff --git a/src/components/results/stateestimation/state-estimation-quality-result.tsx b/src/components/results/stateestimation/state-estimation-quality-result.tsx
index 9854e025c5..e6c6f12141 100644
--- a/src/components/results/stateestimation/state-estimation-quality-result.tsx
+++ b/src/components/results/stateestimation/state-estimation-quality-result.tsx
@@ -11,11 +11,10 @@ import { useSelector } from 'react-redux';
import { Box, useTheme } from '@mui/material';
import { RowClassParams } from 'ag-grid-community';
-import { ComputingType } from '@gridsuite/commons-ui';
+import { ComputingType, DefaultCellRenderer } from '@gridsuite/commons-ui';
import { AppState } from '../../../redux/reducer';
import { getNoRowsMessage, getRows, useIntlResultStatusMessages } from '../../utils/aggrid-rows-handler';
-import { DefaultCellRenderer } from '../../custom-aggrid/cell-renderers';
import LinearProgress from '@mui/material/LinearProgress';
import { RunningStatus } from '../../utils/running-status';
diff --git a/src/components/spreadsheet-view/columns/common-column-definitions.ts b/src/components/spreadsheet-view/columns/common-column-definitions.ts
index 574cc7d65e..0dbd0ed093 100644
--- a/src/components/spreadsheet-view/columns/common-column-definitions.ts
+++ b/src/components/spreadsheet-view/columns/common-column-definitions.ts
@@ -6,9 +6,9 @@
*/
import { COLUMN_TYPES } from '../../custom-aggrid/custom-aggrid-header.type';
import { CustomAggridBooleanFilter } from '../../custom-aggrid/custom-aggrid-filters/custom-aggrid-boolean-filter';
-import { BooleanCellRenderer, DefaultCellRenderer, NumericCellRenderer } from '../../custom-aggrid/cell-renderers';
+import { BooleanCellRenderer, DefaultCellRenderer, NumericCellRenderer } from '@gridsuite/commons-ui';
import { RowIndexCellRenderer } from 'components/custom-aggrid/rowindex-cell-renderer';
-import type { ColDef, IFilterOptionDef, GridApi } from 'ag-grid-community';
+import type { ColDef, GridApi, IFilterOptionDef } from 'ag-grid-community';
import CustomHeaderComponent from '../../custom-aggrid/custom-aggrid-header';
import { CustomAggridComparatorFilter } from '../../custom-aggrid/custom-aggrid-filters/custom-aggrid-comparator-filter';
import { SPREADSHEET_SORT_STORE } from '../../../utils/store-sort-filter-fields';
diff --git a/src/components/spreadsheet-view/columns/utils/column-mapper.ts b/src/components/spreadsheet-view/columns/utils/column-mapper.ts
index 7e1da76d73..6138c48760 100644
--- a/src/components/spreadsheet-view/columns/utils/column-mapper.ts
+++ b/src/components/spreadsheet-view/columns/utils/column-mapper.ts
@@ -21,7 +21,7 @@ import {
type CustomColDef,
} from '../../../custom-aggrid/custom-aggrid-filters/custom-aggrid-filter.type';
import { isCalculationRow } from '../../utils/calculation-utils';
-import { ErrorCellRenderer } from '../../../custom-aggrid/cell-renderers';
+import { ErrorCellRenderer } from '@gridsuite/commons-ui';
const createValueGetter =
(colDef: ColumnDefinition) =>
From 00eadfe2c6785cc7ec1b5fbe393cc85c6093a3ca Mon Sep 17 00:00:00 2001
From: Florent MILLOT <75525996+flomillot@users.noreply.github.com>
Date: Wed, 26 Nov 2025 12:29:35 +0100
Subject: [PATCH 3/4] CLEAR IMPORTS
Signed-off-by: Florent MILLOT <75525996+flomillot@users.noreply.github.com>
---
src/components/results/pccmin/pcc-min-result-table.tsx | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/src/components/results/pccmin/pcc-min-result-table.tsx b/src/components/results/pccmin/pcc-min-result-table.tsx
index b0205be38f..e418e53b5e 100644
--- a/src/components/results/pccmin/pcc-min-result-table.tsx
+++ b/src/components/results/pccmin/pcc-min-result-table.tsx
@@ -11,12 +11,8 @@ import { Box, Button, LinearProgress } from '@mui/material';
import { useDispatch, useSelector } from 'react-redux';
import { AppState } from '../../../redux/reducer';
import { AgGridReact } from 'ag-grid-react';
-import { CustomAGGrid, ComputingType, OverflowableText } from '@gridsuite/commons-ui';
+import { ComputingType, CustomAGGrid, DefaultCellRenderer, OverflowableText } from '@gridsuite/commons-ui';
import { getNoRowsMessage, getRows, useIntlResultStatusMessages } from '../../utils/aggrid-rows-handler';
-import { useSelector } from 'react-redux';
-import { AppState } from '../../../redux/reducer';
-import { ComputingType, DefaultCellRenderer } from '@gridsuite/commons-ui';
-
import { getPccMinColumns, PccMinResultTableProps } from './pcc-min-result.type';
import { RESULTS_LOADING_DELAY } from 'components/network/constants';
import RunningStatus from 'components/utils/running-status';
From a26914fe039effb35ee61ea555828442032a6c9f Mon Sep 17 00:00:00 2001
From: Florent MILLOT <75525996+flomillot@users.noreply.github.com>
Date: Wed, 26 Nov 2025 16:37:17 +0100
Subject: [PATCH 4/4] fix bad merge, remove file
Signed-off-by: Florent MILLOT <75525996+flomillot@users.noreply.github.com>
---
src/components/tree-tab.jsx | 0
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 src/components/tree-tab.jsx
diff --git a/src/components/tree-tab.jsx b/src/components/tree-tab.jsx
deleted file mode 100644
index e69de29bb2..0000000000