diff --git a/src/App.jsx b/src/App.jsx
index a1e9392..e43f0ed 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -20,6 +20,7 @@ import QueryExecutor from "./Components/QueryExecutor";
import RecordEditor from "./Components/RecordEditor";
import VerifyMarks from "./Components/VerifyMarks";
import QueryCardEditor from "./Components/QueryCardEditor";
+import AnomolyPartC from "./Components/AnomolyPartC";
function App() {
return (
@@ -76,6 +77,8 @@ function App() {
path="/anomoly/partA/booklet"
element={}
>
+ }>
+
>
diff --git a/src/Components/AnomolyPartC.jsx b/src/Components/AnomolyPartC.jsx
new file mode 100644
index 0000000..9ab21e2
--- /dev/null
+++ b/src/Components/AnomolyPartC.jsx
@@ -0,0 +1,332 @@
+import React, { useEffect, useState } from 'react';
+import { Box, Button, Card, CardContent, Typography, CircularProgress } from '@mui/material';
+import { Layout, theme, Pagination } from 'antd';
+import { useNavigate } from "react-router-dom";
+import ArrowBackIcon from "@mui/icons-material/ArrowBack";
+import HomeIcon from "@mui/icons-material/Home";
+import QueryExecutorCard from './QueryExecutorCard';
+import { updatePartCErrorList, updatePartCErrorData, updateSelectedError, updateSelectedJson } from '../redux/actions/actions';
+import { useSelector, useDispatch } from 'react-redux';
+import SystemNumberDialog from './SystemNumberDialog';
+
+const { Content, Header } = Layout;
+
+function AnomalyPartC() {
+ const [isLoading, setIsLoading] = useState(false);
+ const [isLoading2, setIsLoading2] = useState(false);
+ const [anomalyData, setAnomalyData] = useState(null);
+ const [evErrors, setEvErrors] = useState([]);
+ const [error, setError] = useState(null);
+ const [errorReason, setErrorReason] = useState(null);
+ const [currentPage, setCurrentPage] = useState(1);
+ const [totalPages, setTotalPages] = useState(1);
+ const [showSystemNoContainer, setShowSystemNoContainer] = useState(false);
+ const [selectedIndex, setSelectedIndex] = useState(null);
+
+ const {
+ token: { colorBgContainer, borderRadiusLG },
+ } = theme.useToken();
+ const navigate = useNavigate();
+ const dispatch = useDispatch();
+ const evErrorsList = useSelector((state) => state?.partCErrorList);
+ console.log("evErrorsList = ", evErrorsList)
+
+ const evErrorsData = useSelector((state) => state?.partCErrorData);
+ console.log("evErrorData: ", evErrorsData)
+
+ const reduxSystemNo = useSelector((state) => state?.systemNumber);
+ console.log("systemno: ", reduxSystemNo)
+
+ // const selectedError = useSelector((state) => state?.selectedError);
+ // console.log("selectedError: ", selectedError)
+
+ // const selectedErrorData = useSelector((state) => state?.selectedErrorData);
+ // console.log("selectedErrorData: ", selectedErrorData)
+
+ const selectedErrorJson = useSelector((state) => state?.selectedErrorJson);
+ console.log("selectedErrorJson: ", selectedErrorJson)
+
+
+
+ useEffect(() => {
+ if(!reduxSystemNo){
+ setShowSystemNoContainer(true)
+ }else{
+ if(evErrorsList.length > 0){
+ setAnomalyData(evErrorsList)
+ }else{
+ fetchAnomalyData();
+ }
+ }
+
+ }, [reduxSystemNo]);
+
+ useEffect(() => {
+ if(!reduxSystemNo){
+ setShowSystemNoContainer(true)
+ }else{
+ if( evErrorsData.length>0){
+ setEvErrors(evErrorsData)
+ }
+ if (error && errorReason) {
+ fetchAnomalyRecords(reduxSystemNo);
+ }
+ }
+
+ }, [error, errorReason]);
+
+ useEffect(() => {
+ if (evErrors && evErrors.length > 0) {
+ console.log("len = ", evErrors.length)
+ const tp = Math.ceil(evErrors.length / 10);
+ console.log("tp = ", tp)
+ setTotalPages(tp);
+ }
+ }, [evErrors]);
+
+ const updateSystemReservationStatus = async (systemRecords) => {
+ const payload = {
+ systemRecords,
+ sysNo:reduxSystemNo
+ };
+ try {
+ fetch(
+ `${
+ import.meta.env.VITE_REACT_APP_BACKEND_URL
+ }/updateSystemReservationStatusPartC`,
+ {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify(payload),
+ }
+ )
+ .then((response) => response.json())
+ .then((responseData) => {
+ console.log("response from updation : ", responseData);
+ });
+ } catch (error) {
+ throw new Error("Error in update system records : ", systemRecords);
+ }
+ };
+
+ const fetchAnomalyData = async () => {
+ setIsLoading(true);
+ try {
+ const response = await fetch(
+ `${import.meta.env.VITE_REACT_APP_BACKEND_URL}/getpartcEv`,
+ {
+ method: "GET",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ }
+ );
+ const responseData = await response.json();
+ setAnomalyData(responseData.data);
+ dispatch(updatePartCErrorList(responseData.data))
+
+ } catch (error) {
+ console.error("Error fetching data: ", error);
+ } finally {
+ setIsLoading(false);
+ }
+ };
+
+ const fetchAnomalyRecords = async (reduxSystemNo) => {
+ setIsLoading(true);
+ try {
+ const response = await fetch(
+ `${import.meta.env.VITE_REACT_APP_BACKEND_URL}/getpartcEvErrors`,
+ {
+ method: "POST",
+ body: JSON.stringify({
+ error,
+ error_reason: errorReason,
+ sysno: reduxSystemNo
+ }),
+ headers: {
+ "Content-Type": "application/json",
+ },
+ }
+ );
+ const responseData = await response.json();
+ var systemRecords = responseData?.data
+ console.log("System record ====== ",responseData.systemRecord)
+ if(!responseData.systemRecord){
+ systemRecords = getRecordsBySystemId(
+ responseData?.data,
+ reduxSystemNo
+ );
+ }
+ updateSystemReservationStatus(systemRecords);
+ console.log("System records : ", systemRecords);
+
+ setEvErrors(systemRecords);
+ dispatch(updatePartCErrorData(systemRecords))
+ } catch (error) {
+ console.error("Error fetching data: ", error);
+ } finally {
+ setIsLoading(false);
+ }
+ };
+
+ function getRecordsBySystemId(records, systemId) {
+ const new_data = [];
+ for (var i = 0; i < records.length; i++) {
+ var count = i % 5;
+ if (count === systemId - 1) {
+ new_data.push(records[i]);
+ }
+ }
+ return new_data;
+ }
+
+ const handleClick = (error, errorReason, index) => {
+ setError(error);
+ setErrorReason(errorReason);
+ setCurrentPage(1);
+ setSelectedIndex(index);
+ let tmp = {}
+ tmp["error"] = error
+ tmp["error_reason"] = errorReason
+ console.log("tmp = ", tmp)
+ dispatch(updateSelectedJson(tmp))
+ };
+
+ const handlePageChange = (page) => {
+ setIsLoading2(true);
+ setCurrentPage(page);
+ };
+
+ useEffect(() => {
+ if (currentPage > 0) {
+ setIsLoading2(false);
+ }
+ }, [currentPage, evErrors]);
+
+ const getCurrentPageData = () => {
+ const startIndex = (currentPage - 1) * 10;
+ const endIndex = startIndex + 10;
+ return evErrors.slice(startIndex, endIndex);
+ };
+
+ const handleSystemNoChange = () => {
+ console.log("System No Change is called");
+ setShowSystemNoContainer(true);
+ dispatch(updateSelectedJson({}))
+ // dispatch(updatePartCErrorList([]))
+ dispatch(updatePartCErrorData([]))
+
+ };
+
+ return (
+
+
+
+
+
+
+ {reduxSystemNo && (
+
+ System No : {reduxSystemNo}
+
+ )}
+
+
+
+
+
+ {isLoading ? (
+
+
+
+ ) : (
+ <>
+ {anomalyData && anomalyData.map((item, index) => (
+ handleClick(item.error, item.error_reason, index)}
+ key={index}
+ style={{ margin: '16px', borderRadius: borderRadiusLG,
+ alignItems: 'flex-start', textAlign: 'start', cursor: 'pointer',
+ color:"white",
+ backgroundColor: selectedIndex === index ? '#3f51b5' : '#537895',
+ backgroundImage: selectedIndex === index ?
+ 'linear-gradient(315deg, #70a1ff 0%, #c2c0c0 74%);' :
+ 'linear-gradient(315deg, #537895 0%, #09203f 74%)'
+ }}
+ >
+
+ {item.error && (
+
+ Code: {item.error}
+
+ )}
+ {item['count(*)'] && (
+
+ Count: {item['count(*)']}
+
+ )}
+ {item.error_reason && (
+
+ Reason: {item.error_reason}
+
+ )}
+
+
+ ))}
+ {evErrors && evErrors.length > 0 &&(
+ <>
+
+
+
+ {isLoading2 ? (
+
+
+
+ ) : (
+ getCurrentPageData().map((data, index) => (
+
+ ))
+ )}
+ >
+ )}
+ >
+ )}
+
+ {showSystemNoContainer && (
+
+ )}
+
+
+ );
+}
+
+export default AnomalyPartC;
diff --git a/src/Components/Home.jsx b/src/Components/Home.jsx
index 9fafbe7..bc3c1ea 100644
--- a/src/Components/Home.jsx
+++ b/src/Components/Home.jsx
@@ -20,6 +20,10 @@ const Home = () => {
title: "Part A OCR Anomoly - Old Dummy",
url: "/anomoly/partA?type=old",
},
+ {
+ title: "Part C",
+ url: "/anomoly/partC",
+ },
// {
// title:"Verification",
// url:"/verification"
diff --git a/src/Components/QueryExecutorCard.jsx b/src/Components/QueryExecutorCard.jsx
index 41fa43e..3808a8d 100644
--- a/src/Components/QueryExecutorCard.jsx
+++ b/src/Components/QueryExecutorCard.jsx
@@ -51,7 +51,7 @@ const QueryExecutorCard = ({ data, s3_image_column, query }) => {
const responseData = await response.json();
if (responseData.status === "success") {
const updatedData = { ...dataValue, is_cover: 1 };
- console.log("Data ===== ", updatedData);
+ // console.log("Data ===== ", updatedData);
setDataValue(updatedData);
console.log("Updation successfull ....");
toast.success("Record Marked As Ev !...");
@@ -63,6 +63,38 @@ const QueryExecutorCard = ({ data, s3_image_column, query }) => {
}
};
+ const mark_as_dummy = async () => {
+ const payload = {
+ data,
+ };
+ try {
+ setIsLoading(true);
+ const response = await fetch(
+ `${import.meta.env.VITE_REACT_APP_BACKEND_URL}/partcDummyMarking`,
+ {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify(payload),
+ }
+ );
+ setIsLoading(false);
+ const responseData = await response.json();
+ if (responseData.status === "success") {
+ console.log("Updation successfull ....");
+ const updatedData = { ...dataValue, type: 102 };
+ // console.log("Data ===== ", updatedData);
+ setDataValue(updatedData);
+ toast.success("Record Marked as Dummy ! ....");
+ } else {
+ throw new Error(responseData?.message);
+ }
+ } catch (error) {
+ throw new Error(error);
+ }
+ }
+
const mark_as_backpage = async () => {
const payload = {
data,
@@ -84,7 +116,7 @@ const QueryExecutorCard = ({ data, s3_image_column, query }) => {
if (responseData.status === "success") {
console.log("Updation successfull ....");
const updatedData = { ...dataValue, is_backpage: 1 };
- console.log("Data ===== ", updatedData);
+ // console.log("Data ===== ", updatedData);
setDataValue(updatedData);
toast.success("Record Marked as Backpage ! ....");
} else {
@@ -160,6 +192,14 @@ const QueryExecutorCard = ({ data, s3_image_column, query }) => {
>
Mark As EV
+
>
)}