@@ -77,7 +77,7 @@ export default function NewEntityExtractionSetting({
7777 const [ combinedRels , setCombinedRels ] = useState < OptionType [ ] > ( [ ] ) ;
7878 const [ isSchemaMenuOpen , setIsSchemaMenuOpen ] = useState < boolean > ( false ) ;
7979 const schemaBtnRef = useRef < HTMLButtonElement > ( null ) ;
80-
80+
8181 useEffect ( ( ) => {
8282 const patterns = Array . from (
8383 new Set ( [ ...userDefinedPattern , ...preDefinedPattern , ...dbPattern , ...schemaTextPattern ] )
@@ -222,58 +222,60 @@ export default function NewEntityExtractionSetting({
222222 setTarget ( null ) ;
223223 }
224224 } ;
225+ const updateStore = (
226+ patterns : string [ ] ,
227+ patternToRemove : string ,
228+ setPatterns : React . Dispatch < React . SetStateAction < string [ ] > > ,
229+ setNodes : React . Dispatch < React . SetStateAction < OptionType [ ] > > ,
230+ setRels : React . Dispatch < React . SetStateAction < OptionType [ ] > >
231+ ) => {
232+ const updatedPatterns = patterns . filter ( ( p ) => p !== patternToRemove ) ;
233+ if ( updatedPatterns . length === 0 ) {
234+ setPatterns ( [ ] ) ;
235+ setNodes ( [ ] ) ;
236+ setRels ( [ ] ) ;
237+ return ;
238+ }
239+ const updatedTuples : TupleType [ ] = updatedPatterns
240+ . map ( ( item ) => {
241+ const parts = item . match ( / ( .* ?) - \[ : ( .* ?) \] - > ( .* ) / ) ;
242+ if ( ! parts ) {
243+ return null ;
244+ }
245+ const [ src , rel , tgt ] = parts . slice ( 1 ) . map ( ( s ) => s . trim ( ) ) ;
246+ return {
247+ value : `${ src } ,${ rel } ,${ tgt } ` ,
248+ label : `${ src } -[:${ rel } ]-> ${ tgt } ` ,
249+ source : src ,
250+ target : tgt ,
251+ type : rel ,
252+ } ;
253+ } )
254+ . filter ( Boolean ) as TupleType [ ] ;
255+ const { nodeLabelOptions, relationshipTypeOptions } = extractOptions ( updatedTuples ) ;
256+ setPatterns ( updatedPatterns ) ;
257+ setNodes ( nodeLabelOptions ) ;
258+ setRels ( relationshipTypeOptions ) ;
259+ } ;
225260
226261 const handleRemovePattern = ( patternToRemove : string ) => {
227262 const match = patternToRemove . match ( / ( .* ?) - \[ : ( .* ?) \] - > ( .* ) / ) ;
228263 if ( ! match ) {
229264 return ;
230265 }
231266 const [ , source , type , target ] = match . map ( ( s ) => s . trim ( ) ) ;
232- const updateStore = (
233- patterns : string [ ] ,
234- setPatterns : React . Dispatch < React . SetStateAction < string [ ] > > ,
235- setNodes : React . Dispatch < React . SetStateAction < OptionType [ ] > > ,
236- setRels : React . Dispatch < React . SetStateAction < OptionType [ ] > >
237- ) => {
238- const updatedPatterns = patterns . filter ( ( p ) => p !== patternToRemove ) ;
239- if ( updatedPatterns . length === 0 ) {
240- setPatterns ( [ ] ) ;
241- setNodes ( [ ] ) ;
242- setRels ( [ ] ) ;
243- return ;
244- }
245- const updatedTuples : TupleType [ ] = updatedPatterns
246- . map ( ( item ) => {
247- const parts = item . match ( / ( .* ?) - \[ : ( .* ?) \] - > ( .* ) / ) ;
248- if ( ! parts ) {
249- return null ;
250- }
251- const [ src , rel , tgt ] = parts . slice ( 1 ) . map ( ( s ) => s . trim ( ) ) ;
252- return {
253- value : `${ src } ,${ rel } ,${ tgt } ` ,
254- label : `${ src } -[:${ rel } ]-> ${ tgt } ` ,
255- source : src ,
256- target : tgt ,
257- type : rel ,
258- } ;
259- } )
260- . filter ( Boolean ) as TupleType [ ] ;
261- const { nodeLabelOptions, relationshipTypeOptions } = extractOptions ( updatedTuples ) ;
262- setPatterns ( updatedPatterns ) ;
263- setNodes ( nodeLabelOptions ) ;
264- setRels ( relationshipTypeOptions ) ;
265- } ;
267+
266268 if ( userDefinedPattern . includes ( patternToRemove ) ) {
267- updateStore ( userDefinedPattern , setUserDefinedPattern , setUserDefinedNodes , setUserDefinedRels ) ;
269+ updateStore ( userDefinedPattern , patternToRemove , setUserDefinedPattern , setUserDefinedNodes , setUserDefinedRels ) ;
268270 }
269271 if ( preDefinedPattern . includes ( patternToRemove ) ) {
270- updateStore ( preDefinedPattern , setPreDefinedPattern , setPreDefinedNodes , setPreDefinedRels ) ;
272+ updateStore ( preDefinedPattern , patternToRemove , setPreDefinedPattern , setPreDefinedNodes , setPreDefinedRels ) ;
271273 }
272274 if ( dbPattern . includes ( patternToRemove ) ) {
273- updateStore ( dbPattern , setDbPattern , setDbNodes , setDbRels ) ;
275+ updateStore ( dbPattern , patternToRemove , setDbPattern , setDbNodes , setDbRels ) ;
274276 }
275277 if ( schemaTextPattern . includes ( patternToRemove ) ) {
276- updateStore ( schemaTextPattern , setSchemaTextPattern , setSchemaValNodes , setSchemaValRels ) ;
278+ updateStore ( schemaTextPattern , patternToRemove , setSchemaTextPattern , setSchemaValNodes , setSchemaValRels ) ;
277279 }
278280 setCombinedPatterns ( ( prev ) => prev . filter ( ( p ) => p !== patternToRemove ) ) ;
279281 setCombinedNodes ( ( prev ) => prev . filter ( ( n ) => n . value !== source && n . value !== target ) ) ;
0 commit comments