import { t } from '@lingui/macro'; import { Button, Input, Table, Tag, DatePicker, Form, Modal, Select, Space, Checkbox } from 'antd'; import { useState, useEffect } from 'react'; import { Layout } from 'antd'; import { EditOutlined, DownloadOutlined, CheckCircleOutlined, ClockCircleOutlined, ArrowLeftOutlined, ArrowRightOutlined, FullscreenOutlined, FullscreenExitOutlined, } from '@ant-design/icons'; import FileViewer from '@cyntler/react-doc-viewer'; import styled from 'styled-components'; const { Sider, Content } = Layout; import { baseURL } from "request/api"; import moment from 'moment'; const siderStyle: React.CSSProperties = { backgroundColor: '#fafafa', padding: 10, width: 200, }; const StyledTable = styled(Table)` & .sbt-table-cell { padding: 4px!important; } `; const StyledEditOutlined = styled(EditOutlined)` & { color: #6666ff; margin-left: 8px; } &:hover { color: #0000ff; } `; const columns = [ { title: 'Key', dataIndex: 'key', key: 'key', width: 200, }, { title: 'Accuracy', dataIndex: 'acc', key: 'acc', render: (text, record) => { return
100%
; }, width: 150, }, { title: 'Predicted', dataIndex: 'predicted', key: 'predicted', }, { title: 'Submitted', dataIndex: 'submitted', key: 'submitted', }, { title: 'Revised', dataIndex: 'revised', key: 'revised', render: (text, record) => { return (
{text}
) }, }, { title: 'Action', key: 'operation', fixed: 'right', width: 100, render: () => , }, ]; const FileCard = ({ file, isSelected, onClick }) => { const fileName = file["File Name"]; return (
{file["Doc Type"].toUpperCase()} {fileName ? fileName.substring(0, 25).replace("temp_", "") : fileName}
); }; const fetchAllRequests = async (filterDateRange, filterSubsidiaries, filterReviewState, filterIncludeTests, page = 1, page_size = 20) => { const startDate = (filterDateRange && filterDateRange[0]) ? filterDateRange[0].format('YYYY-MM-DD') : ''; const endDate = (filterDateRange && filterDateRange[1]) ? filterDateRange[1].format('YYYY-MM-DD') : ''; let filterStr = ""; filterStr += `page=${page}&page_size=${page_size}&`; if (filterSubsidiaries) { filterStr += `subsidiary=${filterSubsidiaries}&`; } if (filterReviewState) { filterStr += `is_reviewed=${filterReviewState}&`; } if (filterIncludeTests) { filterStr += `includes_tests=${filterIncludeTests}&`; } if (startDate && endDate) { filterStr += `start_date=${startDate}&end_date=${endDate}&`; } const token = localStorage.getItem('sbt-token') || ''; const data = await fetch(`${baseURL}/ctel/request_list/?${filterStr}`, { method: 'GET', headers: { "Authorization": `${JSON.parse(token)}` } }) .then(async (res) => { const data = await res.json(); return data; }); return data; }; const fetchRequest = async (id) => { const token = localStorage.getItem('sbt-token') || ''; const response = await fetch(`${baseURL}/ctel/request/${id}/`, { method: 'GET', headers: { "Authorization": `${JSON.parse(token)}` } }); return await (await response.json()).subscription_requests[0]; }; const ReviewPage = () => { const [fullscreen, setFullscreen] = useState(false); const [isModalOpen, setIsModalOpen] = useState(false); const [selectedFileId, setSelectedFileId] = useState(0); const selectFileByIndex = (index) => { setSelectedFileId(index); }; // Default date range: 1 month ago to today const [filterDateRange, setFilterDateRange] = useState([ moment().subtract(1, 'month'), moment(), ]); const [filterSubsidiaries, setFilterSubsidiaries] = useState('ALL'); const [filterReviewState, setFilterReviewState] = useState('all'); const [filterIncludeTests, setFilterIncludesTests] = useState('true'); const [requests, setRequests] = useState([]); const [currentRequest, setCurrentRequest] = useState(null); const [currentRequestIndex, setCurrentRequestIndex] = useState(1); const [hasNextRequest, setHasNextRequest] = useState(true); const [totalPages, setTotalPages] = useState(0); // purchase_date: "2024-01-20", // retailername: "Test Retailer", // sold_to_party: "Test Party", const dataSource = [ // { // key: "imei_number", // predicted: "352271450941944", // submitted: "352271450941944", // revised: "352271450941944", // }, ]; const predicted = (currentRequest && currentRequest["Reviewed Result"]) ? currentRequest["Reviewed Result"] : {}; const submitted = (currentRequest && currentRequest["Feedback Result"]) ? currentRequest["Feedback Result"] : {}; const revised = (currentRequest && currentRequest["Reviewed Result"]) ? currentRequest["Reviewed Result"] : {}; const keys = Object.keys(predicted); for (let i = 0; i < keys.length; i++) { let instance = {}; instance["key"] = keys[i]; instance["predicted"] = predicted[keys[i]]; instance["submitted"] = submitted[keys[i]]; instance["revised"] = revised[keys[i]]; dataSource.push(instance); } const gotoNextRequest = () => { const nextRequestIndex = currentRequestIndex + 1; setCurrentRequestIndex(nextRequestIndex); fetchAllRequests(filterDateRange, filterSubsidiaries, filterReviewState, filterIncludeTests, nextRequestIndex, 2).then((data) => { setRequests(data?.subscription_requests); setHasNextRequest(data?.subscription_requests.length > 1); setTotalPages(data?.page?.total_pages); const requestData = fetchRequest(data?.subscription_requests[0].RequestID); requestData.then(async (data) => { console.log(data) if (data) setCurrentRequest(data); }); }); }; const gotoPreviousRequest = () => { if (currentRequestIndex === 1) { return; } const previousRequestIndex = currentRequestIndex - 1; setCurrentRequestIndex(previousRequestIndex); fetchAllRequests(filterDateRange, filterSubsidiaries, filterReviewState, filterIncludeTests, previousRequestIndex, 2).then((data) => { setRequests(data?.subscription_requests); setHasNextRequest(data?.subscription_requests.length > 1); setTotalPages(data?.page?.total_pages); const requestData = fetchRequest(data?.subscription_requests[0].RequestID); requestData.then(async (data) => { console.log(data) if (data) setCurrentRequest(data); }); }); }; const reloadFilters = () => { setCurrentRequestIndex(1); fetchAllRequests(filterDateRange, filterSubsidiaries, filterReviewState, filterIncludeTests, currentRequestIndex, 2).then((data) => { setTotalPages(data?.page?.total_pages); setRequests(data?.subscription_requests); setHasNextRequest(data?.subscription_requests.length > 1); const firstRequest = fetchRequest(data?.subscription_requests[0].RequestID); firstRequest.then(async (data) => { console.log(firstRequest) if (data) setCurrentRequest(data); }); }); }; useEffect(() => { setCurrentRequestIndex(1); fetchAllRequests(filterDateRange, filterSubsidiaries, filterReviewState, filterIncludeTests, currentRequestIndex, 2).then((data) => { setTotalPages(data?.page?.total_pages); setRequests(data?.subscription_requests); setHasNextRequest(data?.subscription_requests.length > 1); const firstRequest = fetchRequest(data?.subscription_requests[0].RequestID); firstRequest.then(async (data) => { console.log(firstRequest) if (data) setCurrentRequest(data); }); }); }, []); const fileURL = currentRequest ? baseURL + currentRequest["Files"][selectedFileId]["File URL"].replace("http://be-ctel-sbt:9000/api", "") : "dummy.pdf"; return (
   Request ID: {currentRequest?.RequestID}

Files ({currentRequest?.Files?.length})

{currentRequest?.Files.map((file, index) => ( { setSelectedFileId(index); } } /> ))}
Go to } />

{totalPages ? ("Request: " + currentRequestIndex + "/" + totalPages) : "No Request. Adjust your search criteria to see more results."}

{/* } color="warning" style={{ padding: "4px 16px", marginLeft: 8 }}> Not Reviewed */} } color="success" style={{ padding: "4px 16px", marginLeft: 8 }}> Reviewed
{ setIsModalOpen(false); reloadFilters(); } } onCancel={ () => { setIsModalOpen(false); } } >
{ setFilterDateRange(value); }} style={{ width: 200 }} />