Cleaver.jsx 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import React, { useMemo } from 'react'
  2. import { Service } from '../../Utils/HTTP'
  3. import useAuth from '../../Auth/useAuth.js';
  4. import { Question } from '../../Components/Test/Cleaver/Question.jsx'
  5. import { Box,Button, Collapse, List } from '@mui/material'
  6. import { TransitionGroup } from 'react-transition-group';
  7. import * as Scroll from 'react-scroll';
  8. export function Cleaver() {
  9. var scroll = Scroll.animateScroll;
  10. let auth = useAuth();
  11. let token = useMemo(() => auth.getToken(), [auth])
  12. const [totalRespondidas, setRespondidas] = React.useState([]);
  13. const [totalPreguntas, setPreguntas] = React.useState([]);
  14. React.useEffect(() => {
  15. let rest = new Service(`/prueba/findid/1`)
  16. rest.get(token.toString())
  17. .then(({ data }) => {
  18. console.log(data.questions)
  19. setPreguntas(data.questions)
  20. setRespondidas(data.questions.slice(0,1))
  21. }).catch(console.log)
  22. }, [token]);
  23. const handleAddQuestion = () => {
  24. let op = { smooth: true, duration: 200, delay :1, offset :20}
  25. scroll.scrollToBottom(op);
  26. let currentAnswer = totalRespondidas[totalRespondidas.length - 1];
  27. const nextHiddenItem = totalPreguntas.filter(({id}) => id !== currentAnswer.id );
  28. if (nextHiddenItem) {
  29. setPreguntas(nextHiddenItem);
  30. let temp = nextHiddenItem.shift()
  31. setRespondidas([...totalRespondidas,temp]);
  32. }
  33. // console.log("RESPONDIDAS: ", totalRespondidas.length)
  34. // console.log("RESTANTES: ", totalPreguntas.length)
  35. };
  36. return (
  37. <div className="content-section question">
  38. <div className="main">
  39. <Box sx={{ mt: 1 }}>
  40. <List >
  41. <TransitionGroup >
  42. {totalRespondidas.map((item) => (
  43. <Collapse key={item.id} >
  44. <Question key={item.id} id={item.id} quiz={item} />
  45. </Collapse>
  46. ))
  47. }
  48. </TransitionGroup>
  49. </List>
  50. </Box>
  51. <div className="question_btn">
  52. <Button
  53. className="nextquestion_btn"
  54. sx={{ backgroundColor: 'var(--main)' }}
  55. variant="contained"
  56. disabled={totalPreguntas.length <= 0}
  57. onClick={handleAddQuestion}
  58. >
  59. Siguiente Pregunta
  60. </Button>
  61. </div>
  62. </div>
  63. </div>
  64. )
  65. }