Skip to content

Commit 2f783c0

Browse files
Fix PR #3065 (#3213)
* Add missing error message * fix inverted condition * fix branch type in global filter * Hide GlobalFilter for BRANCH (in devel)
1 parent d469497 commit 2f783c0

File tree

7 files changed

+58
-27
lines changed

7 files changed

+58
-27
lines changed

src/components/spreadsheet-view/spreadsheet/spreadsheet-content/hooks/use-spreadsheet-equipments.ts

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
66
*/
77

8-
import { NotificationsUrlKeys, useNotificationsListener } from '@gridsuite/commons-ui';
8+
import { NotificationsUrlKeys, useNotificationsListener, useSnackMessage } from '@gridsuite/commons-ui';
99
import type { UUID } from 'crypto';
1010
import { useCallback, useEffect, useMemo, useState } from 'react';
1111
import { useDispatch, useSelector } from 'react-redux';
@@ -37,6 +37,7 @@ export const useSpreadsheetEquipments = (
3737
nodeAliases: NodeAlias[] | undefined,
3838
active: boolean = false
3939
) => {
40+
const { snackError } = useSnackMessage();
4041
const dispatch = useDispatch();
4142
const allEquipments = useSelector((state: AppState) => state.spreadsheetNetwork);
4243
const equipments = useSelector((state: AppState) => state.spreadsheetNetwork[type]);
@@ -186,13 +187,29 @@ export const useSpreadsheetEquipments = (
186187
Promise.allSettled(promises).then((results) => {
187188
const updates: UpdateEquipmentsAction['equipments'] = {};
188189
if (results[0].status === 'rejected') {
189-
//TODO show snackbar error?
190+
console.error(
191+
`(re)loading of spreadsheet data of type ${type} ${results[0].status}`,
192+
results[0].reason
193+
);
194+
snackError({
195+
headerId: 'spreadsheet/loading/error_fetching_type_title',
196+
headerValues: { type },
197+
messageTxt: `Details: ${results[0].reason}`,
198+
});
190199
} else {
191200
updates[type] = results[0].value;
192201
}
193202
if (results.length > 1) {
194203
if (results[1].status === 'rejected') {
195-
//TODO show snackbar error?
204+
console.error(
205+
`(re)loading of spreadsheet data of type ${type} ${results[1].status}`,
206+
results[1].reason
207+
);
208+
snackError({
209+
headerId: 'spreadsheet/loading/error_fetching_type_title',
210+
headerValues: { type: SpreadsheetEquipmentType.BRANCH },
211+
messageTxt: `Details: ${results[1].reason}`,
212+
});
196213
} else {
197214
updates[SpreadsheetEquipmentType.BRANCH] = results[1].value;
198215
}
@@ -238,6 +255,7 @@ export const useSpreadsheetEquipments = (
238255
allEquipments,
239256
equipmentToUpdateId,
240257
highlightUpdatedEquipment,
258+
snackError,
241259
]
242260
);
243261

src/components/spreadsheet-view/spreadsheet/spreadsheet-toolbar/global-filter/spreadsheet-global-filter.tsx

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ import { type AppState } from '../../../../../redux/reducer';
1414
import { setGlobalFiltersToSpreadsheetConfig } from 'services/study/study-config';
1515
import type { GlobalFilter } from '../../../../results/common/global-filter/global-filter-types';
1616
import { FilterType } from '../../../../results/common/utils';
17-
import GlobalFilterSelector from '../../../../results/common/global-filter/global-filter-selector';
17+
import GlobalFilterSelector, {
18+
type GlobalFilterSelectorProps,
19+
} from '../../../../results/common/global-filter/global-filter-selector';
1820
import { EQUIPMENT_TYPES } from '@powsybl/network-viewer';
1921
import { addToRecentGlobalFilters } from '../../../../../redux/actions';
2022
import { useGlobalFilterOptions } from '../../../../results/common/global-filter/use-global-filter-options';
@@ -52,15 +54,26 @@ export default function SpreadsheetGlobalFilter({ tableDefinition }: Readonly<Sp
5254
[debouncedSetFilters, tableDefinition.uuid]
5355
);
5456

55-
const filters = useMemo(
57+
const filters = useMemo<GlobalFilterSelectorProps['filters']>(
5658
() => [
57-
...(tableDefinition.type === SpreadsheetEquipmentType.SUBSTATION ? voltageLevelsFilter : []),
59+
...(tableDefinition.type === SpreadsheetEquipmentType.SUBSTATION ? [] : voltageLevelsFilter),
5860
...countriesFilter,
5961
...propertiesFilter,
6062
],
6163
[countriesFilter, propertiesFilter, tableDefinition.type, voltageLevelsFilter]
6264
);
6365

66+
const filterTypes = useMemo<GlobalFilterSelectorProps['filterableEquipmentTypes']>(
67+
() => [
68+
...(tableDefinition.type === SpreadsheetEquipmentType.BRANCH
69+
? [EQUIPMENT_TYPES.LINE, EQUIPMENT_TYPES.TWO_WINDINGS_TRANSFORMER]
70+
: [tableDefinition.type as unknown as EQUIPMENT_TYPES]),
71+
EQUIPMENT_TYPES.SUBSTATION,
72+
EQUIPMENT_TYPES.VOLTAGE_LEVEL,
73+
],
74+
[tableDefinition.type]
75+
);
76+
6477
useEffect(() => {
6578
if (globalFilterSpreadsheetState) {
6679
dispatch(
@@ -73,11 +86,7 @@ export default function SpreadsheetGlobalFilter({ tableDefinition }: Readonly<Sp
7386

7487
return (
7588
<GlobalFilterSelector
76-
filterableEquipmentTypes={[
77-
tableDefinition.type as unknown as EQUIPMENT_TYPES, //TODO what to do with BRANCH type?
78-
EQUIPMENT_TYPES.SUBSTATION,
79-
EQUIPMENT_TYPES.VOLTAGE_LEVEL,
80-
]}
89+
filterableEquipmentTypes={filterTypes}
8190
filters={filters}
8291
onChange={handleFilterChange}
8392
preloadedGlobalFilters={globalFilterSpreadsheetState}

src/components/spreadsheet-view/spreadsheet/spreadsheet-toolbar/save/save-naming-filter-dialog.tsx

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,17 @@
66
*/
77

88
import {
9+
createFilter,
910
ElementSaveDialog,
1011
ElementType,
11-
IElementCreationDialog,
12-
IElementUpdateDialog,
13-
UseStateBooleanReturn,
14-
useSnackMessage,
15-
EquipmentType,
16-
createFilter,
12+
type IElementCreationDialog,
13+
type IElementUpdateDialog,
14+
type NewFilterType,
1715
saveFilter,
18-
NewFilterType,
16+
useSnackMessage,
17+
type UseStateBooleanReturn,
1918
} from '@gridsuite/commons-ui';
20-
import { useCallback, RefObject } from 'react';
19+
import { type RefObject, useCallback } from 'react';
2120
import { useSelector } from 'react-redux';
2221
import { AppState } from '../../../../../redux/reducer';
2322
import { AgGridReact } from 'ag-grid-react';
@@ -59,7 +58,7 @@ export default function SaveNamingFilterDialog({
5958
return {
6059
id: filterId,
6160
type: 'IDENTIFIER_LIST',
62-
equipmentType: tableDefinition.type as unknown as EquipmentType,
61+
equipmentType: tableDefinition.type,
6362
filterEquipmentsAttributes: ids.map((eqId) => ({ equipmentID: eqId })),
6463
};
6564
},

src/components/spreadsheet-view/spreadsheet/spreadsheet-toolbar/spreadsheet-toolbar.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
66
*/
77

8+
import type { RefObject } from 'react';
89
import { CustomColDef } from 'components/custom-aggrid/custom-aggrid-filters/custom-aggrid-filter.type';
9-
import { SpreadsheetTabDefinition } from '../../types/spreadsheet.type';
10+
import { SpreadsheetEquipmentType, type SpreadsheetTabDefinition } from '../../types/spreadsheet.type';
1011
import { AgGridReact } from 'ag-grid-react';
1112
import { Grid, Theme } from '@mui/material';
1213
import { ColumnsConfig } from './columns-config';
@@ -32,7 +33,7 @@ const styles = {
3233
};
3334

3435
interface SpreadsheetToolbarProps {
35-
gridRef: React.RefObject<AgGridReact>;
36+
gridRef: RefObject<AgGridReact>;
3637
tableDefinition: SpreadsheetTabDefinition;
3738
rowCounterInfos: UseFilteredRowCounterInfoReturn;
3839
columns: CustomColDef[];
@@ -51,7 +52,9 @@ export const SpreadsheetToolbar = ({
5152
return (
5253
<Grid container columnSpacing={2} sx={styles.toolbar}>
5354
<Grid item sx={styles.filterContainer}>
54-
<SpreadsheetGlobalFilter tableDefinition={tableDefinition} />
55+
{tableDefinition.type !== SpreadsheetEquipmentType.BRANCH && (
56+
<SpreadsheetGlobalFilter tableDefinition={tableDefinition} />
57+
)}
5558
</Grid>
5659
<Grid item>
5760
<FilteredRowCounter rowCounterInfos={rowCounterInfos} tableDefinition={tableDefinition} />

src/components/spreadsheet-view/spreadsheet/spreadsheet.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
66
*/
77

8-
import React, { useMemo, useRef } from 'react';
8+
import { memo, useMemo, useRef } from 'react';
99
import { CustomColDef } from 'components/custom-aggrid/custom-aggrid-filters/custom-aggrid-filter.type';
1010
import { rowIndexColumnDefinition } from '../columns/common-column-definitions';
1111
import { SpreadsheetTabDefinition } from '../types/spreadsheet.type';
@@ -29,7 +29,7 @@ interface SpreadsheetProps {
2929
active: boolean;
3030
}
3131

32-
export const Spreadsheet = React.memo(
32+
export const Spreadsheet = memo(
3333
({
3434
currentNode,
3535
tableDefinition,

src/translations/spreadsheet-en.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ const spreadsheetEn = {
118118
'spreadsheet/rename_spreadsheet_error': 'Error while renaming spreadsheet',
119119
'spreadsheet/rename_dialog_title': 'Rename spreadsheet',
120120
'spreadsheet/spreadsheet_name_le_60': 'Spreadsheet name must be at most 60 characters',
121+
'spreadsheet/loading/error_fetching_type_title': 'Error during (re)load of spreadsheet(s) of type {type}',
121122

122123
'spreadsheet/global-model-edition/edit': 'Model edition',
123124
'spreadsheet/global-model-edition/column_id': 'ID',

src/translations/spreadsheet-fr.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,12 +118,13 @@ const spreadsheetFr = {
118118
'spreadsheet/reset_filters_error': 'Erreur lors de la réinitialisation des filtres du tableur',
119119
'spreadsheet/rename/label': 'Renommer',
120120
'spreadsheet/delete/label': 'Supprimer',
121-
'spreadsheet/edit/label': 'Editer',
121+
'spreadsheet/edit/label': 'Éditer',
122122
'spreadsheet/rename_spreadsheet_error': 'Erreur lors du renommage du tableur',
123123
'spreadsheet/rename_dialog_title': 'Renommer le tableur',
124124
'spreadsheet/spreadsheet_name_le_60': 'Le nom du tableur ne peut dépasser 60 caractères',
125+
'spreadsheet/loading/error_fetching_type_title': 'Erreur lors du (re)chargement du/des tableaux de type {type}',
125126

126-
'spreadsheet/global-model-edition/edit': 'Editer le modèle',
127+
'spreadsheet/global-model-edition/edit': 'Éditer le modèle',
127128
'spreadsheet/global-model-edition/column_id': 'ID',
128129
'spreadsheet/global-model-edition/column_name': 'Nom',
129130
'spreadsheet/global-model-edition/column_type': 'Type',

0 commit comments

Comments
 (0)