Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion jest.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ const config: Config = {
'^.+\\.svg\\?react$|@powsybl/network-viewer': '<rootDir>/src/_mocks_/svg.tsx',
'^.+\\.(css|less|scss)$': 'identity-obj-proxy',
},
transformIgnorePatterns: ['node_modules/(?!@gridsuite/commons-ui|react-dnd|dnd-core|@react-dnd)'], // transform from ESM
transformIgnorePatterns: [
'node_modules/(?!@gridsuite/commons-ui|react-dnd|uuid|dnd-core|react-resizable-panels|@react-dnd)',
], // transform from ESM
moduleDirectories: ['node_modules', 'src'], // to allow absolute path from ./src
setupFiles: ['<rootDir>/jest.setup.ts'],
};
Expand Down
8 changes: 4 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"dependencies": {
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
"@gridsuite/commons-ui": "0.169.0",
"@gridsuite/commons-ui": "0.170.0",
"@hello-pangea/dnd": "^18.0.1",
"@hookform/resolvers": "^4.1.3",
"@mui/icons-material": "^5.18.0",
Expand Down
11 changes: 7 additions & 4 deletions src/components/dialogs/limits/limits-pane-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,23 +29,26 @@ import {
areArrayElementsUnique,
formatMapInfosToTemporaryLimitsFormSchema,
formatTemporaryLimitsModificationToFormSchema,
toModificationOperation,
} from 'components/utils/utils';
import yup from 'components/utils/yup-config';
import {
AttributeModification,
CurrentLimits,
OperationalLimitsGroup,
OperationalLimitsGroupModificationInfos,
OperationType,
TemporaryLimit,
} from '../../../services/network-modification-types';
import { CurrentLimitsData } from '../../../services/study/network-map.type';
import { LineModificationFormSchema } from '../network-modifications/line/modification/line-modification-type';
import { OperationalLimitsGroupFormSchema, TemporaryLimitFormSchema } from './operational-limits-groups-types';
import { TestContext } from 'yup';
import { APPLICABILITY } from 'components/network/constants';
import { FieldConstants, sanitizeString } from '@gridsuite/commons-ui';
import {
AttributeModification,
FieldConstants,
OperationType,
sanitizeString,
toModificationOperation,
} from '@gridsuite/commons-ui';

const limitsGroupValidationSchema = () => ({
[ID]: yup.string().nonNullable().required(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import {
DeepNullable,
sanitizeString,
FieldConstants,
toModificationOperation,
} from '@gridsuite/commons-ui';
import { yupResolver } from '@hookform/resolvers/yup';
import yup from 'components/utils/yup-config';
Expand Down Expand Up @@ -69,7 +70,6 @@ import {
import { isNodeBuilt } from '../../../../graph/util/model-functions';
import { BatteryFormInfos, BatteryModificationDialogSchemaForm } from '../battery-dialog.type';
import { FetchStatus } from '../../../../../services/utils.type';
import { toModificationOperation } from '../../../../utils/utils';
import {
getActivePowerControlEmptyFormData,
getActivePowerControlSchema,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import {
DeepNullable,
sanitizeString,
FieldConstants,
toModificationOperation,
} from '@gridsuite/commons-ui';
import { yupResolver } from '@hookform/resolvers/yup';
import yup from 'components/utils/yup-config';
Expand Down Expand Up @@ -96,7 +97,6 @@ import {
} from '../../../active-power-control/active-power-control-utils';
import { GeneratorModificationInfos } from '../../../../../services/network-modification-types';
import { GeneratorFormInfos, GeneratorModificationDialogSchemaForm } from '../generator-dialog.type';
import { toModificationOperation } from '../../../../utils/utils';
import { EquipmentModificationDialogProps } from '../../../../graph/menus/network-modifications/network-modification-menu.type';
import { useFormWithDirtyTracking } from 'components/dialogs/commons/use-form-with-dirty-tracking';
import {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ import {
MODIFICATION_TYPES,
modificationPropertiesSchema,
sanitizeString,
toModificationOperation,
} from '@gridsuite/commons-ui';
import { UNDEFINED_CONNECTION_DIRECTION } from '../../../../../network/constants';
import { getConnectivityWithPositionSchema } from 'components/dialogs/connectivity/connectivity-form-utils';
Expand All @@ -60,7 +61,6 @@ import {
LccShuntCompensatorInfos,
LccShuntCompensatorModificationInfos,
} from '../../../../../../services/network-modification-types';
import { toModificationOperation } from '../../../../../utils/utils';

export const getLccConverterStationSchema = () =>
yup.object().shape({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import {
DeepNullable,
sanitizeString,
FieldConstants,
toModificationOperation,
} from '@gridsuite/commons-ui';
import { yupResolver } from '@hookform/resolvers/yup';
import { LccDialogTab, LccFormInfos, LccModificationSchemaForm } from '../common/lcc-type';
Expand All @@ -55,7 +56,6 @@ import { EQUIPMENT_INFOS_TYPES } from '../../../../../utils/equipment-types';
import { FORM_LOADING_DELAY } from '../../../../../network/constants';
import { ModificationDialog } from '../../../../commons/modificationDialog';
import { LccModificationForm } from './lcc-modification-form';
import { toModificationOperation } from '../../../../../utils/utils';
import { LccConverterStationModificationInfos, LccModificationInfos } from 'services/network-modification-types';
import { useFormWithDirtyTracking } from 'components/dialogs/commons/use-form-with-dirty-tracking';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,12 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/

import { MODIFICATION_TYPES, sanitizeString } from '@gridsuite/commons-ui';
import {
AttributeModification,
MODIFICATION_TYPES,
sanitizeString,
toModificationOperation,
} from '@gridsuite/commons-ui';
import yup from '../../../../../utils/yup-config';
import {
BUS_OR_BUSBAR_SECTION,
Expand Down Expand Up @@ -39,13 +44,9 @@ import {
getReactiveLimitsSchema,
} from '../../../../reactive-limits/reactive-limits-utils';
import { UNDEFINED_CONNECTION_DIRECTION } from '../../../../../network/constants';
import { toModificationOperation } from '../../../../../utils/utils';
import { VscConverterStationFormInfos, ConverterStationElementModificationInfos } from './converter-station-type';
import { ReactiveCapabilityCurvePoints } from '../../../../reactive-limits/reactive-limits.type';
import {
AttributeModification,
ConverterStationCreationInfos,
} from '../../../../../../services/network-modification-types';
import { ConverterStationCreationInfos } from '../../../../../../services/network-modification-types';

export type UpdateReactiveCapabilityCurveTable = (action: string, index: number) => void;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,8 @@ import { EQUIPMENT_TYPES } from '../../../utils/equipment-types';
import yup from '../../../utils/yup-config';
import type { UUID } from 'node:crypto';
import { LIMIT_SETS_TABULAR_MODIFICATION_EQUIPMENTS } from '../tabular/tabular-modification-utils';
import { toModificationOperation } from '../../../utils/utils';
import { AttributeModification } from '../../../../services/network-modification-types';
import { APPLICABILITY } from '../../../network/constants';
import { AttributeModification, toModificationOperation } from '@gridsuite/commons-ui';

type TemporaryLimit = {
name: AttributeModification<string>;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
modificationPropertiesSchema,
sanitizeString,
snackWithFallback,
toModificationOperation,
toModificationProperties,
useSnackMessage,
} from '@gridsuite/commons-ui';
Expand Down Expand Up @@ -103,7 +104,6 @@ import { BranchInfos } from '../../../../../services/study/network-map.type';
import { useIntl } from 'react-intl';
import { LineModificationFormSchema } from './line-modification-type';
import { LineModificationInfos } from '../../../../../services/network-modification-types';
import { toModificationOperation } from '../../../../utils/utils';
import { useFormWithDirtyTracking } from 'components/dialogs/commons/use-form-with-dirty-tracking';
import { OperationalLimitsGroupsFormSchema } from '../../../limits/operational-limits-groups-types';
import { ComputedLineCharacteristics } from '../../../line-types-catalog/line-catalog.type';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/

import { AttributeModification } from 'services/network-modification-types';
import { EQUIPMENT_TYPES } from '../../../../utils/equipment-types';
import {
ACTIVE_POWER_SETPOINT,
Expand All @@ -25,7 +24,7 @@ import {
VOLTAGE_LEVEL,
} from '../../../../utils/field-constants';
import { MeasurementInfo } from '../../common/measurements/measurement.type';
import { FieldConstants, Property } from '@gridsuite/commons-ui';
import { AttributeModification, FieldConstants, Property } from '@gridsuite/commons-ui';

export type LoadModificationSchemaForm = {
[EQUIPMENT_NAME]?: string;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
DeepNullable,
sanitizeString,
FieldConstants,
toModificationOperation,
} from '@gridsuite/commons-ui';
import {
BUS_OR_BUSBAR_SECTION,
Expand Down Expand Up @@ -64,7 +65,6 @@ import {
getCharacteristicsFormValidationSchema,
} from '../characteristics-pane/characteristics-form-utils';
import { isNodeBuilt } from '../../../../graph/util/model-functions';
import { toModificationOperation } from '../../../../utils/utils';
import ShuntCompensatorModificationForm from './shunt-compensator-modification-form';

const emptyFormData = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,21 @@ import {
CustomFormProvider,
EquipmentType,
getConcatenatedProperties,
getPropertiesFromModification,
modificationPropertiesSchema,
Property,
snackWithFallback,
toModificationProperties,
useSnackMessage,
DeepNullable,
sanitizeString,
FieldConstants,
SubstationModificationForm,
SubstationModificationFormData,
substationModificationEmptyFormData,
substationModificationFormSchema,
SubstationModificationInfos,
SubstationModificationDto,
substationModificationDtoToForm,
} from '@gridsuite/commons-ui';
import { yupResolver } from '@hookform/resolvers/yup';
import yup from 'components/utils/yup-config';
import SubstationModificationForm from './substation-modification-form';
import { useOpenShortWaitFetching } from 'components/dialogs/commons/handle-modification-form';
import { FORM_LOADING_DELAY } from 'components/network/constants';
import { EQUIPMENT_INFOS_TYPES, EQUIPMENT_TYPES } from 'components/utils/equipment-types';
Expand All @@ -34,41 +36,15 @@ import { FetchStatus } from '../../../../../services/utils';
import { isNodeBuilt } from '../../../../graph/util/model-functions';
import { UUID } from 'node:crypto';
import { CurrentTreeNode } from '../../../../graph/tree-node.type';
import { AttributeModification } from 'services/network-modification-types';
import { useForm } from 'react-hook-form';
import { SubstationInfos } from '../substation-dialog.type';

const formSchema = yup
.object()
.shape({
[FieldConstants.EQUIPMENT_NAME]: yup.string().nullable(),
[FieldConstants.COUNTRY]: yup.string().nullable(),
})
.concat(modificationPropertiesSchema);

export type SubstationModificationFormData = yup.InferType<typeof formSchema>;

const emptyFormData: SubstationModificationFormData = {
[FieldConstants.EQUIPMENT_NAME]: '',
[FieldConstants.COUNTRY]: null,
[FieldConstants.ADDITIONAL_PROPERTIES]: [],
};

interface SubstationModificationEditData {
uuid?: UUID;
equipmentId: string;
equipmentName?: AttributeModification<string> | null;
country: AttributeModification<string> | null;
properties?: Property[] | null;
}

interface SubstationModificationDialogProps {
studyUuid: UUID;
currentNode: CurrentTreeNode;
currentRootNetworkUuid: UUID;
isUpdate: boolean;
editDataFetchStatus?: string;
editData?: SubstationModificationEditData;
editData?: SubstationModificationDto;
defaultIdValue?: string;
}

Expand Down Expand Up @@ -96,12 +72,12 @@ const SubstationModificationDialog = ({
const currentNodeUuid = currentNode?.id;
const { snackError } = useSnackMessage();
const [selectedId, setSelectedId] = useState(defaultIdValue ?? null);
const [substationToModify, setSubstationToModify] = useState<SubstationInfos>();
const [substationToModify, setSubstationToModify] = useState<SubstationModificationInfos>();
const [dataFetchStatus, setDataFetchStatus] = useState(FetchStatus.IDLE);

const formMethods = useForm<DeepNullable<SubstationModificationFormData>>({
defaultValues: emptyFormData,
resolver: yupResolver<DeepNullable<SubstationModificationFormData>>(formSchema),
defaultValues: substationModificationEmptyFormData,
resolver: yupResolver<DeepNullable<SubstationModificationFormData>>(substationModificationFormSchema),
});
const { reset, getValues } = formMethods;

Expand All @@ -110,16 +86,12 @@ const SubstationModificationDialog = ({
if (editData?.equipmentId) {
setSelectedId(editData.equipmentId);
}
reset({
[FieldConstants.EQUIPMENT_NAME]: editData.equipmentName?.value ?? '',
[FieldConstants.COUNTRY]: editData.country?.value ?? null,
...getPropertiesFromModification(editData?.properties ?? undefined),
});
reset(substationModificationDtoToForm(editData));
}
}, [reset, editData]);

const clear = useCallback(() => {
reset(emptyFormData);
reset(substationModificationEmptyFormData);
}, [reset]);

const onEquipmentIdChange = useCallback(
Expand All @@ -135,12 +107,13 @@ const SubstationModificationDialog = ({
equipmentId,
true
)
.then((substation: SubstationInfos) => {
.then((substation: SubstationModificationInfos) => {
if (substation) {
setSubstationToModify(substation);
reset(
(formValues) => ({
...formValues,
[FieldConstants.EQUIPMENT_ID]: equipmentId,
[FieldConstants.ADDITIONAL_PROPERTIES]: getConcatenatedProperties(
substation,
getValues
Expand All @@ -159,7 +132,7 @@ const SubstationModificationDialog = ({
});
} else {
setSubstationToModify(undefined);
reset(emptyFormData, { keepDefaultValues: true });
reset(substationModificationEmptyFormData, { keepDefaultValues: true });
}
},
[studyUuid, currentRootNetworkUuid, currentNodeUuid, reset, getValues, editData]
Expand Down Expand Up @@ -198,7 +171,7 @@ const SubstationModificationDialog = ({

return (
<CustomFormProvider
validationSchema={formSchema}
validationSchema={substationModificationFormSchema}
{...formMethods}
removeOptional={true}
isNodeBuilt={isNodeBuilt(currentNode)}
Expand All @@ -225,9 +198,7 @@ const SubstationModificationDialog = ({
fillerHeight={5}
/>
)}
{selectedId != null && (
<SubstationModificationForm substationToModify={substationToModify} equipmentId={selectedId} />
)}
{selectedId != null && <SubstationModificationForm substationToModify={substationToModify} />}
</ModificationDialog>
</CustomFormProvider>
);
Expand Down
Loading
Loading