import { Box, Button, IconButton, Typography, useTheme, useMediaQuery, Skeleton, } from "@mui/material"; 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 } 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) } 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 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 getResultsList(editQuizId); console.log("Это данные с сервера", result); setResults(result); const resAnswer = await AnswerResultListEx(editQuizId) console.log("щтветы респондентов на экспорт в юз эффекте", resAnswer) } }; 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 = AnswerResultListEx(quizList.editQuizId) console.log("ответы респондентов на экспорт по клику", resAnswer) }} sx={{ width: "44px", height: "44px", borderRadius: "8px", border: "1px solid #7E2AEA", }} > { getResultsList(quizList.editQuizId); }} > {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)} /> setExportContactsModalOpen(false)} /> ); };