import { ChangeEventHandler, FC, useCallback, useEffect, useMemo, useState } from "react"; import { useSearchParams } from "react-router-dom"; import Select from "react-select"; import { useActivateDataset, useCreateDatasetsDraft, useDeleteDataset, useDeleteFileFromDataset, useGetDatasets, } from "@/api/documents/hooks"; import Button from "@/components/generics/button/Button"; import Modal from "@/components/generics/modal/Modal"; import { DocsList } from "@/components/views/documents/docsList/DocsList"; import { CreateDatasetForm } from "@/components/views/documents/createDatasetForm/CreateDatasetForm"; import { AddDocumentForm } from "@/components/views/documents/addDocuimentForm/AddDocumentForm"; import "./Logs.scss"; import { downloadDocument } from "@/api/documents/documentsApi"; import Input from "@/components/generics/input/Input"; import Spinner from "@/components/generics/spinner/Spinner"; import Tag from "@/components/generics/tag/Tag"; import Tooltip from "@/components/generics/tooltip/Tooltip"; import { Pagination } from "@/components/views/pagination/Pagination"; import { SortDirectionsTooltipMap, StatusMap } from "@/shared/constants"; import { GoSearch, GoDownload, GoTrash, GoTriangleUp, GoTriangleDown } from "react-icons/go"; import { useGetLogs } from "@/api/logs/hooks"; import { GetLogsRequestParams, LogItemType, SortDirections } from "@/api/logs/types"; import Documents from "../documentsPage/Documents"; import LogDetailsModal from "./LogDetailsModal"; import DatePicker from "react-datepicker"; import "react-datepicker/dist/react-datepicker.css"; import axios from 'axios'; import { downloadLogsAsExcel } from "@/api/logs/logsApi"; const Logs: FC = () => { const [page, setPage] = useState(0); const [pageSize, setPageSize] = useState(50); const [userInput, setUserInput] = useState(undefined); const [user, setUser] = useState(undefined); const [chatIdFilter, setChatIdFilter] = useState(undefined); const [sort, setSort] = useState(undefined); const [dateTo, setDateTo] = useState(undefined); const [dateFrom, setDateFrom] = useState(undefined); const { data: logsData, isLoading } = useGetLogs({ page, page_size: pageSize, user_name: user, sort, date_to: dateTo, date_from: dateFrom, chat_id: chatIdFilter }); const [isModalOpen, setIsModalOpen] = useState(false); const [selectedLog, setSelectedLog] = useState(null); const [searchParams, setSearchParams] = useSearchParams(); // const handleFilterList = () => { // const localStartDate = dateFrom ? new Date(dateFrom) : undefined; // localStartDate?.setHours(0, 0, 0, 0); // const localEndDate = dateTo ? new Date(dateTo) : undefined; // localEndDate?.setHours(23, 59, 59, 999); // setDateFrom(localStartDate ? new Date(localStartDate) : undefined); // setDateTo(localEndDate ? new Date(localEndDate) : undefined); // setPage(0); // }; const openDetailsModal = (log: LogItemType) => { setSelectedLog(log) setIsModalOpen(true); }; const closeModal = () => { setSelectedLog(null); setIsModalOpen(false); }; const toggleSort = (field: string) => { setSort((prevSort) => { if (prevSort?.length && prevSort?.length > 0) { const newSort = [...prevSort]; const existingFieldIndex = prevSort?.findIndex((e) => e.field === field); const currentDirection = prevSort[existingFieldIndex]?.direction; if (existingFieldIndex != null && existingFieldIndex !== -1) { const newSort = [...prevSort]; if (currentDirection === SortDirections.asc) { newSort[existingFieldIndex] = { field, direction: SortDirections.desc }; return newSort; } else if (currentDirection === SortDirections.desc) { newSort.splice(existingFieldIndex, 1); return newSort; } } else { newSort.push({ field, direction: SortDirections.asc }); } return newSort; } else { return [{ field, direction: SortDirections.asc }]; } }); }; const sorting = (field: string) => { const currentDirection = sort?.find((e) => e.field === field)?.direction; return (