diff --git a/cope2n-fe/src/pages/reviews2/FileCard.tsx b/cope2n-fe/src/pages/reviews2/FileCard.tsx
index 241989a..2fd0130 100644
--- a/cope2n-fe/src/pages/reviews2/FileCard.tsx
+++ b/cope2n-fe/src/pages/reviews2/FileCard.tsx
@@ -10,8 +10,9 @@ const FileCard = ({ file, isSelected, onClick, setIsReasonModalOpen }) => {
border: '1px solid #ccc',
backgroundColor: isSelected ? '#d4ecff' : '#fff',
padding: '4px 8px',
- margin: '0 0 4px',
+ margin: '0 8px 4px',
cursor: 'pointer',
+ display: 'flex',
}}
onClick={onClick}
>
@@ -41,35 +42,18 @@ const FileCard = ({ file, isSelected, onClick, setIsReasonModalOpen }) => {
{fileName ? fileName.substring(0, 25).replace('temp_', '') : fileName}
-
{
+ const downloadUrl = file['File URL'];
+ window.open(downloadUrl, '_blank');
}}
>
-
-
-
+
+
+
);
};
diff --git a/cope2n-fe/src/pages/reviews2/const.ts b/cope2n-fe/src/pages/reviews2/const.ts
index e4b1f1d..0122ac5 100644
--- a/cope2n-fe/src/pages/reviews2/const.ts
+++ b/cope2n-fe/src/pages/reviews2/const.ts
@@ -1,4 +1,4 @@
-import { t } from "@lingui/macro";
+import { t } from '@lingui/macro';
export const counter_measure_map = {
invalid_image: 'Remove this image from the evaluation report',
@@ -23,9 +23,9 @@ export const REASON_BAD_QUALITY = [
{ value: 'wrong_feedback', label: t`Wrong Feedback` },
{ value: 'ocr_cannot_extract', label: t`Ocr cannot extract` },
{ value: 'other', label: t`Other` },
-]
+];
-export const SOLUTION_BAD_QUALITY =[
+export const SOLUTION_BAD_QUALITY = [
{
value: 'Remove this image from the evaluation report',
label: t`Remove this image from the evaluation report`,
@@ -36,7 +36,7 @@ export const SOLUTION_BAD_QUALITY =[
label: t`Update revised result and re-calculate accuracy`,
},
{ value: 'other', label: t`Other` },
-]
+];
export const SUBSIDIARIES = [
{ value: 'SEAO', label: 'SEAO' },
@@ -46,4 +46,25 @@ export const SUBSIDIARIES = [
{ value: 'SEPCO', label: 'SEPCO' },
{ value: 'TSE', label: 'TSE' },
{ value: 'SEIN', label: 'SEIN' },
-]
\ No newline at end of file
+];
+
+export const SOURCE_KEYS = [
+ 'retailername',
+ 'sold_to_party',
+ 'invoice_no',
+ 'purchase_date',
+ 'imei_number',
+];
+
+export const FEEDBACK_RESULT = 'Feedback Result';
+export const FEEDBACK_ACCURACY = 'Feedback Accuracy';
+export const PREDICTED_RESULT = 'Predicted Result';
+export const REVIEWED_ACCURACY = 'Reviewed Accuracy';
+export const REVIEWED_RESULT = 'Reviewed Result';
+export const SOURCE_OBJECT_NAMES = [
+ FEEDBACK_RESULT,
+ FEEDBACK_ACCURACY,
+ PREDICTED_RESULT,
+ REVIEWED_ACCURACY,
+ REVIEWED_RESULT
+];
diff --git a/cope2n-fe/src/pages/reviews2/index.tsx b/cope2n-fe/src/pages/reviews2/index.tsx
index 46a11bf..2310db6 100644
--- a/cope2n-fe/src/pages/reviews2/index.tsx
+++ b/cope2n-fe/src/pages/reviews2/index.tsx
@@ -35,8 +35,14 @@ import { normalizeData } from 'utils/field-value-process';
import { fetchAllRequests, fetchRequest } from './api';
import {
counter_measure_map,
+ FEEDBACK_ACCURACY,
+ FEEDBACK_RESULT,
+ PREDICTED_RESULT,
REASON_BAD_QUALITY,
+ REVIEWED_RESULT,
SOLUTION_BAD_QUALITY,
+ SOURCE_KEYS,
+ SOURCE_OBJECT_NAMES,
SUBSIDIARIES,
} from './const';
import FileCard from './FileCard';
@@ -48,6 +54,7 @@ const ReviewPage = () => {
const [isReasonModalOpen, setIsReasonModalOpen] = useState(false);
const [selectedFileId, setSelectedFileId] = useState(0);
const [selectedFileData, setSelectedFileData] = useState(null);
+ const [selectedFileDataSource, setSelectedFileDataSource] = useState({});
const [selectedFileName, setSelectedFileName] = useState(null);
// Default date range: 1 month ago to today
@@ -78,6 +85,18 @@ const ReviewPage = () => {
}
}, [reason]);
+ const updateSelectedFileDataSource = (fileContent) => {
+ let tempData = {};
+ SOURCE_KEYS.forEach((k) => {
+ tempData[k] = {};
+ SOURCE_OBJECT_NAMES.forEach((name) => {
+ tempData[k][name] = fileContent[name][k];
+ });
+ });
+
+ setSelectedFileDataSource(tempData);
+ };
+
const setAndLoadSelectedFile = async (requestData, index) => {
setSelectedFileId(index);
if (!requestData['Files'][index]) {
@@ -87,6 +106,8 @@ const ReviewPage = () => {
}
const fileName = requestData['Files'][index]['File Name'];
const fileURL = requestData['Files'][index]['File URL'];
+ updateSelectedFileDataSource(requestData['Files'][index]);
+
const response = await fetch(fileURL);
if (response.status === 200) {
setSelectedFileName(fileName);
@@ -99,7 +120,6 @@ const ReviewPage = () => {
}
};
- console.log(dataSource);
const loadCurrentRequest = (requestIndex) => {
setLoading(true);
setImageLoading(true);
@@ -122,7 +142,6 @@ const ReviewPage = () => {
);
requestData
.then(async (data) => {
- console.log('🚀 ~ .then ~ data:', data);
if (data) setCurrentRequest(data);
const predicted =
data && data['Predicted Result'] ? data['Predicted Result'] : {};
@@ -308,6 +327,26 @@ const ReviewPage = () => {
const [lightBox, setLightBox] = useState(false);
+ const updateRevised = (fieldName) => {
+ console.log('🚀 ~ updateRevised ~ fieldName:', fieldName);
+ // const tempData = Object.assign({}, selectedFileDataSource);
+ // tempData[fieldName][REVIEWED_RESULT] = tempData[fieldName][FEEDBACK_RESULT];
+ // console.log('🚀 ~ updateRevised ~ tempData:', tempData);
+ // updateSelectedFileDataSource(tempData);
+
+ setSelectedFileDataSource((prevData) => {
+ prevData[fieldName][REVIEWED_RESULT] =
+ prevData[fieldName][FEEDBACK_RESULT];
+ return {
+ ...prevData,
+ };
+ });
+ };
+
+ // useEffect(() => {
+
+ // }, [selectedFileDataSource]);
+ console.log('update data:', selectedFileDataSource);
return (
{
margin: '0 0 4px 0',
}}
>
-
-
*/}
{
display: 'flex',
}}
>
-
- {totalRequests > 0 && (
-
- )}
-
{
display: 'flex',
flexDirection: 'column',
position: 'relative',
- padding: '0 16px',
+ padding: '8px 16px',
// overflow: 'auto'
}}
>
+ {totalRequests > 0 && (
+
+
+ Files ({currentRequest?.Files?.length})
+
+ {currentRequest?.Files.map((file, index) => (
+
{
+ setAndLoadSelectedFile(currentRequest, index);
+ setImageLoading(true);
+ }}
+ setIsReasonModalOpen={setIsReasonModalOpen}
+ />
+ ))}
+
+ )}
@@ -685,11 +666,18 @@ const ReviewPage = () => {
/>
+
+ Save
+
{
flexDirection: 'column',
}}
>
+
+
+ {
+ setIsModalOpen(true);
+ }}
+ >
+ Filters
+
+
- {dataSource?.map((data) => {
+ {SOURCE_KEYS?.map((data) => {
+ let shouldRevised = false;
+ try {
+ if (
+ selectedFileDataSource[data]?.[FEEDBACK_ACCURACY].length > 0
+ ) {
+ shouldRevised =
+ selectedFileDataSource[data][FEEDBACK_ACCURACY][0] < 1;
+ }
+ } catch (error) {}
return (
);
})}
+
+ {/*
+ */}
+
{t`Bad image reason:`}
+
+
+ {reason === 'other' && (
+ {
+ setOtherReason(e.target.value);
+ }}
+ />
+ )}
+
+
{t`Solution:`}
+
+
+ {solution === 'other' && (
+ {
+ setOtherSolution(e.target.value);
+ }}
+ />
+ )}
+
-
- Save
-