From ed247b9eea1edc009774cef38c5edbb8de2f9236 Mon Sep 17 00:00:00 2001 From: Rehili Ghazwa Date: Sat, 7 Feb 2026 22:20:59 +0100 Subject: [PATCH 1/7] fix filter value --- .../global-filter/use-computation-column-filters.ts | 12 ++++++++++-- .../common/update-computation-columns-filters.ts | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/components/results/common/global-filter/use-computation-column-filters.ts b/src/components/results/common/global-filter/use-computation-column-filters.ts index 3d55c5f32b..78a587f1fd 100644 --- a/src/components/results/common/global-filter/use-computation-column-filters.ts +++ b/src/components/results/common/global-filter/use-computation-column-filters.ts @@ -21,13 +21,19 @@ function toColumnFilterInfos(infos: ComputationResultColumnFilterInfos[] | null) } return infos.flatMap(mapColumnFilters); } - +function parseFilterValue(filterValue: string) { + const parsed = JSON.parse(filterValue); + if (!Array.isArray(parsed)) { + return parsed; + } + return parsed.flatMap((v) => (typeof v === 'string' ? v.split(',').map((s) => s.trim()) : v)); +} function mapColumnFilters({ columnId, columnFilterInfos }: ComputationResultColumnFilterInfos): FilterConfig[] { const filters = Array.isArray(columnFilterInfos) ? columnFilterInfos : [columnFilterInfos]; return filters.map((filter) => ({ column: columnId, - value: filter.filterValue, + value: parseFilterValue(filter.filterValue), type: filter.filterType, dataType: filter.filterDataType, tolerance: filter.filterTolerance ?? undefined, @@ -42,6 +48,8 @@ export function useComputationColumnFilters(filterType: FilterType, computationS studyUuid && getComputationResultColumnFilters(studyUuid, filterType, computationSubType).then((infos) => { const filters = toColumnFilterInfos(infos); + console.log('===========================toColumnFilterInfos', filters); + dispatch(updateColumnFiltersAction(filterType, computationSubType, filters)); }); }, [dispatch, studyUuid, filterType, computationSubType]); diff --git a/src/components/results/common/update-computation-columns-filters.ts b/src/components/results/common/update-computation-columns-filters.ts index 4bf3aa3106..e07226d433 100644 --- a/src/components/results/common/update-computation-columns-filters.ts +++ b/src/components/results/common/update-computation-columns-filters.ts @@ -29,7 +29,7 @@ export const updateComputationColumnsFilters = ( ? { filterDataType: filter?.dataType, filterType: filter?.type, - filterValue: filter?.value, + filterValue: JSON.stringify(filter.value), filterTolerance: filter?.tolerance, } : null, From a578bc38f8362fdadb9f6b0b7b9d13883b76c0c9 Mon Sep 17 00:00:00 2001 From: Rehili Ghazwa Date: Mon, 9 Feb 2026 15:28:40 +0100 Subject: [PATCH 2/7] clean console log --- .../common/global-filter/use-computation-column-filters.ts | 2 -- .../results/common/update-computation-columns-filters.ts | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/components/results/common/global-filter/use-computation-column-filters.ts b/src/components/results/common/global-filter/use-computation-column-filters.ts index 78a587f1fd..9e60ca1a2f 100644 --- a/src/components/results/common/global-filter/use-computation-column-filters.ts +++ b/src/components/results/common/global-filter/use-computation-column-filters.ts @@ -48,8 +48,6 @@ export function useComputationColumnFilters(filterType: FilterType, computationS studyUuid && getComputationResultColumnFilters(studyUuid, filterType, computationSubType).then((infos) => { const filters = toColumnFilterInfos(infos); - console.log('===========================toColumnFilterInfos', filters); - dispatch(updateColumnFiltersAction(filterType, computationSubType, filters)); }); }, [dispatch, studyUuid, filterType, computationSubType]); diff --git a/src/components/results/common/update-computation-columns-filters.ts b/src/components/results/common/update-computation-columns-filters.ts index e07226d433..9c6664ff75 100644 --- a/src/components/results/common/update-computation-columns-filters.ts +++ b/src/components/results/common/update-computation-columns-filters.ts @@ -29,7 +29,7 @@ export const updateComputationColumnsFilters = ( ? { filterDataType: filter?.dataType, filterType: filter?.type, - filterValue: JSON.stringify(filter.value), + filterValue: JSON.stringify(filter?.value), filterTolerance: filter?.tolerance, } : null, From 53d34feb4db8962c462cb1aeab1fb0d0a0242437 Mon Sep 17 00:00:00 2001 From: Rehili Ghazwa Date: Wed, 11 Feb 2026 16:38:31 +0100 Subject: [PATCH 3/7] fix filter value --- .../results/loadflow/load-flow-result-utils.ts | 18 +++++++++--------- .../security-analysis-result-utils.ts | 16 ++++++++++++++++ .../shortcircuit-analysis-result-table.tsx | 7 +++++++ 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/src/components/results/loadflow/load-flow-result-utils.ts b/src/components/results/loadflow/load-flow-result-utils.ts index 2586567444..28de9f4661 100644 --- a/src/components/results/loadflow/load-flow-result-utils.ts +++ b/src/components/results/loadflow/load-flow-result-utils.ts @@ -52,12 +52,12 @@ import { SubjectIdRendererType } from '../securityanalysis/security-analysis.typ import { updateComputationColumnsFilters } from '../common/update-computation-columns-filters'; import { SortParams } from '../../custom-aggrid/hooks/use-custom-aggrid-sort'; -export const convertSide = (side: string | undefined, intl: IntlShape) => { +export const convertSide = (side: string | undefined, intl: IntlShape): string => { return side === BranchSide.ONE ? intl.formatMessage({ id: 'Side1' }) : side === BranchSide.TWO ? intl.formatMessage({ id: 'Side2' }) - : undefined; + : ''; }; export const FROM_COLUMN_TO_FIELD_LIMIT_VIOLATION_RESULT: Record = { @@ -139,7 +139,7 @@ export const makeData = ( patlLimit: overloadedEquipment.patlLimit, limitName: translateLimitNameBackToFront(overloadedEquipment.limitName, intl), nextLimitName: translateLimitNameBackToFront(overloadedEquipment.nextLimitName, intl), - side: convertSide(overloadedEquipment.side, intl), + side: overloadedEquipment.side, limitType: overloadedEquipment.limitType, }; }); @@ -373,13 +373,12 @@ export const loadFlowCurrentViolationsColumnsDefinition = ( getOptionLabel: getEnumLabel, } ), + valueGetter: (value: ValueGetterParams) => value.data.side, + valueFormatter: (params: ValueFormatterParams) => getEnumLabel(params.value), }), ]; }; -export const formatLimitType = (limitType: string, intl: IntlShape) => { - return limitType in LimitTypes ? intl.formatMessage({ id: limitType }) : limitType; -}; export const loadFlowVoltageViolationsColumnsDefinition = ( intl: IntlShape, filterEnums: FilterEnumsType, @@ -417,9 +416,8 @@ export const loadFlowVoltageViolationsColumnsDefinition = ( getOptionLabel: getEnumLabel, } ), - valueGetter: (value: ValueGetterParams) => { - return formatLimitType(value.data.limitType, intl); - }, + valueGetter: (value: ValueGetterParams) => value.data.limitType, + valueFormatter: (params: ValueFormatterParams) => getEnumLabel(params.value), }), makeAgGridCustomHeaderColumn( makeAgGridFloatColumn('VoltageViolationLimit', 'limit', intl, sortParams, filterParams) @@ -466,6 +464,8 @@ export const componentColumnsDefinition = ( getOptionLabel: getEnumLabel, } ), + valueGetter: (value: ValueGetterParams) => value.data.status, + valueFormatter: (params: ValueFormatterParams) => getEnumLabel(params.value), cellRenderer: statusCellRender, }), makeAgGridCustomHeaderColumn({ diff --git a/src/components/results/securityanalysis/security-analysis-result-utils.ts b/src/components/results/securityanalysis/security-analysis-result-utils.ts index 9768c64cc1..8930a7f1a7 100644 --- a/src/components/results/securityanalysis/security-analysis-result-utils.ts +++ b/src/components/results/securityanalysis/security-analysis-result-utils.ts @@ -313,6 +313,8 @@ export const securityAnalysisTableNColumnsDefinition = ( getOptionLabel: getEnumLabel, }, }, + valueGetter: (value: ValueGetterParams) => value.data.limitType, + valueFormatter: (params: ValueFormatterParams) => getEnumLabel(params.value), }), makeAgGridCustomHeaderColumn(makeAgGridStringColumn('Bus', 'locationId', intl, filterParams, sortParams)), makeAgGridCustomHeaderColumn({ @@ -372,6 +374,8 @@ export const securityAnalysisTableNColumnsDefinition = ( getOptionLabel: getEnumLabel, }, }, + valueGetter: (value: ValueGetterParams) => value.data.side, + valueFormatter: (params: ValueFormatterParams) => getEnumLabel(params.value), }), ]; }; @@ -408,6 +412,8 @@ export const securityAnalysisTableNmKContingenciesColumnsDefinition = ( getOptionLabel: getEnumLabel, }, }, + valueGetter: (value: ValueGetterParams) => value.data.status, + valueFormatter: (params: ValueFormatterParams) => getEnumLabel(params.value), }), makeAgGridCustomHeaderColumn({ ...makeAgGridStringColumn('Equipment', 'subjectId', intl, filterParams, { @@ -432,6 +438,8 @@ export const securityAnalysisTableNmKContingenciesColumnsDefinition = ( getOptionLabel: getEnumLabel, }, }, + valueGetter: (value: ValueGetterParams) => value.data.limitType, + valueFormatter: (params: ValueFormatterParams) => getEnumLabel(params.value), }), makeAgGridCustomHeaderColumn( makeAgGridStringColumn('Bus', 'locationId', intl, filterParams, { @@ -532,6 +540,8 @@ export const securityAnalysisTableNmKContingenciesColumnsDefinition = ( getOptionLabel: getEnumLabel, }, }, + valueGetter: (value: ValueGetterParams) => value.data.side, + valueFormatter: (params: ValueFormatterParams) => getEnumLabel(params.value), }), //the following column is used purely to determine which rows are a group 'parent' and which are its 'children' //it is used for sorting actions @@ -582,6 +592,8 @@ export const securityAnalysisTableNmKConstraintsColumnsDefinition = ( getOptionLabel: getEnumLabel, }, }, + valueGetter: (value: ValueGetterParams) => value.data.status, + valueFormatter: (params: ValueFormatterParams) => getEnumLabel(params.value), }), makeAgGridCustomHeaderColumn({ headerName: intl.formatMessage({ id: 'ViolationType' }), @@ -599,6 +611,8 @@ export const securityAnalysisTableNmKConstraintsColumnsDefinition = ( getOptionLabel: getEnumLabel, }, }, + valueGetter: (value: ValueGetterParams) => value.data.limitType, + valueFormatter: (params: ValueFormatterParams) => getEnumLabel(params.value), }), makeAgGridCustomHeaderColumn( makeAgGridStringColumn('Bus', 'locationId', intl, filterParams, { @@ -690,6 +704,8 @@ export const securityAnalysisTableNmKConstraintsColumnsDefinition = ( getOptionLabel: getEnumLabel, }, }, + valueGetter: (value: ValueGetterParams) => value.data.side, + valueFormatter: (params: ValueFormatterParams) => getEnumLabel(params.value), }), //the following column is used purely to determine which rows are a group 'parent' and which are its 'children' //it is used for sorting actions diff --git a/src/components/results/shortcircuit/shortcircuit-analysis-result-table.tsx b/src/components/results/shortcircuit/shortcircuit-analysis-result-table.tsx index e2c741d05b..7ec87d5172 100644 --- a/src/components/results/shortcircuit/shortcircuit-analysis-result-table.tsx +++ b/src/components/results/shortcircuit/shortcircuit-analysis-result-table.tsx @@ -15,6 +15,7 @@ import { ICellRendererParams, RowClassParams, RowDataUpdatedEvent, + ValueFormatterParams, ValueGetterParams, } from 'ag-grid-community'; import { getNoRowsMessage, getRows, useIntlResultStatusMessages } from '../../utils/aggrid-rows-handler'; @@ -237,6 +238,8 @@ const ShortCircuitAnalysisResultTable: FunctionComponent value.data.faultType, + valueFormatter: (params: ValueFormatterParams) => getEnumLabel(params.value), }), makeAgGridCustomHeaderColumn({ headerName: intl.formatMessage({ id: 'Feeders' }), @@ -267,6 +270,8 @@ const ShortCircuitAnalysisResultTable: FunctionComponent value.data.side, + valueFormatter: (params: ValueFormatterParams) => getEnumLabel(params.value), }), { ...makeAgGridCustomHeaderColumn({ @@ -276,6 +281,8 @@ const ShortCircuitAnalysisResultTable: FunctionComponent value.data.limitType, + valueFormatter: (params: ValueFormatterParams) => getEnumLabel(params.value), }), minWidth: 150, }, From 6b00e285d7f95566f1f541f4d48bf63a3fbdeed9 Mon Sep 17 00:00:00 2001 From: Rehili Ghazwa Date: Wed, 11 Feb 2026 16:45:00 +0100 Subject: [PATCH 4/7] unused import --- src/components/results/loadflow/load-flow-result-utils.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/results/loadflow/load-flow-result-utils.ts b/src/components/results/loadflow/load-flow-result-utils.ts index 28de9f4661..be14ac25d2 100644 --- a/src/components/results/loadflow/load-flow-result-utils.ts +++ b/src/components/results/loadflow/load-flow-result-utils.ts @@ -10,7 +10,6 @@ import { CountryAdequacy, ExchangePair, ExchangeValue, - LimitTypes, OverloadedEquipment, OverloadedEquipmentFromBack, } from './load-flow-result.type'; From 2dcc2b30cfa1900b3ce4b74842339df9403297b0 Mon Sep 17 00:00:00 2001 From: Rehili Ghazwa Date: Fri, 13 Feb 2026 10:30:09 +0100 Subject: [PATCH 5/7] enhance code --- .../update-computation-columns-filters.ts | 8 ++--- .../use-computation-column-filters.ts | 32 +++++++------------ .../dynamic-simulation-result-timeline.tsx | 2 +- .../results/loadflow/load-flow-result-tab.tsx | 2 +- .../loadflow/load-flow-result-utils.ts | 2 +- .../results/pccmin/pcc-min-result.tsx | 2 +- .../results/pccmin/pcc-min-result.type.ts | 2 +- .../security-analysis-result-tab.tsx | 2 +- .../security-analysis-result-utils.ts | 2 +- .../paged-sensitivity-analysis-result.tsx | 2 +- .../sensitivity-analysis-result.tsx | 2 +- .../shortcircuit-analysis-result-table.tsx | 4 +-- .../shortcircuit-analysis-result.tsx | 2 +- src/services/study/study-config.ts | 4 +-- 14 files changed, 29 insertions(+), 39 deletions(-) rename src/components/results/common/{ => column-filter}/update-computation-columns-filters.ts (82%) rename src/components/results/common/{global-filter => column-filter}/use-computation-column-filters.ts (63%) diff --git a/src/components/results/common/update-computation-columns-filters.ts b/src/components/results/common/column-filter/update-computation-columns-filters.ts similarity index 82% rename from src/components/results/common/update-computation-columns-filters.ts rename to src/components/results/common/column-filter/update-computation-columns-filters.ts index 9c6664ff75..c115e21e9d 100644 --- a/src/components/results/common/update-computation-columns-filters.ts +++ b/src/components/results/common/column-filter/update-computation-columns-filters.ts @@ -4,8 +4,8 @@ * 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 { FilterConfig, FilterType } from '../../../types/custom-aggrid-types'; -import { updateComputationResultFiltersColumn } from '../../../services/study/study-config'; +import { FilterConfig, FilterType } from '../../../../types/custom-aggrid-types'; +import { updateComputationResultFiltersColumn } from '../../../../services/study/study-config'; import { GridApi } from 'ag-grid-community'; import { UUID } from 'node:crypto'; @@ -23,7 +23,7 @@ export const updateComputationColumnsFilters = ( } const filter = filters?.find((f) => f.column === colId); onBeforePersist?.(); - const columnDto = { + const columnFilterInfos = { columnId: colId, columnFilterInfos: filter ? { @@ -34,5 +34,5 @@ export const updateComputationColumnsFilters = ( } : null, }; - updateComputationResultFiltersColumn(studyUuid, filterType, filterSubType, columnDto).then(); + updateComputationResultFiltersColumn(studyUuid, filterType, filterSubType, columnFilterInfos).then(); }; diff --git a/src/components/results/common/global-filter/use-computation-column-filters.ts b/src/components/results/common/column-filter/use-computation-column-filters.ts similarity index 63% rename from src/components/results/common/global-filter/use-computation-column-filters.ts rename to src/components/results/common/column-filter/use-computation-column-filters.ts index 9e60ca1a2f..462deff073 100644 --- a/src/components/results/common/global-filter/use-computation-column-filters.ts +++ b/src/components/results/common/column-filter/use-computation-column-filters.ts @@ -15,29 +15,19 @@ export type ComputationResultColumnFilterInfos = { columnId: string; columnFilterInfos: FilterConfig; }; -function toColumnFilterInfos(infos: ComputationResultColumnFilterInfos[] | null): FilterConfig[] { +function toFilterConfig(infos: ComputationResultColumnFilterInfos[] | null): FilterConfig[] { if (!Array.isArray(infos)) { return EMPTY_ARRAY; } - return infos.flatMap(mapColumnFilters); -} -function parseFilterValue(filterValue: string) { - const parsed = JSON.parse(filterValue); - if (!Array.isArray(parsed)) { - return parsed; - } - return parsed.flatMap((v) => (typeof v === 'string' ? v.split(',').map((s) => s.trim()) : v)); -} -function mapColumnFilters({ columnId, columnFilterInfos }: ComputationResultColumnFilterInfos): FilterConfig[] { - const filters = Array.isArray(columnFilterInfos) ? columnFilterInfos : [columnFilterInfos]; - - return filters.map((filter) => ({ - column: columnId, - value: parseFilterValue(filter.filterValue), - type: filter.filterType, - dataType: filter.filterDataType, - tolerance: filter.filterTolerance ?? undefined, - })); + return infos.flatMap(({ columnId, columnFilterInfos }) => + (Array.isArray(columnFilterInfos) ? columnFilterInfos : [columnFilterInfos]).map((filter) => ({ + column: columnId, + value: JSON.parse(filter.filterValue), + type: filter.filterType, + dataType: filter.filterDataType, + tolerance: filter.filterTolerance, + })) + ); } const EMPTY_ARRAY: FilterConfig[] = []; @@ -47,7 +37,7 @@ export function useComputationColumnFilters(filterType: FilterType, computationS useEffect(() => { studyUuid && getComputationResultColumnFilters(studyUuid, filterType, computationSubType).then((infos) => { - const filters = toColumnFilterInfos(infos); + const filters = toFilterConfig(infos); dispatch(updateColumnFiltersAction(filterType, computationSubType, filters)); }); }, [dispatch, studyUuid, filterType, computationSubType]); diff --git a/src/components/results/dynamicsimulation/dynamic-simulation-result-timeline.tsx b/src/components/results/dynamicsimulation/dynamic-simulation-result-timeline.tsx index 029e1d610d..10f5cf86f2 100644 --- a/src/components/results/dynamicsimulation/dynamic-simulation-result-timeline.tsx +++ b/src/components/results/dynamicsimulation/dynamic-simulation-result-timeline.tsx @@ -29,7 +29,7 @@ import { } from '../../custom-aggrid/custom-aggrid-filters/custom-aggrid-filter.type'; import { AGGRID_LOCALES } from '../../../translations/not-intl/aggrid-locales'; import { fetchDynamicSimulationResultTimeline } from '../../../services/study/dynamic-simulation'; -import { updateComputationColumnsFilters } from '../common/update-computation-columns-filters'; +import { updateComputationColumnsFilters } from '../common/column-filter/update-computation-columns-filters'; import { useAgGridInitialColumnFilters } from '../common/use-ag-grid-initial-column-filters'; const styles = { diff --git a/src/components/results/loadflow/load-flow-result-tab.tsx b/src/components/results/loadflow/load-flow-result-tab.tsx index e35c9951e4..9c9593a1a3 100644 --- a/src/components/results/loadflow/load-flow-result-tab.tsx +++ b/src/components/results/loadflow/load-flow-result-tab.tsx @@ -55,7 +55,7 @@ import { useLoadFlowResultColumnActions } from './use-load-flow-result-column-ac import { useOpenLoaderShortWait } from '../../dialogs/commons/handle-loader'; import { RESULTS_LOADING_DELAY } from '../../network/constants'; import { useComputationGlobalFilters } from '../common/global-filter/use-computation-global-filters'; -import { useComputationColumnFilters } from '../common/global-filter/use-computation-column-filters'; +import { useComputationColumnFilters } from '../common/column-filter/use-computation-column-filters'; const styles = { flexWrapper: { diff --git a/src/components/results/loadflow/load-flow-result-utils.ts b/src/components/results/loadflow/load-flow-result-utils.ts index be14ac25d2..9a26c613fa 100644 --- a/src/components/results/loadflow/load-flow-result-utils.ts +++ b/src/components/results/loadflow/load-flow-result-utils.ts @@ -48,7 +48,7 @@ import { } from '../../custom-aggrid/custom-aggrid-filters/custom-aggrid-filter.type'; import { convertDuration, formatNAValue } from 'components/custom-aggrid/utils/format-values-utils'; import { SubjectIdRendererType } from '../securityanalysis/security-analysis.type'; -import { updateComputationColumnsFilters } from '../common/update-computation-columns-filters'; +import { updateComputationColumnsFilters } from '../common/column-filter/update-computation-columns-filters'; import { SortParams } from '../../custom-aggrid/hooks/use-custom-aggrid-sort'; export const convertSide = (side: string | undefined, intl: IntlShape): string => { diff --git a/src/components/results/pccmin/pcc-min-result.tsx b/src/components/results/pccmin/pcc-min-result.tsx index 905c4057bb..1cd3a2ce2a 100644 --- a/src/components/results/pccmin/pcc-min-result.tsx +++ b/src/components/results/pccmin/pcc-min-result.tsx @@ -25,7 +25,7 @@ import { UUID } from 'node:crypto'; import { PccMinExportButton } from './pcc-min-export-button'; import { buildValidGlobalFilters } from '../common/global-filter/build-valid-global-filters'; import { GlobalFilter } from '../common/global-filter/global-filter-types'; -import { useComputationColumnFilters } from '../common/global-filter/use-computation-column-filters'; +import { useComputationColumnFilters } from '../common/column-filter/use-computation-column-filters'; interface PccMinResultProps { studyUuid: UUID; diff --git a/src/components/results/pccmin/pcc-min-result.type.ts b/src/components/results/pccmin/pcc-min-result.type.ts index 4d4c48f96a..6ea0993cea 100644 --- a/src/components/results/pccmin/pcc-min-result.type.ts +++ b/src/components/results/pccmin/pcc-min-result.type.ts @@ -21,7 +21,7 @@ import { PCCMIN_ANALYSIS_RESULT_SORT_STORE, PCCMIN_RESULT } from 'utils/store-so import { IntlShape } from 'react-intl'; import { makeAgGridCustomHeaderColumn } from 'components/custom-aggrid/utils/custom-aggrid-header-utils'; import { GridApi, ICellRendererParams } from 'ag-grid-community'; -import { updateComputationColumnsFilters } from '../common/update-computation-columns-filters'; +import { updateComputationColumnsFilters } from '../common/column-filter/update-computation-columns-filters'; export interface SinglePccMinResultInfos { singlePccMinResultUuid: string; diff --git a/src/components/results/securityanalysis/security-analysis-result-tab.tsx b/src/components/results/securityanalysis/security-analysis-result-tab.tsx index 96fdd63b83..86a5389156 100644 --- a/src/components/results/securityanalysis/security-analysis-result-tab.tsx +++ b/src/components/results/securityanalysis/security-analysis-result-tab.tsx @@ -50,7 +50,7 @@ import { usePaginationSelector } from 'hooks/use-pagination-selector'; import { UUID } from 'node:crypto'; import { useComputationGlobalFilters } from '../common/global-filter/use-computation-global-filters'; import { buildValidGlobalFilters } from '../common/global-filter/build-valid-global-filters'; -import { useComputationColumnFilters } from '../common/global-filter/use-computation-column-filters'; +import { useComputationColumnFilters } from '../common/column-filter/use-computation-column-filters'; const styles = { tabsAndToolboxContainer: { diff --git a/src/components/results/securityanalysis/security-analysis-result-utils.ts b/src/components/results/securityanalysis/security-analysis-result-utils.ts index 8930a7f1a7..0b6f07c0a0 100644 --- a/src/components/results/securityanalysis/security-analysis-result-utils.ts +++ b/src/components/results/securityanalysis/security-analysis-result-utils.ts @@ -43,7 +43,7 @@ import { } from '../../custom-aggrid/custom-aggrid-filters/custom-aggrid-filter.type'; import { convertDuration, formatNAValue } from '../../custom-aggrid/utils/format-values-utils'; import { MAX_INT32 } from 'services/utils'; -import { updateComputationColumnsFilters } from '../common/update-computation-columns-filters'; +import { updateComputationColumnsFilters } from '../common/column-filter/update-computation-columns-filters'; import { SortParams } from '../../custom-aggrid/hooks/use-custom-aggrid-sort'; import type { UUID } from 'node:crypto'; diff --git a/src/components/results/sensitivity-analysis/paged-sensitivity-analysis-result.tsx b/src/components/results/sensitivity-analysis/paged-sensitivity-analysis-result.tsx index d2a827c4bb..76bd05ae1a 100644 --- a/src/components/results/sensitivity-analysis/paged-sensitivity-analysis-result.tsx +++ b/src/components/results/sensitivity-analysis/paged-sensitivity-analysis-result.tsx @@ -33,7 +33,7 @@ import { AppState } from '../../../redux/reducer'; import { SensitivityResult, SensitivityResultFilterOptions } from '../../../services/study/sensitivity-analysis.type'; import { GlobalFilters } from '../common/global-filter/global-filter-types'; import { usePaginationSelector } from 'hooks/use-pagination-selector'; -import { useComputationColumnFilters } from '../common/global-filter/use-computation-column-filters'; +import { useComputationColumnFilters } from '../common/column-filter/use-computation-column-filters'; export type PagedSensitivityAnalysisResultProps = { studyUuid: UUID; diff --git a/src/components/results/sensitivity-analysis/sensitivity-analysis-result.tsx b/src/components/results/sensitivity-analysis/sensitivity-analysis-result.tsx index 2f49038dc4..ed89bfc5bb 100644 --- a/src/components/results/sensitivity-analysis/sensitivity-analysis-result.tsx +++ b/src/components/results/sensitivity-analysis/sensitivity-analysis-result.tsx @@ -31,7 +31,7 @@ import { FILTER_TEXT_COMPARATORS, } from '../../custom-aggrid/custom-aggrid-filters/custom-aggrid-filter.type'; import { getColumnHeaderDisplayNames } from 'components/utils/column-constant'; -import { updateComputationColumnsFilters } from '../common/update-computation-columns-filters'; +import { updateComputationColumnsFilters } from '../common/column-filter/update-computation-columns-filters'; import type { UUID } from 'node:crypto'; import { useAgGridInitialColumnFilters } from '../common/use-ag-grid-initial-column-filters'; diff --git a/src/components/results/shortcircuit/shortcircuit-analysis-result-table.tsx b/src/components/results/shortcircuit/shortcircuit-analysis-result-table.tsx index 7ec87d5172..4ab2f70dd2 100644 --- a/src/components/results/shortcircuit/shortcircuit-analysis-result-table.tsx +++ b/src/components/results/shortcircuit/shortcircuit-analysis-result-table.tsx @@ -50,7 +50,7 @@ import { import { AGGRID_LOCALES } from '../../../translations/not-intl/aggrid-locales'; import { useWorkspacePanelActions } from 'components/workspace/hooks/use-workspace-panel-actions'; import { PanelType } from '../../workspace/types/workspace.types'; -import { updateComputationColumnsFilters } from '../common/update-computation-columns-filters'; +import { updateComputationColumnsFilters } from '../common/column-filter/update-computation-columns-filters'; import type { UUID } from 'node:crypto'; import { useAgGridInitialColumnFilters } from '../common/use-ag-grid-initial-column-filters'; @@ -394,7 +394,7 @@ const ShortCircuitAnalysisResultTable: FunctionComponent onGridColumnsChanged + onGridColumnsChanged ); const handleRowDataUpdated = useCallback( (event: RowDataUpdatedEvent) => { diff --git a/src/components/results/shortcircuit/shortcircuit-analysis-result.tsx b/src/components/results/shortcircuit/shortcircuit-analysis-result.tsx index 98dde8e2fe..62641e2606 100644 --- a/src/components/results/shortcircuit/shortcircuit-analysis-result.tsx +++ b/src/components/results/shortcircuit/shortcircuit-analysis-result.tsx @@ -39,7 +39,7 @@ import { FilterEnumsType } from '../../custom-aggrid/custom-aggrid-filters/custo import { usePaginationSelector } from 'hooks/use-pagination-selector'; import { GlobalFilter } from '../common/global-filter/global-filter-types'; import { buildValidGlobalFilters } from '../common/global-filter/build-valid-global-filters'; -import { useComputationColumnFilters } from '../common/global-filter/use-computation-column-filters'; +import { useComputationColumnFilters } from '../common/column-filter/use-computation-column-filters'; interface IShortCircuitAnalysisGlobalResultProps { analysisType: ShortCircuitAnalysisType; diff --git a/src/services/study/study-config.ts b/src/services/study/study-config.ts index 9d6151b291..35f48585b5 100644 --- a/src/services/study/study-config.ts +++ b/src/services/study/study-config.ts @@ -264,7 +264,7 @@ export function updateComputationResultFiltersColumn( studyUuid: UUID, filterType: FilterType, filterSubType: string, - column: any + columnFilterInfos: any ) { const url = `${getStudyUrl(studyUuid)}/computation-result-filters/${filterType}/${filterSubType}/columns`; return backendFetchJson(url, { @@ -272,6 +272,6 @@ export function updateComputationResultFiltersColumn( headers: { 'Content-Type': 'application/json', }, - body: JSON.stringify(column), + body: JSON.stringify(columnFilterInfos), }); } From a04a87069e716ad002a69f3cbafbf1c98dbd72d0 Mon Sep 17 00:00:00 2001 From: Rehili Ghazwa Date: Fri, 13 Feb 2026 14:29:20 +0100 Subject: [PATCH 6/7] duplicated code --- .../loadflow/load-flow-result-utils.ts | 2 +- .../security-analysis-result-n.tsx | 7 ++---- .../shortcircuit-analysis-result-table.tsx | 25 ++++++++----------- 3 files changed, 14 insertions(+), 20 deletions(-) diff --git a/src/components/results/loadflow/load-flow-result-utils.ts b/src/components/results/loadflow/load-flow-result-utils.ts index 9a26c613fa..0edeb7a5cd 100644 --- a/src/components/results/loadflow/load-flow-result-utils.ts +++ b/src/components/results/loadflow/load-flow-result-utils.ts @@ -15,7 +15,6 @@ import { } from './load-flow-result.type'; import { IntlShape } from 'react-intl'; import { ColDef, ICellRendererParams, ValueFormatterParams, ValueGetterParams } from 'ag-grid-community'; -import { BranchSide } from '../../utils/constants'; import { UNDEFINED_ACCEPTABLE_DURATION } from '../../utils/utils'; import { makeAgGridCustomHeaderColumn } from 'components/custom-aggrid/utils/custom-aggrid-header-utils'; import { JSX, useEffect, useState } from 'react'; @@ -50,6 +49,7 @@ import { convertDuration, formatNAValue } from 'components/custom-aggrid/utils/f import { SubjectIdRendererType } from '../securityanalysis/security-analysis.type'; import { updateComputationColumnsFilters } from '../common/column-filter/update-computation-columns-filters'; import { SortParams } from '../../custom-aggrid/hooks/use-custom-aggrid-sort'; +import { BranchSide } from '../../utils/constants'; export const convertSide = (side: string | undefined, intl: IntlShape): string => { return side === BranchSide.ONE diff --git a/src/components/results/securityanalysis/security-analysis-result-n.tsx b/src/components/results/securityanalysis/security-analysis-result-n.tsx index 67b3ebcc81..b7459c6a38 100644 --- a/src/components/results/securityanalysis/security-analysis-result-n.tsx +++ b/src/components/results/securityanalysis/security-analysis-result-n.tsx @@ -13,7 +13,6 @@ import { } from './security-analysis.type'; import { IntlShape, useIntl } from 'react-intl'; import { SecurityAnalysisTable } from './security-analysis-table'; -import { convertSide } from '../loadflow/load-flow-result-utils'; import { translateLimitNameBackToFront } from '../common/utils'; import { MAX_INT32 } from 'services/utils'; @@ -32,9 +31,7 @@ export const SecurityAnalysisResultN: FunctionComponent - intl.formatMessage({ - id: value, - defaultMessage: value, - }), + value + ? intl.formatMessage({ + id: value, + defaultMessage: value, + }) + : '', [intl] ); @@ -429,9 +430,7 @@ const ShortCircuitAnalysisResultTable: FunctionComponent 0) { let lv = limitViolations[0]; firstLimitViolation = { - limitType: intl.formatMessage({ - id: lv.limitType, - }), + limitType: lv.limitType, }; } @@ -443,7 +442,7 @@ const ShortCircuitAnalysisResultTable: FunctionComponent { rows.push({ - limitType: intl.formatMessage({ - id: lv.limitType, - }), + limitType: lv.limitType, limitMin: lv.limitType === 'LOW_SHORT_CIRCUIT_CURRENT' ? lv.limit : null, limitMax: lv.limitType === 'HIGH_SHORT_CIRCUIT_CURRENT' ? lv.limit : null, current: lv.value, @@ -480,13 +477,13 @@ const ShortCircuitAnalysisResultTable: FunctionComponent flattenResult(result), [flattenResult, result]); From 3ec5e6f5c4486a905617ba76786ca7a1d4ac9232 Mon Sep 17 00:00:00 2001 From: Rehili Ghazwa Date: Fri, 13 Feb 2026 15:31:38 +0100 Subject: [PATCH 7/7] fix for AS --- .../security-analysis-result-utils.ts | 28 ++++--------------- .../use-security-analysis-column-defs.tsx | 10 ++++--- 2 files changed, 12 insertions(+), 26 deletions(-) diff --git a/src/components/results/securityanalysis/security-analysis-result-utils.ts b/src/components/results/securityanalysis/security-analysis-result-utils.ts index 0b6f07c0a0..94ae80624c 100644 --- a/src/components/results/securityanalysis/security-analysis-result-utils.ts +++ b/src/components/results/securityanalysis/security-analysis-result-utils.ts @@ -104,11 +104,7 @@ export const flattenNmKResultsContingencies = (intl: IntlShape, result: Constrai rows.push({ contingencyId, contingencyEquipmentsIds: elements.map((element) => element.id), - status: status - ? intl.formatMessage({ - id: status, - }) - : '', + status: status, violationCount: subjectLimitViolations.length, }); subjectLimitViolations?.forEach((constraint: Constraint) => { @@ -117,11 +113,7 @@ export const flattenNmKResultsContingencies = (intl: IntlShape, result: Constrai rows.push({ subjectId: subjectId, locationId: limitViolation.locationId, - limitType: limitViolation.limitType - ? intl.formatMessage({ - id: limitViolation.limitType, - }) - : '', + limitType: limitViolation.limitType, limit: limitViolation.limit, patlLimit: limitViolation.patlLimit, value: limitViolation.value, @@ -129,7 +121,7 @@ export const flattenNmKResultsContingencies = (intl: IntlShape, result: Constrai patlLoading: limitViolation.patlLoading, limitName: translateLimitNameBackToFront(limitViolation.limitName, intl), nextLimitName: translateLimitNameBackToFront(limitViolation.nextLimitName, intl), - side: limitViolation.side ? intl.formatMessage({ id: limitViolation.side }) : '', + side: limitViolation.side, linkedElementId: contingencyId, // TODO: Remove this check after fixing the acceptableDuration issue on the Powsybl side acceptableDuration: @@ -156,19 +148,11 @@ export const flattenNmKResultsConstraints = (intl: IntlShape, result: Contingenc rows.push({ contingencyId: contingency.contingencyId, contingencyEquipmentsIds: contingency.elements?.map((element) => element.id), - status: contingency.status - ? intl.formatMessage({ - id: contingency.status, - }) - : '', - limitType: limitViolation.limitType - ? intl.formatMessage({ - id: limitViolation.limitType, - }) - : '', + status: contingency.status, + limitType: limitViolation.limitType, limitName: translateLimitNameBackToFront(limitViolation.limitName, intl), nextLimitName: translateLimitNameBackToFront(limitViolation.nextLimitName, intl), - side: limitViolation.side ? intl.formatMessage({ id: limitViolation.side }) : '', + side: limitViolation.side, // TODO: Remove this check after fixing the acceptableDuration issue on the Powsybl side acceptableDuration: limitViolation?.acceptableDuration === MAX_INT32 ? null : limitViolation?.acceptableDuration, diff --git a/src/components/results/securityanalysis/use-security-analysis-column-defs.tsx b/src/components/results/securityanalysis/use-security-analysis-column-defs.tsx index a0740de2ee..2b43ba4b2d 100644 --- a/src/components/results/securityanalysis/use-security-analysis-column-defs.tsx +++ b/src/components/results/securityanalysis/use-security-analysis-column-defs.tsx @@ -54,10 +54,12 @@ export const useSecurityAnalysisColumnsDefs: UseSecurityAnalysisColumnsDefsProps const getEnumLabel = useCallback( (value: string) => - intl.formatMessage({ - id: value, - defaultMessage: value, - }), + value + ? intl.formatMessage({ + id: value, + defaultMessage: value, + }) + : '', [intl] );