Skip to content

Commit d0e49dd

Browse files
code simplification and warning fix
1 parent cb58440 commit d0e49dd

File tree

5 files changed

+51
-68
lines changed

5 files changed

+51
-68
lines changed

frontend/src/components/BreakDownPopOver.tsx

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import CustomPopOver from './UI/CustomPopOver';
2-
import { IconButton } from '@neo4j-ndl/react';
32
import { InformationCircleIconOutline } from '@neo4j-ndl/react/icons';
43
import { CustomFileBase } from '../types';
54
import { useCredentials } from '../context/UserCredentials';
@@ -8,13 +7,7 @@ export default function BreakDownPopOver({ file, isNodeCount = true }: { file: C
87
const { isGdsActive } = useCredentials();
98

109
return (
11-
<CustomPopOver
12-
Trigger={
13-
<IconButton isClean ariaLabel='infoicon'>
14-
<InformationCircleIconOutline className='n-size-token-3' />
15-
</IconButton>
16-
}
17-
>
10+
<CustomPopOver Trigger={<InformationCircleIconOutline className='n-size-token-6' />}>
1811
{isNodeCount ? (
1912
<ul className='p-2'>
2013
<li>Chunk Nodes: {file.chunkNodeCount}</li>

frontend/src/components/Content.tsx

Lines changed: 28 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,15 @@ import { Button, Typography, Flex, StatusIndicator, useMediaQuery } from '@neo4j
44
import { useCredentials } from '../context/UserCredentials';
55
import { useFileContext } from '../context/UsersFiles';
66
import { extractAPI } from '../utils/FileAPI';
7-
import { BannerAlertProps, ChildRef, ContentProps, CustomFile, OptionType, UserCredentials, chunkdata } from '../types';
7+
import {
8+
BannerAlertProps,
9+
ContentProps,
10+
CustomFile,
11+
OptionType,
12+
UserCredentials,
13+
chunkdata,
14+
FileTableHandle,
15+
} from '../types';
816
import deleteAPI from '../services/DeleteFiles';
917
import { postProcessing } from '../services/PostProcessing';
1018
import { triggerStatusUpdateAPI } from '../services/ServerSideStatusUpdateAPI';
@@ -35,7 +43,7 @@ import { useMessageContext } from '../context/UserMessages';
3543
import PostProcessingToast from './Popups/GraphEnhancementDialog/PostProcessingCheckList/PostProcessingToast';
3644
import { getChunkText } from '../services/getChunkText';
3745
import ChunkPopUp from './Popups/ChunkPopUp';
38-
import { isExpired } from '../utils/Utils';
46+
import { isExpired, isFileReadyToProcess } from '../utils/Utils';
3947

4048
const ConfirmationDialog = lazy(() => import('./Popups/LargeFilePopUp/ConfirmationDialog'));
4149

@@ -106,7 +114,7 @@ const Content: React.FC<ContentProps> = ({
106114
showErrorToast(`${fileName} Failed to process`);
107115
}
108116
);
109-
const childRef = useRef<ChildRef>(null);
117+
const childRef = useRef<FileTableHandle>(null);
110118

111119
const incrementPage = async () => {
112120
setCurrentPage((prev) => prev + 1);
@@ -665,74 +673,38 @@ const Content: React.FC<ContentProps> = ({
665673
const onClickHandler = () => {
666674
const selectedRows = childRef.current?.getSelectedRows();
667675
if (selectedRows?.length) {
668-
const selectedLargeFiles: CustomFile[] = [];
669-
const expiredFiles: CustomFile[] = [];
670-
for (let index = 0; index < selectedRows.length; index++) {
671-
const parsedData: CustomFile = selectedRows[index];
672-
if (
673-
parsedData.fileSource === 'local file' &&
674-
typeof parsedData.size === 'number' &&
675-
(parsedData.status === 'New' || parsedData.status == 'Ready to Reprocess') &&
676-
parsedData.size > largeFileSize
677-
) {
678-
selectedLargeFiles.push(parsedData);
679-
}
680-
if (
681-
parsedData.fileSource === 'local file' &&
682-
(parsedData.status === 'New' || parsedData.status == 'Ready to Reprocess') &&
683-
isExpired(parsedData?.createdAt as Date)
684-
) {
685-
expiredFiles.push(parsedData);
686-
}
687-
}
688-
if (selectedLargeFiles.length) {
676+
const expiredFilesExists = selectedRows.some(
677+
(c) => isFileReadyToProcess(c, true) && isExpired(c?.createdAt as Date)
678+
);
679+
const largeFileExists = selectedRows.some(
680+
(c) => isFileReadyToProcess(c, true) && typeof c.size === 'number' && c.size > largeFileSize
681+
);
682+
if (expiredFilesExists) {
689683
setshowConfirmationModal(true);
690-
} else if (expiredFiles.length && isGCSActive) {
684+
} else if (largeFileExists && isGCSActive) {
691685
setshowExpirationModal(true);
692686
} else {
693-
handleGenerateGraph(selectedRows.filter((f) => f.status === 'New' || f.status === 'Ready to Reprocess'));
687+
handleGenerateGraph(selectedRows.filter((f) => isFileReadyToProcess(f, false)));
694688
}
695689
} else if (filesData.length) {
696-
const largefiles = filesData.filter((f) => {
697-
if (
698-
typeof f.size === 'number' &&
699-
(f.status === 'New' || f.status == 'Ready to Reprocess') &&
700-
f.size > largeFileSize
701-
) {
702-
return true;
703-
}
704-
return false;
705-
});
706-
const expiredFiles = filesData.filter((f) => {
707-
console.log(
708-
f.fileSource === 'local file'
709-
? { isExpired: isExpired(f?.createdAt as Date), name: f.name, createdAt: f.createdAt }
710-
: 'Not Local File'
711-
);
712-
if (
713-
f.fileSource === 'local file' &&
714-
(f.status === 'New' || f.status == 'Ready to Reprocess') &&
715-
isExpired(f?.createdAt as Date)
716-
) {
717-
return true;
718-
}
719-
return false;
720-
});
721-
const selectAllNewFiles = filesData.filter((f) => f.status === 'New' || f.status === 'Ready to Reprocess');
690+
const expiredFileExists = filesData.some((c) => isFileReadyToProcess(c, true) && isExpired(c.createdAt as Date));
691+
const largeFileExists = filesData.some(
692+
(c) => isFileReadyToProcess(c, true) && typeof c.size === 'number' && c.size > largeFileSize
693+
);
694+
const selectAllNewFiles = filesData.filter((f) => isFileReadyToProcess(f, false));
722695
const stringified = selectAllNewFiles.reduce((accu, f) => {
723696
const key = f.id;
724697
// @ts-ignore
725698
accu[key] = true;
726699
return accu;
727700
}, {});
728-
console.log(expiredFiles);
729701
setRowSelection(stringified);
730-
if (largefiles.length) {
702+
if (largeFileExists) {
731703
setshowConfirmationModal(true);
732-
} else if (expiredFiles.length && isGCSActive) {
704+
} else if (expiredFileExists && isGCSActive) {
733705
setshowExpirationModal(true);
734706
} else {
735-
handleGenerateGraph(filesData.filter((f) => f.status === 'New' || f.status === 'Ready to Reprocess'));
707+
handleGenerateGraph(filesData.filter((f) => isFileReadyToProcess(f, false)));
736708
}
737709
}
738710
};

frontend/src/components/FileTable.tsx

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,16 @@ import {
1111
Checkbox,
1212
useMediaQuery,
1313
} from '@neo4j-ndl/react';
14-
import { forwardRef, useContext, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
14+
import {
15+
forwardRef,
16+
useContext,
17+
useEffect,
18+
useImperativeHandle,
19+
useMemo,
20+
useRef,
21+
useState,
22+
ForwardRefRenderFunction,
23+
} from 'react';
1524
import {
1625
useReactTable,
1726
getCoreRowModel,
@@ -59,7 +68,7 @@ import BreakDownPopOver from './BreakDownPopOver';
5968

6069
let onlyfortheFirstRender = true;
6170

62-
const FileTable = forwardRef<ChildRef, FileTableProps>((props, ref) => {
71+
const FileTable: ForwardRefRenderFunction<ChildRef, FileTableProps> = (props, ref) => {
6372
const { connectionStatus, setConnectionStatus, onInspect, onRetry, onChunkView } = props;
6473
const { filesData, setFilesData, model, rowSelection, setRowSelection, setSelectedRows, setProcessedCount, queue } =
6574
useFileContext();
@@ -1035,6 +1044,6 @@ const FileTable = forwardRef<ChildRef, FileTableProps>((props, ref) => {
10351044
) : null}
10361045
</>
10371046
);
1038-
});
1047+
};
10391048

1040-
export default FileTable;
1049+
export default forwardRef(FileTable);

frontend/src/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import type { Node, Relationship } from '@neo4j-nvl/base';
66
import { NonOAuthError } from '@react-oauth/google';
77
import { BannerType } from '@neo4j-ndl/react';
88
import Queue from './utils/Queue';
9+
import FileTable from './components/FileTable';
910

1011
export interface CustomFileBase extends Partial<globalThis.File> {
1112
processingTotalTime: number | string;
@@ -933,3 +934,4 @@ export interface filedate {
933934
_Time__tzinfo: null;
934935
};
935936
}
937+
export type FileTableHandle = React.ElementRef<typeof FileTable>;

frontend/src/utils/Utils.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -538,3 +538,10 @@ export function isExpired(itemdate: Date) {
538538
const daysdifference = timedifference / (1000 * 3600 * 24);
539539
return daysdifference > EXPIRATION_DAYS;
540540
}
541+
542+
export function isFileReadyToProcess(file: CustomFile, withLocalCheck: boolean) {
543+
if (withLocalCheck) {
544+
return file.fileSource === 'local file' && (file.status === 'New' || file.status == 'Ready to Reprocess');
545+
}
546+
return file.status === 'New' || file.status == 'Ready to Reprocess';
547+
}

0 commit comments

Comments
 (0)