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
Original file line number Diff line number Diff line change
Expand Up @@ -413,3 +413,5 @@ export const EQUIPMENTS_FIELDS = {
[EquipmentType.STATIC_VAR_COMPENSATOR]: [FIELD_OPTIONS.PROPERTY],
[EquipmentType.HVDC_LINE]: [FIELD_OPTIONS.PROPERTY],
} as const;

export type EquipmentTypeOptionType = keyof typeof EQUIPMENTS_FIELDS;
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,7 @@ import { DataType } from './assignment.type';
import { areIdsEqual, comparatorStrIgnoreCase } from '../../../../../utils/utils';
import GridItem from '../../../../commons/grid-item';
import { useIntl } from 'react-intl';
import { EQUIPMENTS_FIELDS } from './assignment-constants';

type EquipmentTypeOptionType = keyof typeof EQUIPMENTS_FIELDS;
import { EQUIPMENTS_FIELDS, EquipmentTypeOptionType } from './assignment-constants';

interface AssignmentFormProps {
name: string;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,12 @@ import { getAssignmentInitialValue } from './assignment/assignment-utils';
import { useFormContext } from 'react-hook-form';
import SelectWithConfirmationInput from '../../../commons/select-with-confirmation-input';
import { ExpandableInput, mergeSx, unscrollableDialogStyles } from '@gridsuite/commons-ui';
import { EQUIPMENTS_FIELDS } from './assignment/assignment-constants';
import { EQUIPMENTS_FIELDS, EquipmentTypeOptionType } from './assignment/assignment-constants';
import useGetLabelEquipmentTypes from '../../../../../hooks/use-get-label-equipment-types';
import GridItem from '../../../commons/grid-item';

interface ModificationByAssignmentFormProps {}

type EquipmentTypeOptionType = keyof typeof EQUIPMENTS_FIELDS;

const EQUIPMENT_TYPE_OPTIONS: EquipmentTypeOptionType[] = Object.keys(EQUIPMENTS_FIELDS) as EquipmentTypeOptionType[];

const ModificationByAssignmentForm: FC<ModificationByAssignmentFormProps> = () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,13 @@
*/

import { FunctionComponent } from 'react';
import { AutocompleteInput, DirectoryItemsInput, ElementType, useFormatLabelWithUnit } from '@gridsuite/commons-ui';
import {
AutocompleteInput,
DirectoryItemsInput,
ElementType,
EquipmentType,
useFormatLabelWithUnit,
} from '@gridsuite/commons-ui';
import {
EDITED_FIELD,
EQUIPMENT_TYPE_FIELD,
Expand All @@ -16,7 +22,7 @@ import {
REFERENCE_FIELD_OR_VALUE_2,
} from '../../../../../utils/field-constants';
import { useWatch } from 'react-hook-form';
import { EQUIPMENTS_FIELDS } from './formula-utils';
import { EQUIPMENTS_FIELDS, EquipmentTypeOptionType } from './formula-utils';
import ReferenceAutocompleteInput from './reference-autocomplete-input';
import DragHandleIcon from '@mui/icons-material/DragHandle';
import { getIdOrValue, getLabelOrValue } from '../../../../commons/utils';
Expand All @@ -35,13 +41,18 @@ const OPERATOR_OPTIONS = [
{ id: 'DIVISION', label: '/' },
{ id: 'PERCENTAGE', label: '%' },
];

const FormulaForm: FunctionComponent<FormulaProps> = ({ name, index }) => {
const equipmentTypeWatch = useWatch({
const equipmentTypeWatch: EquipmentTypeOptionType = useWatch({
name: EQUIPMENT_TYPE_FIELD,
});
const equipmentFields: { id: string; label: string; unit: string }[] =
// @ts-expect-error TODO: missing type in context
EQUIPMENTS_FIELDS?.[equipmentTypeWatch] ?? [];
const equipmentFields = EQUIPMENTS_FIELDS[equipmentTypeWatch] ?? [];
const editableEquipmentFields =
equipmentTypeWatch === EquipmentType.TWO_WINDINGS_TRANSFORMER
? (EQUIPMENTS_FIELDS[equipmentTypeWatch].filter(
(field) => field.id !== 'RATIO_HIGH_TAP_POSITION' && field.id !== 'PHASE_HIGH_TAP_POSITION'
) ?? [])
: (EQUIPMENTS_FIELDS[equipmentTypeWatch] ?? []);

const formatLabelWithUnit = useFormatLabelWithUnit();

Expand All @@ -59,10 +70,10 @@ const FormulaForm: FunctionComponent<FormulaProps> = ({ name, index }) => {
const editedField = (
<AutocompleteInput
name={`${name}.${index}.${EDITED_FIELD}`}
options={equipmentFields}
options={editableEquipmentFields}
label={'EditedField'}
size={'small'}
inputTransform={(value: any) => equipmentFields.find((option) => option?.id === value) || value}
inputTransform={(value: any) => editableEquipmentFields.find((option) => option?.id === value) || value}
outputTransform={(option: any) => getIdOrValue(option) ?? null}
getOptionLabel={(option: any) => formatLabelWithUnit(option)}
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,10 +122,12 @@ export const EQUIPMENTS_FIELDS: EquipmentFields = {
{ id: 'RATED_S', label: 'RatedNominalPowerText', unit: MEGA_VOLT_AMPERE },
{ id: 'TARGET_V', label: 'RatioTargetV', unit: KILO_VOLT },
{ id: 'RATIO_LOW_TAP_POSITION', label: 'RatioLowTapPosition' },
{ id: 'RATIO_HIGH_TAP_POSITION', label: 'RatioHighTapPosition' },
{ id: 'RATIO_TAP_POSITION', label: 'RatioTapPosition' },
{ id: 'RATIO_TARGET_DEADBAND', label: 'RatioDeadBand', unit: KILO_VOLT },
{ id: 'REGULATION_VALUE', label: 'PhaseRegulatingValue' },
{ id: 'PHASE_LOW_TAP_POSITION', label: 'PhaseLowTapPosition' },
{ id: 'PHASE_HIGH_TAP_POSITION', label: 'PhaseHighTapPosition' },
{ id: 'PHASE_TAP_POSITION', label: 'PhaseTapPosition' },
{ id: 'PHASE_TARGET_DEADBAND', label: 'PhaseDeadBand' },
],
Expand All @@ -139,6 +141,8 @@ export const EQUIPMENTS_FIELDS: EquipmentFields = {
],
};

export type EquipmentTypeOptionType = keyof typeof EQUIPMENTS_FIELDS;

function isValueInEquipmentFields(context: TestContext<AnyObject>, value: string) {
// this will return the highest level parent, so we can get the equipment type
const parent = context.from?.[context.from.length - 1];
Expand Down
Loading