123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526 |
- import {
- IonPage,
- IonContent,
- IonHeader,
- IonTitle,
- IonToolbar,
- IonFooter,
- IonImg,
- IonItem,
- IonLabel,
- IonList,
- IonCard,
- IonCardContent,
- IonCardHeader,
- IonCardSubtitle,
- IonCardTitle,
- IonButton,
- IonGrid,
- IonRow,
- IonCol,
- IonButtons,
- IonBackButton,
- useIonViewWillEnter,
- IonRadioGroup,
- IonRadio,
- IonIcon,
- IonChip
- } from '@ionic/react';
- import { useParams } from 'react-router';
- import React, { useState } from 'react';
- import './Questions.css';
- import EnciclopediaPR from '../assets/EnciclopediaPR.png';
- import RobertoClemente from '../assets/RobertoClemente.jpg';
- import { QuizInfo, getQuiz } from '../data/QuizInfo';
- import { thumbsDown, thumbsUp } from 'ionicons/icons';
-
-
- const Questions: React.FC = () => {
- // Estados para respuestas seleccionadas
- const [qres1, setQRes1] = useState();
- const [qres2, setQRes2] = useState();
- const [qres3, setQRes3] = useState();
- const [qres4, setQRes4] = useState();
-
- // Arreglos para saber cual radio se selecciono en cada pregunta
- const selected1:boolean[] = [false, false, false, false];
- const selected2:boolean[] = [false, false, false, false];
- const selected3:boolean[] = [false, false, false, false];
- const selected4:boolean[] = [false, false, false, false];
-
- // Estados para seleccionar iconos de las respuestas seleccionadas
- const [icon11, setIcon11] = useState<any>();
- const [icon12, setIcon12] = useState<any>();
- const [icon13, setIcon13] = useState<any>();
- const [icon14, setIcon14] = useState<any>();
-
- const [icon21, setIcon21] = useState<any>();
- const [icon22, setIcon22] = useState<any>();
- const [icon23, setIcon23] = useState<any>();
- const [icon24, setIcon24] = useState<any>();
-
- const [icon31, setIcon31] = useState<any>();
- const [icon32, setIcon32] = useState<any>();
- const [icon33, setIcon33] = useState<any>();
- const [icon34, setIcon34] = useState<any>();
-
- const [icon41, setIcon41] = useState<any>();
- const [icon42, setIcon42] = useState<any>();
- const [icon43, setIcon43] = useState<any>();
- const [icon44, setIcon44] = useState<any>();
-
- // Estado para contar cuantas preguntas correctas se obtuvieron
- const [countres, setCountRes] = useState<number>(0);
-
- const [verResPresionado, setVerResPresionado] = useState<boolean>(false);
-
- /* verificarRes()
- Funcion se encarga de verificar si las respuestas seleccionadas
- son correctas. Despliega ThumbsUp para seleccion correcta,
- ThumbsDowmn para seleccion incorrecta.
- */
- const verificarRes = () => {
- // borrar console logs para el release
- console.log([qres1, qres2, qres3, qres4]);
- console.log(countres);
-
- // reset a los icons, count por si hubo seleccion anterior
- let count = 0;
- setCountRes(count);
- setVerResPresionado(true); // buton verificar respuestas precionado
-
- setIcon11(null);
- setIcon12(null);
- setIcon13(null);
- setIcon14(null);
-
- setIcon21(null);
- setIcon22(null);
- setIcon23(null);
- setIcon24(null);
-
- setIcon31(null);
- setIcon32(null);
- setIcon33(null);
- setIcon34(null);
-
- setIcon41(null);
- setIcon42(null);
- setIcon43(null);
- setIcon44(null);
-
-
- // loop para saber que radio escogio el usuario en cada pregunta
- let num: number = 0;
- let i: number;
- for(i = num; i<4; i++){
- if(qres1 === quizInfo?.res1[i]){
- selected1[i] = true;
- }
-
- if(qres2 === quizInfo?.res2[i]){
- selected2[i] = true;
- }
-
- if(qres3 === quizInfo?.res3[i]){
- selected3[i] = true;
- }
-
- if(qres4 === quizInfo?.res4[i]){
- selected4[i] = true;
- }
-
- }
-
- // Para seleccionar si sale icono correccto o incorrecto en seleccion
- // de radio.
-
- // ======================= PREGUNTA 1 =========================================
- // SI usuario seleccionio el primer radio en la pregunta 1
- if(selected1[0] && quizInfo?.res1[0] === quizInfo?.correcta1){
- setIcon11(<IonIcon icon={thumbsUp} />);
- //setCountRes(countres + 1);
- count++;
- }
- else if (selected1[0] && quizInfo?.res1[0] !== quizInfo?.correcta1){
- setIcon11(<IonIcon icon={thumbsDown} />)
- }
-
- // SI usuario seleccionio el segundo radio en la pregunta 1
- if(selected1[1] && quizInfo?.res1[1] === quizInfo?.correcta1){
- setIcon12(<IonIcon icon={thumbsUp} />);
- //setCountRes(countres + 1);
- count++;
- }
- else if (selected1[1] && quizInfo?.res1[1] !== quizInfo?.correcta1){
- setIcon12(<IonIcon icon={thumbsDown} />)
- }
-
- // SI usuario seleccionio el tercer radio en la pregunta 1
- if(selected1[2] && quizInfo?.res1[2] === quizInfo?.correcta1){
- setIcon13(<IonIcon icon={thumbsUp} />);
- //setCountRes(countres + 1);
- count++;
- }
- else if (selected1[2] && quizInfo?.res1[2] !== quizInfo?.correcta1){
- setIcon13(<IonIcon icon={thumbsDown} />)
- }
-
- // SI usuario seleccionio el cuarto radio en la pregunta 1
- if(selected1[3] && quizInfo?.res1[3] === quizInfo?.correcta1){
- setIcon14(<IonIcon icon={thumbsUp} />);
- //setCountRes(countres + 1);
- count++;
- }
- else if (selected1[3] && quizInfo?.res1[3] !== quizInfo?.correcta1){
- setIcon14(<IonIcon icon={thumbsDown} />)
- }
- // ======================= PREGUNTA 1 =========================================
-
- // ======================= PREGUNTA 2 =========================================
-
- // SI usuario seleccionio el primer radio en la pregunta 2
- if(selected2[0] && quizInfo?.res2[0] === quizInfo?.correcta2){
- setIcon21(<IonIcon icon={thumbsUp} />);
- //setCountRes(countres + 1);
- count++;
- }
- else if (selected2[0] && quizInfo?.res2[0] !== quizInfo?.correcta2){
- setIcon21(<IonIcon icon={thumbsDown} />)
- }
-
- // SI usuario seleccionio el segundo radio en la pregunta 2
- if(selected2[1] && quizInfo?.res2[1] === quizInfo?.correcta2){
- setIcon22(<IonIcon icon={thumbsUp} />);
- //setCountRes(countres + 1);
- count++;
- }
- else if (selected2[1] && quizInfo?.res2[1] !== quizInfo?.correcta2){
- setIcon22(<IonIcon icon={thumbsDown} />)
- }
-
- // SI usuario seleccionio el tercer radio en la pregunta 2
- if(selected2[2] && quizInfo?.res2[2] === quizInfo?.correcta2){
- setIcon23(<IonIcon icon={thumbsUp} />);
- //setCountRes(countres + 1);
- count++;
- }
- else if (selected2[2] && quizInfo?.res2[2] !== quizInfo?.correcta2){
- setIcon23(<IonIcon icon={thumbsDown} />)
- }
-
- // SI usuario seleccionio el cuarto radio en la pregunta 2
- if(selected2[3] && quizInfo?.res2[3] === quizInfo?.correcta2){
- setIcon24(<IonIcon icon={thumbsUp} />);
- //setCountRes(countres + 1);
- count++;
- }
- else if (selected2[3] && quizInfo?.res2[3] !== quizInfo?.correcta2){
- setIcon24(<IonIcon icon={thumbsDown} />)
- }
-
- // ======================= PREGUNTA 2 =========================================
-
- // ======================= PREGUNTA 3 =========================================
-
- // SI usuario seleccionio el primer radio en la pregunta 3
- if(selected3[0] && quizInfo?.res3[0] === quizInfo?.correcta3){
- setIcon31(<IonIcon icon={thumbsUp} />);
- //setCountRes(countres + 1);
- count++;
- }
- else if (selected3[0] && quizInfo?.res3[0] !== quizInfo?.correcta3){
- setIcon31(<IonIcon icon={thumbsDown} />)
- }
-
- // SI usuario seleccionio el segundo radio en la pregunta 3
- if(selected3[1] && quizInfo?.res3[1] === quizInfo?.correcta3){
- setIcon32(<IonIcon icon={thumbsUp} />);
- //setCountRes(countres + 1);
- count++;
- }
- else if (selected3[1] && quizInfo?.res3[1] !== quizInfo?.correcta3){
- setIcon32(<IonIcon icon={thumbsDown} />)
- }
-
- // SI usuario seleccionio el tercer radio en la pregunta 3
- if(selected3[2] && quizInfo?.res3[2] === quizInfo?.correcta3){
- setIcon33(<IonIcon icon={thumbsUp} />);
- //setCountRes(countres + 1);
- count++;
- }
- else if (selected3[2] && quizInfo?.res3[2] !== quizInfo?.correcta3){
- setIcon33(<IonIcon icon={thumbsDown} />)
- }
-
- // SI usuario seleccionio el cuerto radio en la pregunta 3
- if(selected3[3] && quizInfo?.res3[3] === quizInfo?.correcta3){
- setIcon34(<IonIcon icon={thumbsUp} />);
- //setCountRes(countres + 1);
- count++;
- }
- else if (selected3[3] && quizInfo?.res3[3] !== quizInfo?.correcta3){
- setIcon34(<IonIcon icon={thumbsDown} />)
- }
-
- // ======================= PREGUNTA 3 =========================================
-
- // ======================= PREGUNTA 4 =========================================
-
- // SI usuario seleccionio el primer radio en la pregunta 4
- if(selected4[0] && quizInfo?.res4[0] === quizInfo?.correcta4){
- setIcon41(<IonIcon icon={thumbsUp} />);
- //setCountRes(countres + 1);
- count++;
- }
- else if (selected4[0] && quizInfo?.res4[0] !== quizInfo?.correcta4){
- setIcon41(<IonIcon icon={thumbsDown} />)
- }
-
- // SI usuario seleccionio el segundo radio en la pregunta 4
- if(selected4[1] && quizInfo?.res4[1] === quizInfo?.correcta4){
- setIcon42(<IonIcon icon={thumbsUp} />);
- //setCountRes(countres + 1);
- count++;
- }
- else if (selected4[1] && quizInfo?.res4[1] !== quizInfo?.correcta4){
- setIcon42(<IonIcon icon={thumbsDown} />)
- }
-
- // SI usuario seleccionio el tercer radio en la pregunta 4
- if(selected4[2] && quizInfo?.res4[2] === quizInfo?.correcta4){
- setIcon43(<IonIcon icon={thumbsUp} />);
- //setCountRes(countres + 1);
- count++;
- }
- else if (selected4[2] && quizInfo?.res4[2] !== quizInfo?.correcta4){
- setIcon43(<IonIcon icon={thumbsDown} />)
- }
-
- // SI usuario seleccionio el cuarto radio en la pregunta 4
- if(selected4[3] && quizInfo?.res4[3] === quizInfo?.correcta4){
- setIcon44(<IonIcon icon={thumbsUp} />);
- //setCountRes(countres + 1);
- count++;
- }
- else if (selected4[3] && quizInfo?.res4[3] !== quizInfo?.correcta4){
- setIcon44(<IonIcon icon={thumbsDown} />)
- }
-
- // ======================= PREGUNTA 4 =========================================
-
- // Para saber cueantas resspuestas acertó el usuario
- setCountRes(count);
- };
-
- // State para desplegar la info del quiz
- const [quizInfo, setQuiz] = useState<QuizInfo>();
- const params = useParams<{ id: string }>();
-
- useIonViewWillEnter(() => {
- const quiz = getQuiz(parseInt(params.id, 10));
- setQuiz(quiz);
- });
-
- return (
- <IonPage>
- <IonHeader>
- <IonToolbar className="Header-Color">
- <IonGrid fixed={true}>
- <IonRow>
- <IonCol></IonCol>
- <IonCol>
- <IonImg style={{ height: 50, width: 100 }} src={EnciclopediaPR} alt='Logo'></IonImg>
- <IonTitle>Quiz</IonTitle>
- </IonCol>
- <IonCol></IonCol>
- </IonRow>
- </IonGrid>
- </IonToolbar>
- </IonHeader>
-
- <IonContent fullscreen className="ion-padding">
- <IonImg style={{ height: 300, width: 600 }} src={RobertoClemente} alt='Logo'></IonImg>
-
- {
- quizInfo ?
- <>
- <h1>Quiz sobre la biografia de {quizInfo.title}</h1>
-
- <p>Marque una respuesta por pregunta</p>
-
- <IonCard>
- <IonCardHeader>
- <IonCardTitle>{quizInfo.pregunta1}</IonCardTitle>
- <IonCardSubtitle></IonCardSubtitle>
- </IonCardHeader>
- <IonCardContent>
- <IonList>
- <IonRadioGroup value={qres1} onIonChange={(e) => setQRes1(e.detail.value)}>
- <IonItem>
- <IonLabel>{quizInfo.res1[0]}</IonLabel>
- <IonRadio slot="end" value={quizInfo.res1[0]}></IonRadio>
- {icon11}
- </IonItem>
-
- <IonItem>
- <IonLabel>{quizInfo.res1[1]}</IonLabel>
- <IonRadio slot="end" value={quizInfo.res1[1]}></IonRadio>
- {icon12}
- </IonItem>
-
- <IonItem>
- <IonLabel>{quizInfo.res1[2]}</IonLabel>
- <IonRadio slot="end" value={quizInfo.res1[2]}></IonRadio>
- {icon13}
- </IonItem>
-
- <IonItem>
- <IonLabel>{quizInfo.res1[3]}</IonLabel>
- <IonRadio slot="end" value={quizInfo.res1[3]}></IonRadio>
- {icon14}
- </IonItem>
- </IonRadioGroup>
- </IonList>
- </IonCardContent>
- </IonCard>
-
- <IonCard>
- <IonCardHeader>
- <IonCardTitle>{quizInfo.pregunta2}</IonCardTitle>
- <IonCardSubtitle></IonCardSubtitle>
- </IonCardHeader>
- <IonCardContent>
- <IonList>
- <IonRadioGroup value={qres2} onIonChange={(e) => setQRes2(e.detail.value)}>
- <IonItem>
- <IonLabel>{quizInfo.res2[0]}</IonLabel>
- <IonRadio slot="end" value={quizInfo.res2[0]}></IonRadio>
- {icon21}
- </IonItem>
-
- <IonItem>
- <IonLabel>{quizInfo.res2[1]}</IonLabel>
- <IonRadio slot="end" value={quizInfo.res2[1]}></IonRadio>
- {icon22}
- </IonItem>
-
- <IonItem>
- <IonLabel>{quizInfo.res2[2]}</IonLabel>
- <IonRadio slot="end" value={quizInfo.res2[2]}></IonRadio>
- {icon23}
- </IonItem>
-
- <IonItem>
- <IonLabel>{quizInfo.res2[3]}</IonLabel>
- <IonRadio slot="end" value={quizInfo.res2[3]}></IonRadio>
- {icon24}
- </IonItem>
- </IonRadioGroup>
- </IonList>
- </IonCardContent>
- </IonCard>
-
- <IonCard>
- <IonCardHeader>
- <IonCardTitle>{quizInfo.pregunta3}</IonCardTitle>
- <IonCardSubtitle></IonCardSubtitle>
- </IonCardHeader>
- <IonCardContent>
- <IonList>
- <IonRadioGroup value={qres3} onIonChange={(e) => setQRes3(e.detail.value)}>
- <IonItem>
- <IonLabel>{quizInfo.res3[0]}</IonLabel>
- <IonRadio slot="end" value={quizInfo.res3[0]}></IonRadio>
- {icon31}
- </IonItem>
-
- <IonItem>
- <IonLabel>{quizInfo.res3[1]}</IonLabel>
- <IonRadio slot="end" value={quizInfo.res3[1]}></IonRadio>
- {icon32}
- </IonItem>
-
- <IonItem>
- <IonLabel>{quizInfo.res3[2]}</IonLabel>
- <IonRadio slot="end" value={quizInfo.res3[2]}></IonRadio>
- {icon33}
- </IonItem>
-
- <IonItem>
- <IonLabel>{quizInfo.res3[3]}</IonLabel>
- <IonRadio slot="end" value={quizInfo.res3[3]}></IonRadio>
- {icon34}
- </IonItem>
- </IonRadioGroup>
- </IonList>
- </IonCardContent>
- </IonCard>
-
- <IonCard>
- <IonCardHeader>
- <IonCardTitle>{quizInfo.pregunta4}</IonCardTitle>
- <IonCardSubtitle></IonCardSubtitle>
- </IonCardHeader>
- <IonCardContent>
- <IonList>
- <IonRadioGroup value={qres4} onIonChange={(e) => setQRes4(e.detail.value)}>
- <IonItem>
- <IonLabel>{quizInfo.res4[0]}</IonLabel>
- <IonRadio slot="end" value={quizInfo.res4[0]}></IonRadio>
- {icon41}
- </IonItem>
-
- <IonItem>
- <IonLabel>{quizInfo.res4[1]}</IonLabel>
- <IonRadio slot="end" value={quizInfo.res4[1]}></IonRadio>
- {icon42}
- </IonItem>
-
- <IonItem>
- <IonLabel>{quizInfo.res4[2]}</IonLabel>
- <IonRadio slot="end" value={quizInfo.res4[2]}></IonRadio>
- {icon43}
- </IonItem>
-
- <IonItem>
- <IonLabel>{quizInfo.res4[3]}</IonLabel>
- <IonRadio slot="end" value={quizInfo.res4[3]}></IonRadio>
- {icon44}
- </IonItem>
- </IonRadioGroup>
- </IonList>
- </IonCardContent>
- </IonCard>
-
- <IonItem lines="none">
- {verResPresionado ? (
- <>
- <IonChip>{countres} / 4 respuestas correctas</IonChip>
- </>
- ) : null }
- </IonItem>
-
- </> : <div>Quiz not found</div>
-
- }
-
-
- <IonButton onClick={verificarRes}>Verificar respuestas</IonButton>
-
- </IonContent>
-
- <IonFooter>
- <IonToolbar className="Footer-Color">
- <div className='Item-Center'>
- <IonButtons slot="start">
- <IonBackButton defaultHref="/ListBiographie"></IonBackButton>
- </IonButtons>
- </div>
- </IonToolbar>
- </IonFooter>
- </IonPage>
- );
- };
-
- export default Questions;
|