@@ -9,7 +9,7 @@ import { showNormalToast } from '../../../../utils/Toasts';
99import PatternContainer from './PatternContainer' ;
1010import SchemaViz from '../../../Graph/SchemaViz' ;
1111import GraphPattern from './GraphPattern' ;
12- import { updateLocalStorage , extractOptions } from '../../../../utils/Utils' ;
12+ import { updateLocalStorage , extractOptions , parseRelationshipString } from '../../../../utils/Utils' ;
1313import TooltipWrapper from '../../../UI/TipWrapper' ;
1414
1515export default function NewEntityExtractionSetting ( {
@@ -33,9 +33,6 @@ export default function NewEntityExtractionSetting({
3333 closeEnhanceGraphSchemaDialog ?: ( ) => void ;
3434} ) {
3535 const {
36- // selectedRels,
37- // selectedNodes,
38- // allPatterns,
3936 setSelectedRels,
4037 setSelectedNodes,
4138 userDefinedPattern,
@@ -67,12 +64,12 @@ export default function NewEntityExtractionSetting({
6764 const { userCredentials } = useCredentials ( ) ;
6865 const [ openGraphView , setOpenGraphView ] = useState < boolean > ( false ) ;
6966 const [ viewPoint , setViewPoint ] = useState < string > ( 'tableView' ) ;
67+ const [ combinedPatterns , setCombinedPatterns ] = useState < string [ ] > ( [ ] ) ;
7068 const [ tupleOptions , setTupleOptions ] = useState < TupleType [ ] > ( [ ] ) ;
7169 const [ selectedSource , setSource ] = useState < OptionType | null > ( null ) ;
7270 const [ selectedType , setType ] = useState < OptionType | null > ( null ) ;
7371 const [ selectedTarget , setTarget ] = useState < OptionType | null > ( null ) ;
7472 const [ highlightPattern , setHighlightedPattern ] = useState < string | null > ( null ) ;
75- const [ combinedPatterns , setCombinedPatterns ] = useState < string [ ] > ( [ ] ) ;
7673 const [ combinedNodes , setCombinedNodes ] = useState < OptionType [ ] > ( [ ] ) ;
7774 const [ combinedRels , setCombinedRels ] = useState < OptionType [ ] > ( [ ] ) ;
7875 const [ isSchemaMenuOpen , setIsSchemaMenuOpen ] = useState < boolean > ( false ) ;
@@ -101,7 +98,6 @@ export default function NewEntityExtractionSetting({
10198 dbRels ,
10299 schemaValRels ,
103100 ] ) ;
104-
105101 useEffect ( ( ) => {
106102 if ( userDefinedPattern . length > 0 ) {
107103 const lastPattern = userDefinedPattern [ 0 ] ;
@@ -112,14 +108,6 @@ export default function NewEntityExtractionSetting({
112108 }
113109 } , [ userDefinedPattern ] ) ;
114110
115- // useEffect(() => {
116- // if (allPatterns.length) {
117- // setCombinedNodes(selectedNodes as OptionType[]);
118- // setCombinedPatterns(allPatterns);
119- // setCombinedRels(selectedRels as OptionType[]);
120- // }
121- // }, [allPatterns, selectedNodes, selectedRels]);
122-
123111 const handleFinalClear = ( ) => {
124112 // overall
125113 setSelectedNodes ( [ ] ) ;
@@ -187,7 +175,7 @@ export default function NewEntityExtractionSetting({
187175 setTarget ( target as OptionType ) ;
188176 } ;
189177
190- const handleAddPattern = ( ) => {
178+ const handleAddPattern = ( tupleOptionsValue : TupleType [ ] ) => {
191179 if ( selectedSource && selectedType && selectedTarget ) {
192180 const patternValue = `${ selectedSource . value } -[:${ selectedType . value } ]-> ${ selectedTarget . value } ` ;
193181 const relValue = `${ selectedSource . value } ,${ selectedType . value } ,${ selectedTarget . value } ` ;
@@ -198,7 +186,6 @@ export default function NewEntityExtractionSetting({
198186 target : selectedTarget . value || '' ,
199187 type : selectedType . value || '' ,
200188 } ;
201- // Update User Defined Patterns
202189 setUserDefinedPattern ( ( prev : string [ ] ) => {
203190 const alreadyExists = prev . includes ( patternValue ) ;
204191 if ( ! alreadyExists ) {
@@ -207,35 +194,35 @@ export default function NewEntityExtractionSetting({
207194 }
208195 return prev ;
209196 } ) ;
210- setTupleOptions ( ( prev : TupleType [ ] ) => {
211- const alreadyExists = prev . some ( ( tuple ) => tuple . value === relValue ) ;
212- if ( ! alreadyExists ) {
213- const updatedTuples = [ relationshipOption , ... prev ] ;
214- const { nodeLabelOptions , relationshipTypeOptions } = extractOptions ( updatedTuples ) ;
215- setUserDefinedNodes ( nodeLabelOptions ) ;
216- setUserDefinedRels ( relationshipTypeOptions ) ;
217- setAllPatterns ( ( prev ) => {
218- if ( ! prev . includes ( patternValue ) ) {
219- return [ patternValue , ... prev ] ;
220- }
221- return prev ;
222- } ) ;
223- setSelectedNodes ( ( prev ) => {
224- const allNodeValues = prev . map ( ( p ) => p . value ) ;
225- const toAdd = [ selectedSource , selectedTarget ] . filter ( ( node ) => ! allNodeValues . includes ( node . value ) ) ;
226- return [ ... toAdd , ... prev ] ;
227- } ) ;
228- setSelectedRels ( ( prev ) => {
229- const allRelValues = prev . map ( ( p ) => p . value ) ;
230- if ( ! allRelValues . includes ( selectedType . value ) ) {
231- return [ selectedType , ... prev ] ;
232- }
233- return prev ;
234- } ) ;
235- return updatedTuples ;
236- }
237- return prev ;
238- } ) ;
197+ const alreadyExists = tupleOptionsValue . some ( ( tuple ) => tuple . value === relValue ) ;
198+ if ( ! alreadyExists ) {
199+ const updatedTuples = [ relationshipOption , ... tupleOptionsValue ] ;
200+ const { nodeLabelOptions , relationshipTypeOptions } = extractOptions ( updatedTuples ) ;
201+ setUserDefinedNodes ( nodeLabelOptions ) ;
202+ setUserDefinedRels ( relationshipTypeOptions ) ;
203+ setAllPatterns ( ( prev ) => {
204+ if ( ! prev . includes ( patternValue ) ) {
205+ return [ patternValue , ... prev ] ;
206+ }
207+ return prev ;
208+ } ) ;
209+ setSelectedNodes ( ( prev ) => {
210+ const allNodeValues = prev . map ( ( p ) => p . value ) ;
211+ const toAdd = [ selectedSource , selectedTarget ] . filter ( ( node ) => ! allNodeValues . includes ( node . value ) ) ;
212+ return [ ... toAdd , ... prev ] ;
213+ } ) ;
214+ setSelectedRels ( ( prev ) => {
215+ const allRelValues = prev . map ( ( p ) => p . value ) ;
216+ if ( ! allRelValues . includes ( selectedType . value ) ) {
217+ return [ selectedType , ... prev ] ;
218+ }
219+ return prev ;
220+ } ) ;
221+ console . log ( { updatedTuples } ) ;
222+ setTupleOptions ( updatedTuples ) ;
223+ } else {
224+ showNormalToast ( 'Pattern Already Exists' ) ;
225+ }
239226 setSource ( null ) ;
240227 setType ( null ) ;
241228 setTarget ( null ) ;
@@ -350,7 +337,13 @@ export default function NewEntityExtractionSetting({
350337 selectedType = { selectedType }
351338 selectedTarget = { selectedTarget }
352339 onPatternChange = { handlePatternChange }
353- onAddPattern = { handleAddPattern }
340+ onAddPattern = { ( ) =>
341+ handleAddPattern (
342+ tupleOptions . length > 0
343+ ? tupleOptions
344+ : combinedPatterns . map ( ( pattern ) => parseRelationshipString ( pattern ) )
345+ )
346+ }
354347 selectedTupleOptions = { tupleOptions }
355348 > </ GraphPattern >
356349 < PatternContainer
0 commit comments