UNPKG

analytica-frontend-lib

Version:

Repositório público dos componentes utilizados nas plataformas da Analytica Ensino

255 lines 8.53 kB
export declare enum QUESTION_DIFFICULTY { FACIL = "FACIL", MEDIO = "MEDIO", DIFICIL = "DIFICIL" } export declare enum QUIZ_TYPE { SIMULADO = "SIMULADO", QUESTIONARIO = "QUESTIONARIO", ATIVIDADE = "ATIVIDADE" } export declare enum QUESTION_TYPE { ALTERNATIVA = "ALTERNATIVA", DISSERTATIVA = "DISSERTATIVA", MULTIPLA_ESCOLHA = "MULTIPLA_ESCOLHA", VERDADEIRO_FALSO = "VERDADEIRO_FALSO", LIGAR_PONTOS = "LIGAR_PONTOS", PREENCHER = "PREENCHER", IMAGEM = "IMAGEM" } export declare enum QUESTION_STATUS { PENDENTE_AVALIACAO = "PENDENTE_AVALIACAO", RESPOSTA_CORRETA = "RESPOSTA_CORRETA", RESPOSTA_INCORRETA = "RESPOSTA_INCORRETA", NAO_RESPONDIDO = "NAO_RESPONDIDO" } export declare enum ANSWER_STATUS { RESPOSTA_CORRETA = "RESPOSTA_CORRETA", RESPOSTA_INCORRETA = "RESPOSTA_INCORRETA", PENDENTE_AVALIACAO = "PENDENTE_AVALIACAO", NAO_RESPONDIDO = "NAO_RESPONDIDO" } export declare enum SUBTYPE_ENUM { PROVA = "PROVA", ENEM_PROVA_1 = "ENEM_PROVA_1", ENEM_PROVA_2 = "ENEM_PROVA_2", VESTIBULAR = "VESTIBULAR", SIMULADO = "SIMULADO", SIMULADAO = "SIMULADAO" } export interface QuestionResult { answers: { id: string; questionId: string; answer: string | null; selectedOptions: { optionId: string; }[]; answerStatus: ANSWER_STATUS; statement: string; questionType: QUESTION_TYPE; difficultyLevel: QUESTION_DIFFICULTY; solutionExplanation: string | null; correctOption: string; createdAt: string; updatedAt: string; options?: { id: string; option: string; isCorrect: boolean; }[]; knowledgeMatrix: { areaKnowledge: { id: string; name: string; } | null; subject: { id: string; name: string; color: string; icon: string; } | null; topic: { id: string; name: string; } | null; subtopic: { id: string; name: string; } | null; content: { id: string; name: string; } | null; }[]; teacherFeedback: string | null; attachment: string | null; score: number | null; gradedAt: string | null; gradedBy: string | null; }[]; statistics: { totalAnswered: number; correctAnswers: number; incorrectAnswers: number; pendingAnswers: number; score: number; timeSpent: number; }; } export interface Question { id: string; statement: string; questionType: QUESTION_TYPE; difficultyLevel: QUESTION_DIFFICULTY; description: string; examBoard: string | null; examYear: string | null; solutionExplanation: string | null; answer: null; answerStatus: ANSWER_STATUS; options: { id: string; option: string; }[]; knowledgeMatrix: { areaKnowledge: { id: string; name: string; }; subject: { id: string; name: string; color: string; icon: string; }; topic: { id: string; name: string; }; subtopic: { id: string; name: string; }; content: { id: string; name: string; }; }[]; correctOptionIds?: string[]; } export interface QuizInterface { id: string; title: string; type: QUIZ_TYPE; subtype: SUBTYPE_ENUM | string; difficulty: string | null; notification: string | null; status: string; startDate: string | null; finalDate: string | null; canRetry: boolean; createdAt: string | null; updatedAt: string | null; questions: Question[]; } export interface UserAnswerItem { questionId: string; activityId: string; userId: string; answer: string | null; optionId: string | null; questionType: QUESTION_TYPE; answerStatus: ANSWER_STATUS; } export interface QuizState { quiz: QuizInterface | null; currentQuestionIndex: number; selectedAnswers: Record<string, string>; userAnswers: UserAnswerItem[]; timeElapsed: number; isStarted: boolean; isFinished: boolean; userId: string; variant: 'result' | 'default'; minuteCallback: (() => void) | null; dissertativeCharLimit?: number; setQuiz: (quiz: QuizInterface) => void; setQuestionResult: (questionResult: QuestionResult) => void; setUserId: (userId: string) => void; setUserAnswers: (userAnswers: UserAnswerItem[]) => void; setVariant: (variant: 'result' | 'default') => void; setDissertativeCharLimit: (limit?: number) => void; getDissertativeCharLimit: () => number | undefined; goToNextQuestion: () => void; goToPreviousQuestion: () => void; goToQuestion: (index: number) => void; selectAnswer: (questionId: string, answerId: string) => void; selectMultipleAnswer: (questionId: string, answerIds: string[]) => void; selectDissertativeAnswer: (questionId: string, answer: string) => void; skipQuestion: () => void; skipCurrentQuestionIfUnanswered: () => void; addUserAnswer: (questionId: string, answerId?: string) => void; startQuiz: () => void; finishQuiz: () => void; resetQuiz: () => void; updateTime: (time: number) => void; startTimer: () => void; stopTimer: () => void; setMinuteCallback: (callback: (() => void) | null) => void; startMinuteCallback: () => void; stopMinuteCallback: () => void; getCurrentQuestion: () => Question | null; getTotalQuestions: () => number; getAnsweredQuestions: () => number; getUnansweredQuestions: () => number[]; getSkippedQuestions: () => number; getProgress: () => number; isQuestionAnswered: (questionId: string) => boolean; isQuestionSkipped: (questionId: string) => boolean; getCurrentAnswer: () => UserAnswerItem | undefined; getAllCurrentAnswer: () => UserAnswerItem[] | undefined; getQuizTitle: () => string; formatTime: (seconds: number) => string; getUserAnswers: () => UserAnswerItem[]; getUnansweredQuestionsFromUserAnswers: () => number[]; getQuestionsGroupedBySubject: () => { [key: string]: Question[]; }; getUserId: () => string; setCurrentQuestion: (question: Question) => void; getQuestionIndex: (questionId: string) => number; getUserAnswerByQuestionId: (questionId: string) => UserAnswerItem | null; isQuestionAnsweredByUserAnswers: (questionId: string) => boolean; getQuestionStatusFromUserAnswers: (questionId: string) => 'answered' | 'unanswered' | 'skipped'; getUserAnswersForActivity: () => UserAnswerItem[]; setAnswerStatus: (questionId: string, status: ANSWER_STATUS) => void; getAnswerStatus: (questionId: string) => ANSWER_STATUS | null; questionsResult: QuestionResult | null; currentQuestionResult: QuestionResult['answers'] | null; setQuestionsResult: (questionsResult: QuestionResult) => void; setCurrentQuestionResult: (currentQuestionResult: QuestionResult['answers']) => void; getQuestionResultByQuestionId: (questionId: string) => QuestionResult['answers'][number] | null; getQuestionResultStatistics: () => QuestionResult['statistics'] | null; getQuestionResult: () => QuestionResult | null; getCurrentQuestionResult: () => QuestionResult['answers'] | null; } export declare const MINUTE_INTERVAL_MS = 60000; export declare const useQuizStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<QuizState>, "setState" | "devtools"> & { setState(partial: QuizState | Partial<QuizState> | ((state: QuizState) => QuizState | Partial<QuizState>), replace?: false | undefined, action?: (string | { [x: string]: unknown; [x: number]: unknown; [x: symbol]: unknown; type: string; }) | undefined): void; setState(state: QuizState | ((state: QuizState) => QuizState), replace: true, action?: (string | { [x: string]: unknown; [x: number]: unknown; [x: symbol]: unknown; type: string; }) | undefined): void; devtools: { cleanup: () => void; }; }>; //# sourceMappingURL=useQuizStore.d.ts.map