@@ -20,7 +20,7 @@ import { TreeViewFinderNodeProps } from '../../treeViewFinder';
20
20
import { OverflowableText } from '../../overflowableText' ;
21
21
import { DirectoryItemSelector } from '../../directoryItemSelector' ;
22
22
import { fetchDirectoryElementPath } from '../../../services' ;
23
- import { BASE_EQUIPMENTS , ElementAttributes , EquipmentType , mergeSx } from '../../../utils' ;
23
+ import { getBasicEquipmentLabel , ElementAttributes , EquipmentType , mergeSx } from '../../../utils' ;
24
24
import { NAME } from './constants' ;
25
25
26
26
const styles = {
@@ -67,11 +67,6 @@ export interface DirectoryItemsInputProps {
67
67
equipmentColorsMap ?: Map < string , string > ;
68
68
}
69
69
70
- interface EquipmentMetaData {
71
- color : string ;
72
- translateLabel : string | undefined ;
73
- }
74
-
75
70
export function DirectoryItemsInput ( {
76
71
label,
77
72
name,
@@ -94,14 +89,14 @@ export function DirectoryItemsInput({
94
89
const [ multiSelect , setMultiSelect ] = useState ( allowMultiSelect ) ;
95
90
const types = useMemo ( ( ) => [ elementType ] , [ elementType ] ) ;
96
91
const [ directoryItemSelectorOpen , setDirectoryItemSelectorOpen ] = useState ( false ) ;
97
- const [ elementsMetadata , setElementsMetadata ] = useState < EquipmentMetaData [ ] > ( [ ] ) ;
98
92
const {
99
93
fields : elements ,
100
94
append,
101
95
remove,
102
96
} = useFieldArray ( {
103
97
name,
104
98
} ) ;
99
+ const elementsWithMetaData : TreeViewFinderNodeProps [ ] = elements as unknown as TreeViewFinderNodeProps [ ] ;
105
100
106
101
const formContext = useCustomFormContext ( ) ;
107
102
const { getValues, validationSchema } = formContext ;
@@ -124,7 +119,6 @@ export function DirectoryItemsInput({
124
119
} ) ;
125
120
}
126
121
127
- const currentElementsMetadata = elementsMetadata ? [ ...elementsMetadata ] : [ ] ;
128
122
values . forEach ( ( value ) => {
129
123
const { icon, children, ...otherElementAttributes } = value ;
130
124
@@ -136,49 +130,23 @@ export function DirectoryItemsInput({
136
130
} ) ;
137
131
} else {
138
132
append ( otherElementAttributes ) ;
139
- if ( equipmentColorsMap && value ?. specificMetadata ?. equipmentType ) {
140
- const type : EquipmentType = value ?. specificMetadata ?. equipmentType as EquipmentType ;
141
- currentElementsMetadata . push ( {
142
- color : equipmentColorsMap . get ( value . specificMetadata . equipmentType ) ?? '' ,
143
- translateLabel :
144
- type !== EquipmentType . HVDC_LINE ? BASE_EQUIPMENTS [ type ] ?. label : 'HvdcLines' ,
145
- } ) ;
146
- }
147
133
onRowChanged ?.( true ) ;
148
134
onChange ?.( getValues ( name ) ) ;
149
135
}
150
136
} ) ;
151
137
setDirectoryItemSelectorOpen ( false ) ;
152
138
setSelected ( [ ] ) ;
153
- if ( equipmentColorsMap ) {
154
- setElementsMetadata ( currentElementsMetadata ) ;
155
- }
156
139
} ,
157
- [
158
- selected ,
159
- elementsMetadata ,
160
- equipmentColorsMap ,
161
- remove ,
162
- getValues ,
163
- name ,
164
- snackError ,
165
- append ,
166
- onRowChanged ,
167
- onChange ,
168
- ]
140
+ [ selected , remove , getValues , name , snackError , append , onRowChanged , onChange ]
169
141
) ;
170
142
171
143
const removeElements = useCallback (
172
144
( index : number ) => {
173
145
remove ( index ) ;
174
146
onRowChanged ?.( true ) ;
175
147
onChange ?.( getValues ( name ) ) ;
176
- if ( elementsMetadata ?. length > 0 ) {
177
- const currentColors = [ ...elementsMetadata . slice ( 0 , index ) , ...elementsMetadata . slice ( index + 1 ) ] ;
178
- setElementsMetadata ( currentColors ) ;
179
- }
180
148
} ,
181
- [ remove , onRowChanged , onChange , getValues , name , elementsMetadata ]
149
+ [ remove , onRowChanged , onChange , getValues , name ]
182
150
) ;
183
151
184
152
const handleChipClick = useCallback (
@@ -213,23 +181,24 @@ export function DirectoryItemsInput({
213
181
) }
214
182
error = { ! ! error ?. message }
215
183
>
216
- { elements ?. length === 0 && label && (
184
+ { elementsWithMetaData ?. length === 0 && label && (
217
185
< FieldLabel
218
186
label = { label }
219
187
optional = { labelRequiredFromContext && ! isFieldRequired ( name , validationSchema , getValues ( ) ) }
220
188
/>
221
189
) }
222
- { elements ?. length > 0 && (
190
+ { elementsWithMetaData ?. length > 0 && (
223
191
< FormControl sx = { styles . formDirectoryElements2 } >
224
- { elements . map ( ( item , index ) => (
192
+ { elementsWithMetaData . map ( ( item , index ) => (
225
193
< Box key = { `Box${ item . id } ` } sx = { { display : 'flex' , flexDirection : 'column' , gap : 1 } } >
226
194
< Chip
227
195
key = { item . id }
228
196
size = "small"
229
197
sx = { {
230
198
backgroundColor :
231
- elementsMetadata ?. length > index
232
- ? elementsMetadata ?. [ index ] ?. color
199
+ item . specificMetadata ?. equipmentType &&
200
+ equipmentColorsMap ?. has ( item . specificMetadata ?. equipmentType )
201
+ ? equipmentColorsMap . get ( item . specificMetadata . equipmentType )
233
202
: undefined ,
234
203
} }
235
204
onDelete = { ( ) => removeElements ( index ) }
@@ -242,12 +211,12 @@ export function DirectoryItemsInput({
242
211
}
243
212
/>
244
213
< FormHelperText >
245
- { elementsMetadata ?. [ index ] ?. translateLabel ? (
214
+ { item ?. specificMetadata ?. equipmentType ? (
246
215
< FormattedMessage
247
216
id = {
248
- elementsMetadata ?. length > index
249
- ? elementsMetadata ?. [ index ] ?. translateLabel
250
- : undefined
217
+ item . specificMetadata . equipmentType !== EquipmentType . HVDC_LINE
218
+ ? getBasicEquipmentLabel ( item . specificMetadata . equipmentType )
219
+ : 'HvdcLines'
251
220
}
252
221
/>
253
222
) : (
0 commit comments