import { Box, Button, IconButton, Typography, useTheme, useMediaQuery, Skeleton, } from "@mui/material"; import moment from "moment" import HeaderFull from "@ui_kit/Header/HeaderFull"; import SectionWrapper from "@ui_kit/SectionWrapper"; import { FC, useEffect, useState } from "react"; import { FileExportIcon } from "./icons/FileExporIcon"; import { UpdateIcon } from "./icons/UpdateIcon"; import { Select } from "../../pages/Questions/Select"; import { CheckboxSelect } from "../../ui_kit/CheckboxSelect"; import { CardAnswer } from "./CardAnswer"; import { FilterIcon } from "./icons/FilterIcon"; import { FilterModal } from "@ui_kit/Modal/FilterModal/FilterModal"; import { ExportContactsModal } from "@ui_kit/Modal/ExportContactsModal"; import { AnswerResultListEx, getResultsList, obsolescenceResult, resultApi, } from "@api/result"; import { useObsolescenceIdResult, useResultStore } from "@root/results/store"; import { setResults } from "@root/results/actions"; import { quizApi } from "@api/quiz"; import { setQuizes } from "@root/quizes/actions"; import { useCurrentQuiz, useQuizes } from "@root/quizes/hooks"; import { useQuizStore } from "@root/quizes/store"; const options = [ { label: "Муром (1)", value: "option1" }, { label: "Москва (1)", value: "option2" }, ]; let lossDebouncer: null | ReturnType = null; let lossId: string[] = [] as string[]; const onLossNew = (id: string) => { //Если в массиве ещё нет такого id - добавляем if (!lossId.includes(id)) lossId.push(id); //Если таймер есть - сбрасываем if (typeof lossDebouncer === "number") clearTimeout(lossDebouncer); //Назначем новый таймер lossDebouncer = setTimeout(async () => { //стреляем на лишение новизны await obsolescenceResult(lossId); //сбрасываем массив lossId = []; }, 3000); }; const resetTime = (date:number) => { console.log(date) let a = Math.round(date / 86400) * 86400 - 97200 console.log(a) console.log(moment.unix(a).format("dddd, MMMM Do YYYY, h:mm:ss ")) return(moment.unix(a).format("dddd, MMMM Do YYYY, h:mm:ss ")) } export const QuizAnswersPage: FC = () => { const theme = useTheme(); const isTablet = useMediaQuery(theme.breakpoints.down(1000)); const isMobile = useMediaQuery(theme.breakpoints.down(600)); const [filterModalOpen, setFilterModalOpen] = useState(false); const [exportContactsModalOpen, setExportContactsModalOpen] = useState(false); const [filterNew, setFilterNew] = useState("Все заявки") const [filterDate, setFilterDate] = useState("За всё время") const quizList = useQuizStore(); const quiz = useCurrentQuiz(); const { editQuizId } = useQuizStore(); const { results } = useResultStore(); const { total_count } = useResultStore(); // const {idResultArray, addIdResult, clearIdResultArray} = useObsolescenceIdResult() useEffect(() => { const getData = async () => { if (editQuizId !== null) { const quizes = await quizApi.getList(); setQuizes(quizes); const result = await resultApi.getList(editQuizId); setResults(result); } }; getData(); }, []); const DateDefinition = (result: string) => { //определяем когда был получен результат - вчера, сегодня или число и месяц let restime = new Date(result); let timeCompleting = Date.parse(String(result)); const timeNow = Date.now(); let dayResult; if (timeNow - timeCompleting < 86400000) { dayResult = "Сегодня"; } if (172800000 > timeNow - timeCompleting > 86400000) { dayResult = "Вчера"; } else { dayResult = restime.toLocaleDateString(); } return dayResult; }; const TimeDefinition = (result: string) => { //достаём время let timeResult = new Date(result).toLocaleTimeString().slice(0, -3); return timeResult; }; if (quiz === undefined) return ( ); return ( {quiz.name} Ответы на квиз ({total_count}) { //setExportContactsModalOpen(true) const resAnswer = await AnswerResultListEx(quizList.editQuizId) console.log("ответы респондентов на экспорт по клику", resAnswer) const download = function () { // Creating a Blob for having a csv file format // and passing the data with type const blob = new Blob([resAnswer], { type: 'text/csv' }); // Creating an object for downloading url const url = window.URL.createObjectURL(blob) // Creating an anchor(a) tag of HTML const a = document.createElement('a') // Passing the blob downloading url a.setAttribute('href', url) // Setting the anchor tag attribute for downloading // and passing the download file name a.setAttribute('download', 'download.csv'); // Performing a download with click a.click() } download() }} sx={{ width: "44px", height: "44px", borderRadius: "8px", border: "1px solid #7E2AEA", }} > { const result = await resultApi.getList(editQuizId); console.log(result); setResults(result); }} > {isTablet && ( setFilterModalOpen(true)} sx={{ background: "#fff", width: "44px", height: "44px", borderRadius: "8px", border: "1px solid #7E2AEA", }} > )} {!isTablet && ( {/* */} )} {!isTablet && ( № заявки Дата Контакты )} {results.map((result) => { const dataResult = new Date(result.created_at); let dayResult = DateDefinition(result.created_at); let timeResult = TimeDefinition(result.created_at); return ( ); })} setFilterModalOpen(false)} filterNew = {filterNew} filterDate = {filterDate} setFilterNew = {setFilterNew} setFilterDate = {setFilterDate} /> setExportContactsModalOpen(false)} /> ); };