Skip to content

Commit 8661928

Browse files
Refactor use of SelectionForCopy and isStudyMetadata (#571)
1 parent c705de0 commit 8661928

File tree

12 files changed

+134
-164
lines changed

12 files changed

+134
-164
lines changed

package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"dependencies": {
88
"@emotion/react": "^11.11.4",
99
"@emotion/styled": "^11.11.5",
10-
"@gridsuite/commons-ui": "0.73.1",
10+
"@gridsuite/commons-ui": "0.74.0",
1111
"@hookform/resolvers": "^3.3.4",
1212
"@mui/icons-material": "^5.15.14",
1313
"@mui/lab": "5.0.0-alpha.169",

src/components/dialogs/contingency-list/edition/criteria-based/criteria-based-edition-dialog.tsx

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
CustomMuiDialog,
1010
FieldConstants,
1111
getCriteriaBasedSchema,
12-
NO_SELECTION_FOR_COPY,
12+
NO_ITEM_SELECTION_FOR_COPY,
1313
useSnackMessage,
1414
yupConfig as yup,
1515
} from '@gridsuite/commons-ui';
@@ -24,7 +24,7 @@ import {
2424
getCriteriaBasedFormDataFromFetchedElement,
2525
} from '../../contingency-list-utils';
2626
import CriteriaBasedEditionForm from './criteria-based-edition-form';
27-
import { setSelectionForCopy } from '../../../../../redux/actions';
27+
import { setItemSelectionForCopy } from '../../../../../redux/actions';
2828
import { useParameterState } from '../../../use-parameters-dialog';
2929
import { CriteriaBasedEditionFormData } from '../../../../../utils/rest-api';
3030
import { PARAM_LANGUAGE } from '../../../../../utils/config-params';
@@ -57,7 +57,7 @@ export default function CriteriaBasedEditionDialog({
5757
const [languageLocal] = useParameterState(PARAM_LANGUAGE);
5858
const [isFetching, setIsFetching] = useState(!!contingencyListId);
5959
const { snackError } = useSnackMessage();
60-
const selectionForCopy = useSelector((state: AppState) => state.selectionForCopy);
60+
const selectionForCopy = useSelector((state: AppState) => state.itemSelectionForCopy);
6161
const dispatch = useDispatch();
6262
const methods = useForm<CriteriaBasedEditionFormData>({
6363
defaultValues: getContingencyListEmptyFormData(name),
@@ -99,10 +99,8 @@ export default function CriteriaBasedEditionDialog({
9999
saveCriteriaBasedContingencyList(contingencyListId, contingencyList)
100100
.then(() => {
101101
if (selectionForCopy.sourceItemUuid === contingencyListId) {
102-
dispatch(setSelectionForCopy(NO_SELECTION_FOR_COPY));
103-
broadcastChannel.postMessage({
104-
NO_SELECTION_FOR_COPY,
105-
});
102+
dispatch(setItemSelectionForCopy(NO_ITEM_SELECTION_FOR_COPY));
103+
broadcastChannel.postMessage({ NO_ITEM_SELECTION_FOR_COPY });
106104
}
107105
closeAndClear();
108106
})

src/components/dialogs/contingency-list/edition/explicit-naming/explicit-naming-edition-dialog.tsx

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import {
99
CustomMuiDialog,
1010
FieldConstants,
11-
NO_SELECTION_FOR_COPY,
11+
NO_ITEM_SELECTION_FOR_COPY,
1212
useSnackMessage,
1313
yupConfig as yup,
1414
} from '@gridsuite/commons-ui';
@@ -24,7 +24,7 @@ import {
2424
} from '../../contingency-list-utils';
2525
import { getExplicitNamingEditSchema } from '../../explicit-naming/explicit-naming-form';
2626
import ExplicitNamingEditionForm from './explicit-naming-edition-form';
27-
import { setSelectionForCopy } from '../../../../../redux/actions';
27+
import { setItemSelectionForCopy } from '../../../../../redux/actions';
2828
import { AppState } from '../../../../../redux/types';
2929

3030
interface ExplicitNamingEditionFormData {
@@ -65,7 +65,7 @@ export default function ExplicitNamingEditionDialog({
6565
}: Readonly<ExplicitNamingEditionDialogProps>) {
6666
const [isFetching, setIsFetching] = useState(!!contingencyListId);
6767
const { snackError } = useSnackMessage();
68-
const selectionForCopy = useSelector((state: AppState) => state.selectionForCopy);
68+
const selectionForCopy = useSelector((state: AppState) => state.itemSelectionForCopy);
6969
const dispatch = useDispatch();
7070
const methods = useForm({
7171
defaultValues: emptyFormData(name),
@@ -111,10 +111,8 @@ export default function ExplicitNamingEditionDialog({
111111
editContingencyList(contingencyListId, contingencyList)
112112
.then(() => {
113113
if (selectionForCopy.sourceItemUuid === contingencyListId) {
114-
dispatch(setSelectionForCopy(NO_SELECTION_FOR_COPY));
115-
broadcastChannel.postMessage({
116-
NO_SELECTION_FOR_COPY,
117-
});
114+
dispatch(setItemSelectionForCopy(NO_ITEM_SELECTION_FOR_COPY));
115+
broadcastChannel.postMessage({ NO_ITEM_SELECTION_FOR_COPY });
118116
}
119117
closeAndClear();
120118
})

src/components/dialogs/contingency-list/edition/script/script-edition-dialog.tsx

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import {
99
CustomMuiDialog,
1010
FieldConstants,
11-
NO_SELECTION_FOR_COPY,
11+
NO_ITEM_SELECTION_FOR_COPY,
1212
useSnackMessage,
1313
yupConfig as yup,
1414
} from '@gridsuite/commons-ui';
@@ -19,7 +19,7 @@ import { getContingencyList, saveScriptContingencyList } from 'utils/rest-api';
1919
import { useDispatch, useSelector } from 'react-redux';
2020
import { getContingencyListEmptyFormData, getScriptFormDataFromFetchedElement } from '../../contingency-list-utils';
2121
import ScriptEditionForm from './script-edition-form';
22-
import { setSelectionForCopy } from '../../../../../redux/actions';
22+
import { setItemSelectionForCopy } from '../../../../../redux/actions';
2323
import { AppState } from '../../../../../redux/types';
2424

2525
interface ScriptEditionFormData {
@@ -57,7 +57,7 @@ export default function ScriptEditionDialog({
5757
}: Readonly<ScriptEditionDialogProps>) {
5858
const [isFetching, setIsFetching] = useState(!!contingencyListId);
5959
const { snackError } = useSnackMessage();
60-
const selectionForCopy = useSelector((state: AppState) => state.selectionForCopy);
60+
const selectionForCopy = useSelector((state: AppState) => state.itemSelectionForCopy);
6161
const dispatch = useDispatch();
6262

6363
const methods = useForm({
@@ -107,10 +107,8 @@ export default function ScriptEditionDialog({
107107
editContingencyList(contingencyListId, contingencyList)
108108
.then(() => {
109109
if (selectionForCopy.sourceItemUuid === contingencyListId) {
110-
dispatch(setSelectionForCopy(NO_SELECTION_FOR_COPY));
111-
broadcastChannel.postMessage({
112-
NO_SELECTION_FOR_COPY,
113-
});
110+
dispatch(setItemSelectionForCopy(NO_ITEM_SELECTION_FOR_COPY));
111+
broadcastChannel.postMessage({ NO_ITEM_SELECTION_FOR_COPY });
114112
}
115113
closeAndClear();
116114
})

src/components/dialogs/network-modification/composite-modification/composite-modification-dialog.tsx

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {
1515
CustomMuiDialog,
1616
FieldConstants,
1717
NetworkModificationMetadata,
18-
NO_SELECTION_FOR_COPY,
18+
NO_ITEM_SELECTION_FOR_COPY,
1919
unscrollableDialogStyles,
2020
useModificationLabelComputer,
2121
useSnackMessage,
@@ -27,7 +27,7 @@ import { useParameterState } from '../../use-parameters-dialog';
2727
import { PARAM_LANGUAGE } from '../../../../utils/config-params';
2828
import { fetchCompositeModificationContent, saveCompositeModification } from '../../../../utils/rest-api';
2929
import CompositeModificationForm from './composite-modification-form';
30-
import { setSelectionForCopy } from '../../../../redux/actions';
30+
import { setItemSelectionForCopy } from '../../../../redux/actions';
3131

3232
const schema = yup.object().shape({
3333
[FieldConstants.NAME]: yup.string().trim().required('nameEmpty'),
@@ -62,7 +62,7 @@ export default function CompositeModificationDialog({
6262
const [languageLocal] = useParameterState(PARAM_LANGUAGE);
6363
const [isFetching, setIsFetching] = useState(!!compositeModificationId);
6464
const { snackError } = useSnackMessage();
65-
const selectionForCopy = useSelector((state: AppState) => state.selectionForCopy);
65+
const selectionForCopy = useSelector((state: AppState) => state.itemSelectionForCopy);
6666
const [modifications, setModifications] = useState<NetworkModificationMetadata[]>([]);
6767
const dispatch = useDispatch();
6868

@@ -130,10 +130,8 @@ export default function CompositeModificationDialog({
130130
saveCompositeModification(compositeModificationId, formData[FieldConstants.NAME])
131131
.then(() => {
132132
if (selectionForCopy.sourceItemUuid === compositeModificationId) {
133-
dispatch(setSelectionForCopy(NO_SELECTION_FOR_COPY));
134-
broadcastChannel.postMessage({
135-
NO_SELECTION_FOR_COPY,
136-
});
133+
dispatch(setItemSelectionForCopy(NO_ITEM_SELECTION_FOR_COPY));
134+
broadcastChannel.postMessage({ NO_ITEM_SELECTION_FOR_COPY });
137135
}
138136
closeAndClear();
139137
})

src/components/directory-content.tsx

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,17 @@ import {
1616
ElementType,
1717
ExpertFilterEditionDialog,
1818
ExplicitNamingFilterEditionDialog,
19-
Metadata,
20-
NO_SELECTION_FOR_COPY,
21-
StudyMetadata,
19+
isStudyMetadata,
20+
type ItemSelectionForCopy,
21+
NO_ITEM_SELECTION_FOR_COPY,
2222
useSnackMessage,
2323
} from '@gridsuite/commons-ui';
2424
import { Add as AddIcon } from '@mui/icons-material';
2525
import { AgGridReact } from 'ag-grid-react';
26-
import { SelectionForCopy } from '@gridsuite/commons-ui/dist/components/filter/filter.type';
2726
import { CellContextMenuEvent } from 'ag-grid-community';
2827
import { ContingencyListType, FilterType, NetworkModificationType } from '../utils/elementType';
2928
import * as constants from '../utils/UIconstants';
30-
import { setActiveDirectory, setSelectionForCopy } from '../redux/actions';
29+
import { setActiveDirectory, setItemSelectionForCopy } from '../redux/actions';
3130
import { elementExists, getFilterById, updateElement } from '../utils/rest-api';
3231
import { AnchorStatesType, defaultAnchorStates } from './menus/common-contextual-menu';
3332
import ContentContextualMenu from './menus/content-contextual-menu';
@@ -93,14 +92,12 @@ const styles = {
9392
},
9493
};
9594

96-
const isStudyMetadata = (metadata: Metadata): metadata is StudyMetadata => metadata.name === 'Study';
97-
9895
export default function DirectoryContent() {
9996
const treeData = useSelector((state: AppState) => state.treeData);
10097
const { snackError } = useSnackMessage();
10198
const dispatch = useDispatch();
10299

103-
const selectionForCopy = useSelector((state: AppState) => state.selectionForCopy);
100+
const selectionForCopy = useSelector((state: AppState) => state.itemSelectionForCopy);
104101
const activeDirectory = useSelector((state: AppState) => state.activeDirectory);
105102

106103
const gridRef = useRef<AgGridReact | null>(null);
@@ -109,27 +106,14 @@ export default function DirectoryContent() {
109106

110107
const [languageLocal] = useParameterState(PARAM_LANGUAGE);
111108

112-
const dispatchSelectionForCopy = useCallback(
113-
(selection: SelectionForCopy) => {
114-
dispatch(setSelectionForCopy(selection));
115-
},
116-
[dispatch]
117-
);
118109
const [broadcastChannel] = useState(() => {
119110
const broadcast = new BroadcastChannel('itemCopyChannel');
120-
broadcast.onmessage = (event) => {
111+
broadcast.onmessage = (event: MessageEvent<ItemSelectionForCopy>) => {
121112
console.info('message received from broadcast channel');
122-
if (JSON.stringify(NO_SELECTION_FOR_COPY) === JSON.stringify(event.data)) {
123-
dispatch(setSelectionForCopy(NO_SELECTION_FOR_COPY));
113+
if (JSON.stringify(NO_ITEM_SELECTION_FOR_COPY) === JSON.stringify(event.data)) {
114+
dispatch(setItemSelectionForCopy(NO_ITEM_SELECTION_FOR_COPY));
124115
} else {
125-
dispatchSelectionForCopy({
126-
typeItem: event.data.typeItem,
127-
nameItem: event.data.nameItem,
128-
descriptionItem: event.data.descriptionItem,
129-
sourceItemUuid: event.data.sourceItemUuid,
130-
parentDirectoryUuid: event.data.parentDirectoryUuid,
131-
specificTypeItem: event.data.specificTypeItem,
132-
});
116+
dispatch(setItemSelectionForCopy(event.data));
133117
}
134118
};
135119
return broadcast;
@@ -561,7 +545,7 @@ export default function DirectoryContent() {
561545
name={name}
562546
broadcastChannel={broadcastChannel}
563547
selectionForCopy={selectionForCopy}
564-
setSelectionForCopy={setSelectionForCopy}
548+
setSelectionForCopy={setItemSelectionForCopy}
565549
getFilterById={getFilterById}
566550
activeDirectory={activeDirectory}
567551
elementExists={elementExists}
@@ -580,7 +564,7 @@ export default function DirectoryContent() {
580564
broadcastChannel={broadcastChannel}
581565
getFilterById={getFilterById}
582566
selectionForCopy={selectionForCopy}
583-
setSelectionForCopy={setSelectionForCopy}
567+
setSelectionForCopy={setItemSelectionForCopy}
584568
activeDirectory={activeDirectory}
585569
elementExists={elementExists}
586570
language={languageLocal}
@@ -597,7 +581,7 @@ export default function DirectoryContent() {
597581
name={name}
598582
broadcastChannel={broadcastChannel}
599583
selectionForCopy={selectionForCopy}
600-
setSelectionForCopy={setSelectionForCopy}
584+
setSelectionForCopy={setItemSelectionForCopy}
601585
getFilterById={getFilterById}
602586
activeDirectory={activeDirectory}
603587
elementExists={elementExists}

0 commit comments

Comments
 (0)