функция удаления новизны за 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 {
const response = await makeRequest<unknown, unknown>({
url: process.env.REACT_APP_DOMAIN + `/squiz/result/seen`,

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

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