функция удаления новизны за 3 сек

This commit is contained in:
Nastya 2024-02-09 18:49:24 +03:00
parent e910c708c6
commit 90dc7fef08
3 changed files with 51 additions and 41 deletions

@ -27,7 +27,7 @@ export const deleteResult = async (resultId: number) => {
} }
}; };
export const obsolescenceResult = async (idResultArray: []) => { export const obsolescenceResult = async (idResultArray: string[]) => {
try { try {
const response = await makeRequest<unknown, unknown>({ const response = await makeRequest<unknown, unknown>({
url: process.env.REACT_APP_DOMAIN + `/squiz/result/seen`, url: process.env.REACT_APP_DOMAIN + `/squiz/result/seen`,

@ -29,9 +29,10 @@ interface Props {
name?: string; name?: string;
phone?: string; phone?: string;
email?: string; email?: string;
onLossNew: (id:string) => void
} }
export const CardAnswer: FC = ({ export const CardAnswer = ({
name, name,
phone, phone,
email, email,
@ -39,24 +40,17 @@ export const CardAnswer: FC = ({
idResult, idResult,
timeResult, timeResult,
dayResult, dayResult,
onLossNew
}: Props) => { }: Props) => {
const [isOpen, setIsOpen] = useState<boolean>(false); const [isOpen, setIsOpen] = useState<boolean>(false);
const [openDelete, setOpenDelete] = useState<boolean>(false); const [openDelete, setOpenDelete] = useState<boolean>(false);
const theme = useTheme(); const theme = useTheme();
const isTablet = useMediaQuery(theme.breakpoints.down(1000)); const isTablet = useMediaQuery(theme.breakpoints.down(1000));
const {idResultArray, addIdResult, clearIdResultArray} = useObsolescenceIdResult()
console.log(idResultArray)
return ( return (
<Box <Box
onClick={()=> { onClick={()=> {
addIdResult(idResult); if (isNew) onLossNew(idResult)
setTimeout(() => {
obsolescenceResult(idResultArray);
// clearIdResultArray()
}, 3000);
console.log(idResultArray)
}} }}
sx={{ sx={{
borderRadius: "12px", borderRadius: "12px",
@ -121,7 +115,7 @@ export const CardAnswer: FC = ({
</Box> </Box>
<IconButton onClick={() => { <IconButton onClick={() => {
setIsOpen(!isOpen); setIsOpen(!isOpen);
getAnswerResultList(idResult) getAnswerResultList(Number(idResult))
}}> }}>
<ArrowDownIcon <ArrowDownIcon
style={{ style={{
@ -266,7 +260,7 @@ export const CardAnswer: FC = ({
variant="contained" variant="contained"
sx={{ minWidth: "150px" }} sx={{ minWidth: "150px" }}
onClick={() => { onClick={() => {
deleteResult(idResult); deleteResult(Number(idResult));
setOpenDelete(false) setOpenDelete(false)
}} }}
> >

@ -18,53 +18,69 @@ import { CardAnswer } from "./CardAnswer";
import { FilterIcon } from "./icons/FilterIcon"; import { FilterIcon } from "./icons/FilterIcon";
import { FilterModal } from "@ui_kit/Modal/FilterModal/FilterModal"; import { FilterModal } from "@ui_kit/Modal/FilterModal/FilterModal";
import { ExportContactsModal } from "@ui_kit/Modal/ExportContactsModal"; 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 { useCurrentQuiz, useQuizes } from "@root/quizes/hooks";
import { useQuizStore } from "@root/quizes/store"; import { useQuizStore } from "@root/quizes/store";
import {AnswerResultListEx, getResultsList} from "@api/result";
import {useObsolescenceIdResult, useResultStore} from "@root/results/store";
import { quizApi } from "@api/quiz";
import { setResults } from "@root/results/actions";
import { setQuizes } from "@root/quizes/actions";
import { questionApi } from "@api/question";
import { setQuestions } from "@root/questions/actions";
import { useQuestionsStore } from "@root/questions/store";
import {useUiTools} from "@root/uiTools/store";
const options = [ const options = [
{ label: "Муром (1)", value: "option1" }, { label: "Муром (1)", value: "option1" },
{ label: "Москва (1)", value: "option2" }, { label: "Москва (1)", value: "option2" },
]; ];
let lossDebouncer: null | ReturnType<typeof setTimeout> = 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 = () => { export const QuizAnswersPage: FC = () => {
const theme = useTheme(); const theme = useTheme();
const isTablet = useMediaQuery(theme.breakpoints.down(1000)); const isTablet = useMediaQuery(theme.breakpoints.down(1000));
const isMobile = useMediaQuery(theme.breakpoints.down(600)); const isMobile = useMediaQuery(theme.breakpoints.down(600));
const [filterModalOpen, setFilterModalOpen] = useState<boolean>(false); const [filterModalOpen, setFilterModalOpen] = useState<boolean>(false);
const [exportContactsModalOpen, setExportContactsModalOpen] = const [exportContactsModalOpen, setExportContactsModalOpen] = useState<boolean>(false);
useState<boolean>(false);
const [filterNew, setFilterNew] = useState<string>("За всё время") const [filterNew, setFilterNew] = useState<string>("За всё время")
const { editQuizId } = useQuizStore();
const { questions } = useQuestionsStore();
const quizList = useQuizStore(); const quizList = useQuizStore();
const quiz = useCurrentQuiz(); const quiz = useCurrentQuiz();
const { editQuizId } = useQuizStore();
const { results } = useResultStore(); const { results } = useResultStore();
const { total_count } = useResultStore(); const { total_count } = useResultStore();
const {idResultArray, addIdResult, clearIdResultArray} = useObsolescenceIdResult() // const {idResultArray, addIdResult, clearIdResultArray} = useObsolescenceIdResult()
useEffect(() => { useEffect(() => {
const getData = async () => { const getData = async () => {
const quizes = await quizApi.getList(); if (editQuizId !== null) {
setQuizes(quizes); const quizes = await quizApi.getList();
setQuizes(quizes);
const questions = await questionApi.getList({ quiz_id: editQuizId }); const result = await getResultsList(editQuizId);
setQuestions(questions); console.log("Это данные с сервера", result);
setResults(result);
const result = await getResultsList(quizList.editQuizId); const resAnswer = await AnswerResultListEx(editQuizId)
console.log("Это данные с сервера", result);
setResults(result);
const resAnswer = await AnswerResultListEx(quizList.editQuizId)
console.log("щтветы респондентов на экспорт в юз эффекте", resAnswer) console.log("щтветы респондентов на экспорт в юз эффекте", resAnswer)
}
}; };
getData(); getData();
}, []); }, []);
@ -104,7 +120,6 @@ export const QuizAnswersPage: FC = () => {
maxWidth="lg" maxWidth="lg"
> >
<Typography <Typography
onClick={()=>clearIdResultArray()}
sx={{ fontSize: "36px", fontWeight: "500", mb: "50px", mt: "60px" }} sx={{ fontSize: "36px", fontWeight: "500", mb: "50px", mt: "60px" }}
> >
{quiz.name} {quiz.name}
@ -141,9 +156,9 @@ export const QuizAnswersPage: FC = () => {
<Box sx={{ display: "flex", alignItems: "center", gap: "10px" }}> <Box sx={{ display: "flex", alignItems: "center", gap: "10px" }}>
<IconButton <IconButton
onClick={() => { onClick={() => {
//setExportContactsModalOpen(true) //setExportContactsModalOpen(true)
const resAnswer = AnswerResultListEx(quizList.editQuizId) const resAnswer = AnswerResultListEx(quizList.editQuizId)
console.log("ответы респондентов на экспорт по клику", resAnswer) console.log("ответы респондентов на экспорт по клику", resAnswer)
}} }}
sx={{ sx={{
width: "44px", width: "44px",
@ -204,7 +219,7 @@ export const QuizAnswersPage: FC = () => {
"Последние 30 дней", "Последние 30 дней",
"Этот месяц", "Этот месяц",
]} ]}
onChange={(e)=> setFilterNew(e.value)} onChange={(e) => setFilterNew(e.value)}
/> />
<Select <Select
sx={{ maxWidth: "223px", width: "100%" }} sx={{ maxWidth: "223px", width: "100%" }}
@ -278,6 +293,7 @@ export const QuizAnswersPage: FC = () => {
idResult={result.id} idResult={result.id}
dayResult={dayResult} dayResult={dayResult}
timeResult={timeResult} timeResult={timeResult}
onLossNew={onLossNew}
/> />
); );
})} })}