From 7555757ca3b308c771f798039c1cd0265b177f48 Mon Sep 17 00:00:00 2001 From: MikanD Date: Sat, 31 May 2025 18:15:52 +0300 Subject: [PATCH] pre AI --- src/pages/SurveyPage.tsx | 66 +++++++++++++++++++++++++++++++++++++--- src/types/survey.ts | 22 ++++++++++++-- 2 files changed, 81 insertions(+), 7 deletions(-) diff --git a/src/pages/SurveyPage.tsx b/src/pages/SurveyPage.tsx index b02f590..2c3598e 100644 --- a/src/pages/SurveyPage.tsx +++ b/src/pages/SurveyPage.tsx @@ -1,7 +1,7 @@ import {LoadingList} from "../components/LoadingList.tsx"; -import {Survey} from "../types/survey.ts"; +import {AgreementQuestion, Question, QuestionPair, QuestionType, Survey} from "../types/survey.ts"; import {Link, useParams} from "react-router-dom"; -import React from "react"; +import React, { useState } from "react"; import {useData, useDataPage} from "../API/common.ts"; import {LoadingData} from "../components/LoadingData.tsx"; @@ -36,18 +36,74 @@ function SurveyQuestions({survey}: { survey: Survey | null | undefined }) { const _survey = survey as Survey; - const questionsPairs = useDataPage("surveys", "question-pairs", {survey:_survey.id}); - const questionsAgreement = useDataPage("surveys", "question-pairs", {survey:_survey.id}); + const [questions, setQuestions] = useState(null); - //const questions = + const questionsPairs = useDataPage("surveys", "question-pairs", {survey:_survey.id}); + const questionsAgreement = useDataPage("surveys", "agreement-questions", {survey:_survey.id}); + if (questions === null && questionsPairs.items !== null && questionsAgreement.items !== null){ + + function setQuestionType(question: Question, questionType: QuestionType) { + question.questionType = questionType; + return question; + } + + var _questions = [...questionsPairs.items.map(q=>setQuestionType(q, QuestionType.QuestionPair)), ...questionsAgreement.items.map(q=>setQuestionType(q, QuestionType.AgreementQuestion))]; + _questions.sort(()=>Math.random() - .5); + console.log(questionsPairs.items.map(q=>setQuestionType(q, QuestionType.QuestionPair))); + + setQuestions(_questions); + } + + //console.log(questions); + return ( <> + ( + + ))}/> ); } +function QuestionBlock({question}:{question: Question}) { + + switch (question.questionType) { + case QuestionType.AgreementQuestion: + const qa = question as AgreementQuestion; + return ( +
+ (Вы согласны с утверждением?) + {qa.question} + + +
+ ); + + case QuestionType.QuestionPair: + + const qp = question as QuestionPair; + return ( +
+ (Выберите подходящий ответ) + {qp.statements.map(s=>())} + +
+ ); + + default: + break; + } + + + return null; +} + diff --git a/src/types/survey.ts b/src/types/survey.ts index 2170396..cf5b18c 100644 --- a/src/types/survey.ts +++ b/src/types/survey.ts @@ -11,6 +11,24 @@ interface Statement extends UniqueItem{ score_variable: number; } -export interface QuestionPair extends UniqueItem{ - +export enum QuestionType{ + QuestionPair, + AgreementQuestion +} + +export interface Question extends UniqueItem{ + questionType: QuestionType, + answer?: number; +} + + +export interface QuestionPair extends Question{ + statements: Statement[] +} + + + +export interface AgreementQuestion extends Question{ + question: string; + score_variable: number; }