Skip to content

Commit

Permalink
Fix review phase (#458)
Browse files Browse the repository at this point in the history
  • Loading branch information
chavda-bhavik authored Jan 18, 2024
2 parents 8ed6041 + 410117b commit a4be884
Show file tree
Hide file tree
Showing 6 changed files with 54 additions and 25 deletions.
12 changes: 11 additions & 1 deletion apps/api/src/app/review/review.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,17 @@ export class ReviewController {
});
if (!uploadData) throw new BadRequestException(APIMessages.UPLOAD_NOT_FOUND);

return await this.getFileInvalidData.execute(_uploadId, page, limit, uploadData.totalRecords, type);
return await this.getFileInvalidData.execute(
_uploadId,
page,
limit,
type === ReviewDataTypesEnum.VALID
? uploadData.validRecords
: type === ReviewDataTypesEnum.INVALID
? uploadData.invalidRecords
: uploadData.totalRecords,
type
);
}

@Post(':uploadId')
Expand Down
3 changes: 2 additions & 1 deletion apps/widget/src/components/Common/Table/Table.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import {
import Handsontable from 'handsontable';
import { HotItemSchema } from '@types';
import { IRecord } from '@impler/shared';
import { HANDSONTABLE_LICENSE_KEY } from '@config';
import { registerValidator, dateValidator } from 'handsontable/validators';

registerCellType(NumericCellType);
Expand Down Expand Up @@ -158,7 +159,7 @@ export const Table = forwardRef<HotTable, TableProps>(
columns={columnDefs}
colHeaders={headings}
afterRender={afterRender}
licenseKey="non-commercial-and-evaluation" // for non-commercial use only
licenseKey={HANDSONTABLE_LICENSE_KEY}
/>
);
}
Expand Down
7 changes: 5 additions & 2 deletions apps/widget/src/components/widget/Phases/Phase3/Phase3.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ export function Phase3(props: IPhase3Props) {
isDoReviewLoading,
isReviewDataLoading,
showAllDataValidModal,
isDeleteRecordLoading,
isConfirmReviewLoading,
setShowAllDataValidModal,
} = usePhase3({ onNext: onNextClick });
Expand All @@ -66,7 +67,9 @@ export function Phase3(props: IPhase3Props) {

return (
<>
<LoadingOverlay visible={isReviewDataLoading || isDoReviewLoading || isConfirmReviewLoading} />
<LoadingOverlay
visible={isReviewDataLoading || isDoReviewLoading || isConfirmReviewLoading || isDeleteRecordLoading}
/>

<Stack ref={tableWrapperRef} style={{ flexGrow: 1 }} spacing="xs" align="flex-start">
<SegmentedControl
Expand All @@ -84,7 +87,7 @@ export function Phase3(props: IPhase3Props) {
onValueChange={(row, prop, oldVal, newVal) => {
const name = String(prop).replace('record.', '');
let formattedNewVal = newVal;
if (typeof newVal === null) formattedNewVal = '';
if (typeof newVal === 'object' || newVal === null) formattedNewVal = undefined;

const currentData = [...reviewData];
if (currentData && oldVal != formattedNewVal) {
Expand Down
2 changes: 1 addition & 1 deletion apps/widget/src/components/widget/Widget.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { Modal } from '@ui/Modal';
import { variables } from '@config';
import { ParentWindow } from '@util';
import { IUpload } from '@impler/shared';
import { Phase0 } from './Phases/Phase0';
import { Phase1 } from './Phases/Phase1';
import { Phase2 } from './Phases/Phase2';
import { Phase3 } from './Phases/Phase3';
Expand All @@ -14,7 +15,6 @@ import { PromptModal } from './Phases/PromptModal';
import { Layout } from 'components/Common/Layout';
import { PhasesEum, PromptModalTypesEnum } from '@types';
import { logAmplitudeEvent, resetAmplitude } from '@amplitude';
import { Phase0 } from './Phases/Phase0';

export function Widget() {
const defaultDataCount = 0;
Expand Down
5 changes: 5 additions & 0 deletions apps/widget/src/config/app.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,9 @@ export const AMPLITUDE_ID = window._env_?.REACT_APP_AMPLITUDE_ID || process.env.

export const ENV: ENVTypesEnum = window._env_?.REACT_APP_ENVIRONMENT || process.env.REACT_APP_ENVIRONMENT || 'local';

export const HANDSONTABLE_LICENSE_KEY =
window._env_?.REACT_APP_HANDSONTABLE_LICENSE_KEY ||
process.env.REACT_APP_HANDSONTABLE_LICENSE_KEY ||
'non-commercial-and-evaluation';

export const CONTEXT_PATH = getContextPath(ImplerComponentEnum.WIDGET);
50 changes: 30 additions & 20 deletions apps/widget/src/hooks/Phase3/usePhase3.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,12 @@ export function usePhase3({ onNext }: IUsePhase3Props) {
api.getReviewData({ uploadId: uploadInfo._id, page: reviewPageNumber, type: reviewDataType }),
{
onSuccess(data) {
if (!data.data.length && page > 1) {
setTotalPages(totalPages - 1);
setPage(page - 1);

return;
}
setReviewData(data.data);
logAmplitudeEvent('VALIDATE', {
invalidRecords: data.totalRecords,
Expand All @@ -150,7 +156,7 @@ export function usePhase3({ onNext }: IUsePhase3Props) {
staleTime: 0,
onSuccess() {
fetchUploadInfo();
refetchReviewData([defaultPage, type]);
refetchReviewData([page, type]);
},
onError(error: IErrorObject) {
notifier.showError({ message: error.message, title: error.error });
Expand Down Expand Up @@ -183,25 +189,28 @@ export function usePhase3({ onNext }: IUsePhase3Props) {
const { mutate: updateRecord } = useMutation<unknown, IErrorObject, IRecord, [string]>([`update`], (record) =>
api.updateRecord(uploadInfo._id, record)
);
const { mutate: deleteRecord } = useMutation<unknown, IErrorObject, [number, boolean], [string]>(
[`delete`],
([index, isValid]) => api.deleteRecord(uploadInfo._id, index, isValid),
{
onSuccess(data, vars) {
const newReviewData = reviewData.filter((record) => record.index !== vars[0]);
const newUploadInfo = { ...uploadInfo };
newUploadInfo.totalRecords = newUploadInfo.totalRecords - 1;
if (!vars[1]) {
newUploadInfo.invalidRecords = newUploadInfo.invalidRecords - 1;
}
setUploadInfo(newUploadInfo);
setReviewData(newReviewData);
if (newReviewData.length === 0) {
refetchReviewData([defaultPage, type]);
}
},
}
);
const { mutate: deleteRecord, isLoading: isDeleteRecordLoading } = useMutation<
unknown,
IErrorObject,
[number, boolean],
[string]
>([`delete`], ([index, isValid]) => api.deleteRecord(uploadInfo._id, index, isValid), {
onSuccess(data, vars) {
const newReviewData = reviewData.filter((record) => record.index !== vars[0]);
const newUploadInfo = { ...uploadInfo };
newUploadInfo.totalRecords = newUploadInfo.totalRecords - 1;
if (!vars[1]) {
newUploadInfo.invalidRecords = newUploadInfo.invalidRecords - 1;
}
setUploadInfo(newUploadInfo);
setReviewData(newReviewData);
if (newReviewData.length === 0) {
refetchReviewData([getPrevPage(page), type]);
}
},
});

const getPrevPage = (currentPageNumber: number) => Math.max(currentPageNumber - 1, 1);

const onTypeChange = (newType: ReviewDataTypesEnum) => {
setType(newType);
Expand All @@ -226,6 +235,7 @@ export function usePhase3({ onNext }: IUsePhase3Props) {
isDoReviewLoading,
isReviewDataLoading,
showAllDataValidModal,
isDeleteRecordLoading,
isConfirmReviewLoading,
setShowAllDataValidModal,
reviewData: reviewData || [],
Expand Down

0 comments on commit a4be884

Please sign in to comment.