diff --git a/src/components/dialogs/network-modifications/by-filter/by-filter-deletion/by-filter-deletion-dialog.tsx b/src/components/dialogs/network-modifications/by-filter/by-filter-deletion/by-filter-deletion-dialog.tsx index 091864b945..f26f88406d 100644 --- a/src/components/dialogs/network-modifications/by-filter/by-filter-deletion/by-filter-deletion-dialog.tsx +++ b/src/components/dialogs/network-modifications/by-filter/by-filter-deletion/by-filter-deletion-dialog.tsx @@ -6,44 +6,33 @@ */ import { yupResolver } from '@hookform/resolvers/yup'; -import yup from 'components/utils/yup-config'; -import { FILTERS, ID, NAME, TYPE } from '../../../../utils/field-constants'; -import { CustomFormProvider, snackWithFallback, useSnackMessage } from '@gridsuite/commons-ui'; +import { + ByFilterDeletionDto, + ByFilterDeletionForm, + ByFilterDeletionFormData, + byFilterDeletionDtoToForm, + byFilterDeletionFormSchema, + FieldConstants, + CustomFormProvider, + snackWithFallback, + useSnackMessage, +} from '@gridsuite/commons-ui'; import { useForm } from 'react-hook-form'; import { FunctionComponent, useCallback, useEffect } from 'react'; import { ModificationDialog } from '../../../commons/modificationDialog'; -import { EQUIPMENT_TYPES } from 'components/utils/equipment-types'; import { useOpenShortWaitFetching } from 'components/dialogs/commons/handle-modification-form'; import { FORM_LOADING_DELAY } from 'components/network/constants'; import { deleteEquipmentByFilter } from '../../../../../services/study/network-modifications'; import { FetchStatus } from '../../../../../services/utils'; -import ByFilterDeletionForm from './by-filter-deletion-form'; -import { - ByFilterDeletionDialogProps, - ByFilterDeletionEditData, - ByFilterDeletionFormData, -} from './by-filter-deletion.type'; +import { NetworkModificationDialogProps } from '../../../../graph/menus/network-modifications/network-modification-menu.type'; -const formSchema = yup - .object() - .shape({ - [TYPE]: yup.mixed().required(), - [FILTERS]: yup - .array() - .of( - yup.object().shape({ - [ID]: yup.string().required(), - [NAME]: yup.string().required(), - }) - ) - .required() - .min(1, 'FieldIsRequired'), - }) - .required(); +const emptyFormData: ByFilterDeletionFormData = { + [FieldConstants.TYPE]: null, + [FieldConstants.FILTERS]: [], +}; -const emptyFormData = { - [TYPE]: null, - [FILTERS]: [], +type ByFilterDeletionDialogProps = NetworkModificationDialogProps & { + editData: ByFilterDeletionDto; }; /** @@ -69,17 +58,14 @@ const ByFilterDeletionDialog: FunctionComponent = ( const formMethods = useForm({ defaultValues: emptyFormData, - resolver: yupResolver(formSchema), + resolver: yupResolver(byFilterDeletionFormSchema), }); const { reset } = formMethods; const fromEditDataToFormValues = useCallback( - (editData: ByFilterDeletionEditData) => { - reset({ - [TYPE]: EQUIPMENT_TYPES[editData.equipmentType] as keyof typeof EQUIPMENT_TYPES, - [FILTERS]: editData.filters, - }); + (data: ByFilterDeletionDto) => { + reset(byFilterDeletionDtoToForm(data)); }, [reset] ); @@ -95,8 +81,8 @@ const ByFilterDeletionDialog: FunctionComponent = ( deleteEquipmentByFilter( studyUuid, currentNodeUuid, - formData[TYPE], - formData[FILTERS], + formData[FieldConstants.TYPE], + formData[FieldConstants.FILTERS], editData?.uuid ).catch((error) => { snackWithFallback(snackError, error, { headerId: 'UnableToDeleteEquipment' }); @@ -116,7 +102,7 @@ const ByFilterDeletionDialog: FunctionComponent = ( }); return ( - + { - const equipmentTypeWatch = useWatch({ - name: TYPE, - }); - - const { setValue } = useFormContext(); - - const getOptionLabel = useGetLabelEquipmentTypes(); - - const typesOptions = useMemo(() => { - const equipmentTypesToExclude = new Set([ - EQUIPMENT_TYPES.SWITCH, - EQUIPMENT_TYPES.DISCONNECTOR, - EQUIPMENT_TYPES.BREAKER, - EQUIPMENT_TYPES.LCC_CONVERTER_STATION, - EQUIPMENT_TYPES.VSC_CONVERTER_STATION, - EQUIPMENT_TYPES.HVDC_CONVERTER_STATION, - EQUIPMENT_TYPES.BUS, - EQUIPMENT_TYPES.BUSBAR_SECTION, - EQUIPMENT_TYPES.TIE_LINE, - ]); - return Object.values(EQUIPMENT_TYPES).filter((equipmentType) => !equipmentTypesToExclude.has(equipmentType)); - }, []); - - const handleEquipmentTypeChange = useCallback(() => { - setValue(FILTERS, []); - }, [setValue]); - - const filtersField = useMemo(() => { - return ( - - ); - }, [equipmentTypeWatch]); - - const equipmentTypeField = useMemo(() => { - return ( - - ); - }, [handleEquipmentTypeChange, getOptionLabel, typesOptions]); - - return ( - - {equipmentTypeField} - {filtersField} - - ); -}; - -export default ByFilterDeletionForm; diff --git a/src/components/dialogs/network-modifications/by-filter/by-filter-deletion/by-filter-deletion.type.ts b/src/components/dialogs/network-modifications/by-filter/by-filter-deletion/by-filter-deletion.type.ts deleted file mode 100644 index 636c04511d..0000000000 --- a/src/components/dialogs/network-modifications/by-filter/by-filter-deletion/by-filter-deletion.type.ts +++ /dev/null @@ -1,25 +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 { EQUIPMENT_TYPES } from '../../../../utils/equipment-types'; -import { Filter } from '../commons/by-filter.type'; -import { NetworkModificationDialogProps } from '../../../../graph/menus/network-modifications/network-modification-menu.type'; - -export interface ByFilterDeletionEditData { - uuid: string; - equipmentType: keyof typeof EQUIPMENT_TYPES; - filters: Filter[]; -} - -export interface ByFilterDeletionFormData { - type: keyof typeof EQUIPMENT_TYPES | null; - filters: Filter[]; -} - -export type ByFilterDeletionDialogProps = NetworkModificationDialogProps & { - editData: ByFilterDeletionEditData; -}; diff --git a/src/translations/en.json b/src/translations/en.json index 730d6de241..142167c357 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -1410,7 +1410,6 @@ "highVoltageLimit": "High voltage limit (kV)", "SingleEquipment": "Single equipment", "MultipleEquipment": "Multiple equipment", - "DeleteEquipmentByFilter": "Delete equipment by filter", "ratedU1": "Rated voltage 1 (kV)", "ratedU2": "Rated voltage 2 (kV)", "linearShuntCompensators": "Linear shunt compensators", diff --git a/src/translations/fr.json b/src/translations/fr.json index fe285176a6..94c13a9eb8 100644 --- a/src/translations/fr.json +++ b/src/translations/fr.json @@ -1409,7 +1409,6 @@ "highVoltageLimit": "Limite tension haute (kV)", "SingleEquipment": "Un ouvrage", "MultipleEquipment": "Plusieurs ouvrages", - "DeleteEquipmentByFilter": "Supprimer des ouvrages par filtre", "ratedU1": "Tension d'enroulement 1 (kV)", "ratedU2": "Tension d'enroulement 2 (kV)", "linearShuntCompensators": "MCS linéaires",