Skip to content

Commit

Permalink
Quiz Pontuacao
Browse files Browse the repository at this point in the history
  • Loading branch information
williamdlm committed Oct 9, 2021
1 parent 30ae42f commit a2870aa
Showing 1 changed file with 54 additions and 7 deletions.
61 changes: 54 additions & 7 deletions pages/quiz.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,23 @@ import Widget from "../src/components/Widget";
import db from "../db.json";
import QuizContainer from "../src/components/QuizContainer";
import Button from "../src/components/Button";
function ResultWidget({ results }) {
return (
<Widget>
<Widget.Header>RESULTADO</Widget.Header>
<Widget.Content>
<p>{`Você acertou ${results.filter((x) => x).length} questões`}</p>
<ul>
{results.map((result, index) => (
<li>
#{index + 1} Resultado: {result === true ? "Acertou" : "Errou"}
</li>
))}
</ul>
</Widget.Content>
</Widget>
);
}

function LoadingWidget() {
return (
Expand All @@ -16,8 +33,19 @@ function LoadingWidget() {
);
}

function QuestionWidget({ question, totalQuestions, questionIndex, onSubmit }) {
function QuestionWidget({
question,
totalQuestions,
questionIndex,
onSubmit,
addResult,
}) {
const [selectedAlternative, setSelectedAlternative] =
React.useState(undefined);
const [isQuestionSubmited, setIsQuestionSubmited] = React.useState(false);
const questId = `question__${questionIndex}`;
const isCorrect = selectedAlternative === question.answer;
const hasAlternativeSelected = selectedAlternative !== undefined;
return (
<>
<Widget>
Expand Down Expand Up @@ -45,7 +73,13 @@ function QuestionWidget({ question, totalQuestions, questionIndex, onSubmit }) {
<form
onSubmit={(event) => {
event.preventDefault();
onSubmit();
setIsQuestionSubmited(true);
addResult(isCorrect);
setTimeout(() => {
onSubmit();
setIsQuestionSubmited(false);
setSelectedAlternative(undefined);
}, 1 * 2000);
}}
>
{question.alternatives.map((alternative, alternativeIndex) => {
Expand All @@ -57,18 +91,24 @@ function QuestionWidget({ question, totalQuestions, questionIndex, onSubmit }) {
key={alternativeId}
>
<input
// style={{
// display: "none",
// }}
style={{
display: "none",
}}
id={alternativeId}
type="radio"
name={questId}
onChange={() => setSelectedAlternative(alternativeIndex)}
/>
{alternative}
</Widget.Topic>
);
})}
<Button type="submit">Confirmar</Button>
{console.log(`selectAlternative: ${selectedAlternative}`)}
<Button type="submit" disabled={!hasAlternativeSelected}>
Confirmar
</Button>
{isQuestionSubmited && isCorrect && <p>Você acertou!</p>}
{isQuestionSubmited && !isCorrect && <p>Você errou!</p>}
</form>
{/* <pre>{JSON.stringify(question, null, 4)}</pre> */}
</Widget.Content>
Expand All @@ -85,10 +125,16 @@ const screenStates = {

export default function QuizPage() {
const [screenState, setScreenState] = React.useState(screenStates.LOADING);
const [results, setResult] = React.useState([]);
const [currentQuestion, setCurrentQuestion] = React.useState(0);
const questionIndex = currentQuestion;
const question = db.questions[questionIndex];
const totalQuestions = db.questions.length;

function addResult(result) {
setResult([...results, result]);
}

React.useEffect(() => {
setTimeout(() => {
setScreenState(screenStates.QUIZ);
Expand Down Expand Up @@ -133,11 +179,12 @@ export default function QuizPage() {
totalQuestions={totalQuestions}
questionIndex={questionIndex}
onSubmit={handleSubmitQuiz}
addResult={addResult}
/>
)}
{screenState === screenStates.LOADING && <LoadingWidget />}
{screenState === screenStates.RESULT && (
<div>Você acertou X questões, parabens!</div>
<ResultWidget results={results} />
)}
</QuizContainer>
</Background>
Expand Down

1 comment on commit a2870aa

@vercel
Copy link

@vercel vercel bot commented on a2870aa Oct 9, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.