'use client' import { useTranslations } from 'next-intl'; import Link from 'next/link'; import { useRouter, usePathname, useSearchParams } from 'next/navigation'; import { useState } from 'react'; import FilePageViolationInfo from '@/app/ui/file-page/violation-table/file-page-violation-info'; import { useFileViolations } from '@/app/hooks/react-query/useFileViolations'; import { ViolationFileDetail } from '@/app/hooks/react-query/useFileViolations'; import DropDownList from '@/app/components/DropDownList'; import { IconArrowLeft, IconArrowRight } from '@/app/ui/icons/icons'; export default function FilePageViolationsList({ currentPage, fileId, status }: { currentPage: number, fileId: string, status: string | undefined }) { const t = useTranslations('Global'); const tStatus = useTranslations('Match-status'); const router = useRouter(); const pathname = usePathname(); const searchParams = useSearchParams(); const [selectedViolation, setSelectedViolation] = useState(null); const { data: fileViolations } = useFileViolations(fileId, currentPage, status); if (!fileViolations?.violations) { return null; } const handlePageChange = (page: number) => { const params = new URLSearchParams(searchParams); params.set('page', page.toString()); router.push(`${pathname}?${params.toString()}`, { scroll: false }); }; const handleStatusChange = (status: string) => { const params = new URLSearchParams(searchParams); if (status) { params.set('status', status); } else { params.delete('status'); } setSelectedViolation(null); params.set('page', '1'); router.push(`${pathname}?${params.toString()}`, { scroll: false }); }; const getPageNumbers = () => { const pages = []; const maxVisible = 5; const total = fileViolations.total_pages; let start = Math.max(1, currentPage - Math.floor(maxVisible / 2)); let end = Math.min(total, start + maxVisible - 1); if (end - start + 1 < maxVisible) { start = Math.max(1, end - maxVisible + 1); } for (let i = start; i <= end; i++) { pages.push(i); } return pages; }; function selectHandler(violation: ViolationFileDetail) { setSelectedViolation(violation); } return (

{t('all-file-violations')}

  • {t('all-statuses')}
  • {tStatus('NEW')}
  • {tStatus('SHOWED')}
  • {tStatus('LEGAL_IN_WORK')}
  • {tStatus('COMPLAINT_IN_WORK')}
  • {tStatus('COMPLAINT_AND_LEGAL_IN_WORK')}
  • {tStatus('AUTHORIZED_USE')}
  • {fileViolations.violations.map(item => { return (
    { selectHandler(item); }} >
    {t('source')}: {item.host}
    {item.status === "COMPLAINT_AND_LEGAL_IN_WORK" ? ( <> {tStatus('LEGAL_IN_WORK')} {tStatus('COMPLAINT_IN_WORK')} ) : ( {tStatus(item.status)} )}
    {t('open')}
    ); })}
    {/* general info for match */}
    {t('total-violations')}: {fileViolations.total_elements} | {t('page')} {fileViolations.current_page} {t('out-of')} {fileViolations.total_pages} {fileViolations.total_pages > 1 && (
    {getPageNumbers().map(pageNum => ( ))}
    )}
    ); }