import SurveyInfo from "../SurveyInfo/SurveyInfo.tsx"; import QuestionsList, {Question} from "../QuestionsList/QuestionsList.tsx"; import {useEffect, useState} from "react"; import styles from './CompletingSurvey.module.css' import { useParams} from "react-router-dom"; import {getSurveyById, ISurvey} from "../../api/SurveyApi.ts"; import {getListQuestions} from "../../api/QuestionApi.ts"; import {getAnswerVariants, IAnswerVariant} from "../../api/AnswerVariantsApi.ts"; export const CompletingSurvey = () => { // const [titleSurvey, setTitleSurvey] = useState("Название опроса"); // const [descriptionSurvey, setDescriptionSurvey] = useState(""); // const [questions, setQuestions] = useState([ // { id: 1, text: 'Вопрос 1', questionType: 'SingleAnswerQuestion', answerVariants: [{ id: 1, text: 'Ответ 1' }, // { id: 2, text: 'Ответ 1' }, { id: 3, text: 'Ответ 1' }]}, // { id: 2, text: 'Вопрос 2', questionType: 'MultipleAnswerQuestion', answerVariants: [{ id: 1, text: 'Ответ 1' }, // { id: 2, text: 'Ответ 1' }, { id: 3, text: 'Ответ 1' }]} // ]); // const [questions, setQuestions] = useState([]); // const [loading, setLoading] = useState(true); // const [error, setError] = useState(null); // // const [description, setDescription] = useState(''); // const [title, setTitle] = useState(''); // // const { survey, setSurvey } = useOutletContext<{ // survey: ISurvey; // setSurvey: (survey: ISurvey) => void; // }>(); const {surveyId} = useParams<{surveyId: string}>(); const [survey, setSurvey] = useState(null); const [questions, setQuestions] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const fetchSurveyData = async () => { try { setLoading(true); if (!surveyId) return; const surveyData = await getSurveyById(parseInt(surveyId)); setSurvey(surveyData); const questionsData = await getListQuestions(parseInt(surveyId)); const formattedQuestions = await Promise.all(questionsData.map(async q => { const answerVariants = await getAnswerVariants(parseInt(surveyId), q.id); return { id: q.id, text: q.title, questionType: q.questionType as 'SingleAnswerQuestion' | 'MultipleAnswerQuestion', answerVariants: answerVariants.map((a: IAnswerVariant) => ({ id: a.id, text: a.text })) }; })); setQuestions(formattedQuestions); } catch (error) { console.error('Ошибка загрузки опроса:', error); setError('Не удалось загрузить опрос'); } finally { setLoading(false); } }; fetchSurveyData(); }, [surveyId]); if (loading) return
Загрузка...
; if (error) return
{error}
; if (!survey) return
Опрос не найден
; return (
setSurvey({ ...survey, description: value })} setTitleSurvey={(value) => setSurvey({ ...survey, title: value })} />
) } export default CompletingSurvey