1- import { useEffect , useState , useMemo } from 'react' ;
1+ import { useEffect , useState , useMemo , useRef } from 'react' ;
22import ConnectionModal from './Popups/ConnectionModal/ConnectionModal' ;
3- import FileTable from './FileTable' ;
3+ import FileTable , { ChildRef } from './FileTable' ;
44import { Button , Typography , Flex , StatusIndicator } from '@neo4j-ndl/react' ;
55import { useCredentials } from '../context/UserCredentials' ;
66import { useFileContext } from '../context/UsersFiles' ;
@@ -50,7 +50,6 @@ const Content: React.FC<ContentProps> = ({
5050 model,
5151 selectedNodes,
5252 selectedRels,
53- selectedRows,
5453 setSelectedNodes,
5554 setRowSelection,
5655 setSelectedRels,
@@ -81,6 +80,7 @@ const Content: React.FC<ContentProps> = ({
8180 } ) ;
8281 }
8382 ) ;
83+ const childRef = useRef < ChildRef > ( null ) ;
8484 const openGraphEnhancementDialog = ( ) => {
8585 setshowEnhancementDialog ( true ) ;
8686 } ;
@@ -140,10 +140,10 @@ const Content: React.FC<ContentProps> = ({
140140 await extractHandler ( fileItem , uid ) ;
141141 }
142142 } else {
143- const fileItem = selectedRows . find ( ( f ) => JSON . parse ( f ) . id == uid ) ;
143+ const fileItem = childRef . current ?. getSelectedRows ( ) . find ( ( f ) => f . id == uid ) ;
144144 if ( fileItem ) {
145145 setextractLoading ( true ) ;
146- await extractHandler ( JSON . parse ( fileItem ) , uid ) ;
146+ await extractHandler ( fileItem , uid ) ;
147147 }
148148 }
149149 } ;
@@ -164,7 +164,7 @@ const Content: React.FC<ContentProps> = ({
164164 setRowSelection ( ( prev ) => {
165165 const copiedobj = { ...prev } ;
166166 for ( const key in copiedobj ) {
167- if ( JSON . parse ( key ) . id == uid ) {
167+ if ( key == uid ) {
168168 copiedobj [ key ] = false ;
169169 }
170170 }
@@ -252,8 +252,8 @@ const Content: React.FC<ContentProps> = ({
252252 const data = [ ] ;
253253 if ( selectedfileslength && allowLargeFiles ) {
254254 for ( let i = 0 ; i < selectedfileslength ; i ++ ) {
255- const row = JSON . parse ( selectedRows [ i ] ) ;
256- if ( row . status === 'New' ) {
255+ const row = childRef . current ?. getSelectedRows ( ) [ i ] ;
256+ if ( row ? .status === 'New' ) {
257257 data . push ( extractData ( row . id , true ) ) ;
258258 }
259259 }
@@ -316,13 +316,19 @@ const Content: React.FC<ContentProps> = ({
316316 setSelectedRels ( [ ] ) ;
317317 } ;
318318
319- const selectedfileslength = useMemo ( ( ) => selectedRows . length , [ selectedRows ] ) ;
319+ const selectedfileslength = useMemo (
320+ ( ) => childRef . current ?. getSelectedRows ( ) . length ,
321+ [ childRef . current ?. getSelectedRows ( ) ]
322+ ) ;
320323
321- const newFilecheck = useMemo ( ( ) => selectedRows . filter ( ( f ) => JSON . parse ( f ) . status === 'New' ) . length , [ selectedRows ] ) ;
324+ const newFilecheck = useMemo (
325+ ( ) => childRef . current ?. getSelectedRows ( ) . filter ( ( f ) => f . status === 'New' ) . length ,
326+ [ childRef . current ?. getSelectedRows ( ) ]
327+ ) ;
322328
323329 const completedfileNo = useMemo (
324- ( ) => selectedRows . filter ( ( f ) => JSON . parse ( f ) . status === 'Completed' ) . length ,
325- [ selectedRows ]
330+ ( ) => childRef . current ?. getSelectedRows ( ) . filter ( ( f ) => f . status === 'Completed' ) . length ,
331+ [ childRef . current ?. getSelectedRows ( ) ]
326332 ) ;
327333
328334 const dropdowncheck = useMemo ( ( ) => ! filesData . some ( ( f ) => f . status === 'New' ) , [ filesData ] ) ;
@@ -339,17 +345,17 @@ const Content: React.FC<ContentProps> = ({
339345
340346 // const processingCheck = () => {
341347 // const processingFiles = filesData.some((file) => file.status === 'Processing');
342- // const selectedRowProcessing = selectedRows .some((row) =>
348+ // const selectedRowProcessing = childRef.current?.getSelectedRows() .some((row) =>
343349 // filesData.some((file) => file.name === row && file.status === 'Processing')
344350 // );
345351 // return processingFiles || selectedRowProcessing;
346352 // };
347353
348354 const filesForProcessing = useMemo ( ( ) => {
349355 let newstatusfiles : CustomFile [ ] = [ ] ;
350- if ( selectedRows . length ) {
351- selectedRows . forEach ( ( f ) => {
352- const parsedFile : CustomFile = JSON . parse ( f ) ;
356+ if ( childRef . current ?. getSelectedRows ( ) . length ) {
357+ childRef . current ?. getSelectedRows ( ) . forEach ( ( f ) => {
358+ const parsedFile : CustomFile = f ;
353359 if ( parsedFile . status === 'New' ) {
354360 newstatusfiles . push ( parsedFile ) ;
355361 }
@@ -358,12 +364,16 @@ const Content: React.FC<ContentProps> = ({
358364 newstatusfiles = filesData . filter ( ( f ) => f . status === 'New' ) ;
359365 }
360366 return newstatusfiles ;
361- } , [ filesData , selectedRows ] ) ;
367+ } , [ filesData , childRef . current ?. getSelectedRows ( ) ] ) ;
362368
363369 const handleDeleteFiles = async ( deleteEntities : boolean ) => {
364370 try {
365371 setdeleteLoading ( true ) ;
366- const response = await deleteAPI ( userCredentials as UserCredentials , selectedRows , deleteEntities ) ;
372+ const response = await deleteAPI (
373+ userCredentials as UserCredentials ,
374+ childRef . current ?. getSelectedRows ( ) as CustomFile [ ] ,
375+ deleteEntities
376+ ) ;
367377 setRowSelection ( { } ) ;
368378 setdeleteLoading ( false ) ;
369379 if ( response . data . status == 'Success' ) {
@@ -372,8 +382,8 @@ const Content: React.FC<ContentProps> = ({
372382 alertMessage : response . data . message ,
373383 alertType : 'success' ,
374384 } ) ;
375- const filenames = selectedRows . map ( ( str ) => JSON . parse ( str ) . name ) ;
376- filenames . forEach ( ( name ) => {
385+ const filenames = childRef . current ?. getSelectedRows ( ) . map ( ( str ) => str . name ) ;
386+ filenames ? .forEach ( ( name ) => {
377387 setFilesData ( ( prev ) => prev . filter ( ( f ) => f . name != name ) ) ;
378388 } ) ;
379389 } else {
@@ -423,10 +433,10 @@ const Content: React.FC<ContentProps> = ({
423433
424434 const onClickHandler = ( ) => {
425435 if ( isSchema ) {
426- if ( selectedRows . length ) {
436+ if ( childRef . current ?. getSelectedRows ( ) . length ) {
427437 let selectedLargeFiles : CustomFile [ ] = [ ] ;
428- selectedRows . forEach ( ( f ) => {
429- const parsedData : CustomFile = JSON . parse ( f ) ;
438+ childRef . current ?. getSelectedRows ( ) . forEach ( ( f ) => {
439+ const parsedData : CustomFile = f ;
430440 if ( parsedData . fileSource === 'local file' ) {
431441 if ( typeof parsedData . size === 'number' && parsedData . status === 'New' && parsedData . size > largeFileSize ) {
432442 selectedLargeFiles . push ( parsedData ) ;
@@ -451,7 +461,7 @@ const Content: React.FC<ContentProps> = ({
451461 } ) ;
452462 const selectAllNewFiles = filesData . filter ( ( f ) => f . status === 'New' ) ;
453463 const stringified = selectAllNewFiles . reduce ( ( accu , f ) => {
454- const key = JSON . stringify ( f ) ;
464+ const key = f . id ;
455465 // @ts -ignore
456466 accu [ key ] = true ;
457467 return accu ;
@@ -467,10 +477,10 @@ const Content: React.FC<ContentProps> = ({
467477 }
468478 }
469479 } else {
470- if ( selectedRows . length ) {
480+ if ( childRef . current ?. getSelectedRows ( ) . length ) {
471481 let selectedLargeFiles : CustomFile [ ] = [ ] ;
472- selectedRows . forEach ( ( f ) => {
473- const parsedData : CustomFile = JSON . parse ( f ) ;
482+ childRef . current ?. getSelectedRows ( ) . forEach ( ( f ) => {
483+ const parsedData : CustomFile = f ;
474484 if ( parsedData . fileSource === 'local file' ) {
475485 if ( typeof parsedData . size === 'number' && parsedData . status === 'New' && parsedData . size > largeFileSize ) {
476486 selectedLargeFiles . push ( parsedData ) ;
@@ -492,7 +502,7 @@ const Content: React.FC<ContentProps> = ({
492502 } ) ;
493503 const selectAllNewFiles = filesData . filter ( ( f ) => f . status === 'New' ) ;
494504 const stringified = selectAllNewFiles . reduce ( ( accu , f ) => {
495- const key = JSON . stringify ( f ) ;
505+ const key = f . id ;
496506 // @ts -ignore
497507 accu [ key ] = true ;
498508 return accu ;
@@ -555,7 +565,7 @@ const Content: React.FC<ContentProps> = ({
555565 { showDeletePopUp && (
556566 < DeletePopUp
557567 open = { showDeletePopUp }
558- no_of_files = { selectedfileslength }
568+ no_of_files = { selectedfileslength ?? 0 }
559569 deleteHandler = { ( delentities : boolean ) => handleDeleteFiles ( delentities ) }
560570 deleteCloseHandler = { ( ) => setshowDeletePopUp ( false ) }
561571 loading = { deleteLoading }
@@ -629,6 +639,7 @@ const Content: React.FC<ContentProps> = ({
629639 setOpenGraphView ( true ) ;
630640 setViewPoint ( 'tableView' ) ;
631641 } }
642+ ref = { childRef }
632643 > </ FileTable >
633644 < Flex
634645 className = { `${
@@ -688,7 +699,7 @@ const Content: React.FC<ContentProps> = ({
688699 label = 'Delete Files'
689700 >
690701 { buttonCaptions . deleteFiles }
691- { selectedfileslength > 0 && `(${ selectedfileslength } )` }
702+ { selectedfileslength != undefined && selectedfileslength > 0 && `(${ selectedfileslength } )` }
692703 </ ButtonWithToolTip >
693704 </ Flex >
694705 </ Flex >
@@ -698,6 +709,7 @@ const Content: React.FC<ContentProps> = ({
698709 open = { openGraphView }
699710 setGraphViewOpen = { setOpenGraphView }
700711 viewPoint = { viewPoint }
712+ selectedRows = { childRef . current ?. getSelectedRows ( ) }
701713 />
702714 </ >
703715 ) ;
0 commit comments