amenpunk преди 3 години
родител
ревизия
428e78228c
променени са 7 файла, в които са добавени 101 реда и са изтрити 100 реда
  1. 0 1
      src/Components/Navigation/listItems.js
  2. 4 1
      src/Components/Routes.js
  3. 1 1
      src/Pages/Logincs.jsx
  4. 20 21
      src/Pages/Prueba.jsx
  5. 72 72
      src/Pages/Pruebas/Cleaver.jsx
  6. 3 2
      src/Slices/userSlice.js
  7. 1 2
      src/Utils/MenuItems.js

+ 0 - 1
src/Components/Navigation/listItems.js

@@ -85,7 +85,6 @@ export const MainListItems = (props) =>  {
 };
 
 export const UserListItems = (_props) =>  {
-    // const [open, setOpen] = React.useState(false);
     return(
         <List>
             <ListSubheader inset>MENÚ</ListSubheader>

+ 4 - 1
src/Components/Routes.js

@@ -44,7 +44,10 @@ export default function MyRoutes() {
         }
       >
         <Route path="home" element={<HomeUser />} />
-        <Route path="prueba/:id" element={<Prueba/>} />
+        <Route path="prueba">
+          <Route path=":id" element={<Prueba/>}/>
+          <Route path="" element={<Prueba/>}/>
+        </Route>
       </Route>
 
 

+ 1 - 1
src/Pages/Logincs.jsx

@@ -68,7 +68,7 @@ export function LoginCs() {
         .then(response => {
 
           console.log("Service Response :: ", response)
-          let { token, nombre, apelidos, id: pass_id, idSueperContrasenia } = response;
+          let { token, nombre, apelidos, idcontrasenia : pass_id, idSueperContrasenia } = response;
           toast.success(`Bienvenido ${nombre} ${apelidos}!!`)
           token = token.replace("Bearer ", "")
           let { exp } = jwt_decode(token);

+ 20 - 21
src/Pages/Prueba.jsx

@@ -17,8 +17,6 @@ export function Prueba() {
   let dispatch = useDispatch();
   let [data, setData] = useState({});
 
-  console.log('PROFILE: ', profile)
-
   useState(() => {
     let rest = new Service(`/prueba/findid/${id}`)
     rest.get(auth.token)
@@ -28,33 +26,32 @@ export function Prueba() {
       .catch(_e => setData({}))
   }, [id])
 
-  console.log('Prueba info: ', data)
+  let now = new Date().toISOString();
+  let assig_data = {
+    "id": -1,
+    "fechaasignacio": now,
+    "fechafinexamen": now,
+    "estado": "1",
+    "score": "0",
+    "mensaje": "0",
+    "mensaje2": "0",
+    "candidatoinpwd_id": profile.profile.idsuperpwd,
+    //candidatoinpwd -> idSuperContraseña -> viene al hacer login
+    "idcontrasenia": profile.role.pass, // ya no se va enviar
+    "nombre": "new " + now,
+    //cattest_id // catalogo de examenes -> viene del api del catalogo del admin
+    "cattest_id": data.id
+  }
 
   const CreateAssign = () => {
 
-    let now = new Date().toISOString();
-    let body = {
-      "id": -1,
-      "fechaasignacio": now,
-      "fechafinexamen": now,
-      "estado": "1",
-      "score": "0",
-      "mensaje": "0",
-      "mensaje2": "0",
-      "candidatoinpwd_id": profile.profile.idsuperpwd,
-      //candidatoinpwd -> idSuperContraseña -> viene al hacer login
-      "idcontrasenia": profile.role.pass, // ya no se va enviar
-      "nombre": "assing CLEVAERR",
-      //cattest_id // catalogo de examenes -> viene del api del catalogo del admin
-      "cattest_id": data.id
-    }
 
     let rest = new Service("/prueba/asignacion");
-    rest.postQuery(body, auth.token)
+    rest.postQuery(assig_data, auth.token)
       .then(({ data: resp }) => {
         let { id: assingid } = resp
         toast.success("Asignación creada ", assingid)
-        dispatch(setRole({ assingid }))
+        dispatch(setRole({ assingid, current_test_id: id }))
       })
       .catch(() => {
         toast.error("Error al crear la asignación")
@@ -62,6 +59,8 @@ export function Prueba() {
   }
 
   if (profile.role.assingid) {
+    //TODO:
+    //case current test id to render specific examn template
     return <Cleaver />
   }
 

+ 72 - 72
src/Pages/Pruebas/Cleaver.jsx

@@ -1,7 +1,7 @@
 import React from 'react'
 import { Service } from '../../Utils/HTTP'
 import { Question } from '../../Components/Test/Cleaver/Question.jsx'
-import { Box,Button, LinearProgress, Backdrop, CircularProgress, } from '@mui/material'
+import { Box, Button, LinearProgress, Backdrop, CircularProgress, } from '@mui/material'
 import { useSelector } from 'react-redux';
 import { useParams, useNavigate } from 'react-router-dom'
 import toast, { Toaster } from 'react-hot-toast';
@@ -27,7 +27,7 @@ const theme = createTheme({
       main: '#fd4b4b',
       darker: '#053e85',
     },
-    secondary : {
+    secondary: {
       main: '#2ec5d3',
       darker: '#053e85',
     },
@@ -52,11 +52,11 @@ export function Cleaver() {
   const [progress, setProgress] = React.useState(0);
   const [open, setOpen] = React.useState(false);
 
-  const BadQuestion = () => toast.error("Escoge una respuesta en cada columna") 
+  const BadQuestion = () => toast.error("Escoge una respuesta en cada columna")
   //toast("Escoge una respuesta en cada columna",{ icon : '⚠️' });
   const CalculateProgress = () => {
     let total_preguntas = totalPreguntas.length + totalRespondidas.length
-    let x = totalRespondidas.length *100 / (total_preguntas)
+    let x = totalRespondidas.length * 100 / (total_preguntas)
     setProgress(x.toFixed(2))
   }
 
@@ -66,26 +66,26 @@ export function Cleaver() {
       .then(({ data }) => {
         console.log(data.questions)
         setPreguntas(data.questions)
-        setRespondidas(data.questions.slice(0,1))
+        setRespondidas(data.questions.slice(0, 1))
         setCurrent(0)
       }).catch(console.log)
-  }, [id,auth]);
+  }, [id, auth]);
 
   const saveRespones = () => {
 
     setOpen(true)
 
     let { responses: userResp } = cleaver;
-    let mapResponses = totalRespondidas.map( resp => {
-      let { respuestas : posibles, id } = resp;
-      console.log(resp.id,posibles)
-      let opciones_multiples = posibles.map( quiz => {
+    let mapResponses = totalRespondidas.map(resp => {
+      let { respuestas: posibles, id } = resp;
+      console.log(resp.id, posibles)
+      let opciones_multiples = posibles.map(quiz => {
         let body = {
           "respuestaid": resp.id,
-          "asignacionid":role.assingid,
-          "anotacion1": parseInt( userResp[id].A ) === parseInt(quiz.id) ? 1: 0, // + = A
-          "anotacion2":parseInt( userResp[id].B ) === parseInt(quiz.id) ? 1: 0,  // - = B
-          "anotacion3":0
+          "asignacionid": role.assingid,
+          "anotacion1": parseInt(userResp[id].A) === parseInt(quiz.id) ? 1 : 0, // + = A
+          "anotacion2": parseInt(userResp[id].B) === parseInt(quiz.id) ? 1 : 0,  // - = B
+          "anotacion3": 0
         }
         return body;
       })
@@ -93,7 +93,7 @@ export function Cleaver() {
     })
 
     let body = []
-    mapResponses.forEach( arr =>  arr.forEach(r => body.push(r)));
+    mapResponses.forEach(arr => arr.forEach(r => body.push(r)));
 
     let rest = new Service('/prueba/addrespuestas/opcionmultiple')
     rest.postQuery(body, auth.token)
@@ -112,31 +112,31 @@ export function Cleaver() {
   }
 
   const handleAddQuestion = () => {
-    let currentAnswer  = totalRespondidas[totalRespondidas.length - 1];
+    let currentAnswer = totalRespondidas[totalRespondidas.length - 1];
     let current_resp = cleaver.responses[currentAnswer.id];
 
-    if(!current_resp){
+    if (!current_resp) {
       return BadQuestion();
     }
-    if(parseInt( current_resp.A ) ===0 || parseInt( current_resp.B ) === 0){
+    if (parseInt(current_resp.A) === 0 || parseInt(current_resp.B) === 0) {
       return BadQuestion();
     }
-    const nextHiddenItem = totalPreguntas.filter(({id}) => id !== currentAnswer.id );
+    const nextHiddenItem = totalPreguntas.filter(({ id }) => id !== currentAnswer.id);
     if (nextHiddenItem) {
       setPreguntas(nextHiddenItem);
-      setCurrent(current+1);
+      setCurrent(current + 1);
       let temp = nextHiddenItem.shift()
-      setRespondidas([...totalRespondidas,temp]);
+      setRespondidas([...totalRespondidas, temp]);
     }
     CalculateProgress()
   };
 
   const handleRemoveQuestion = () => {
     let ultimaRespondida = totalRespondidas[totalRespondidas.length - 1];
-    setPreguntas([ultimaRespondida,...totalPreguntas]);
-    let current_without_last = totalRespondidas.filter(({id}) => id !== ultimaRespondida.id);
+    setPreguntas([ultimaRespondida, ...totalPreguntas]);
+    let current_without_last = totalRespondidas.filter(({ id }) => id !== ultimaRespondida.id);
     setRespondidas([...current_without_last]);
-    setCurrent(current - 1 )
+    setCurrent(current - 1)
     CalculateProgress()
   }
 
@@ -145,64 +145,64 @@ export function Cleaver() {
   return (
     <ThemeProvider theme={theme}>
       <div className="content-section question">
-        <div style={{marginTop : 35}}>
-          <LinearProgressWithLabel value={progress ? parseInt(progress) : 0 } />
+        <div style={{ marginTop: 35 }}>
+          <LinearProgressWithLabel value={progress ? parseInt(progress) : 0} />
         </div>
         <Box className="question_body">
-          {totalRespondidas.map((item,i) => (
-            <Question 
-              key={item.id} 
-              id={item.id} 
-              quiz={item} 
-              index={i} 
-              current={current} 
-              />)
+          {totalRespondidas.map((item, i) => (
+            <Question
+              key={item.id}
+              id={item.id}
+              quiz={item}
+              index={i}
+              current={current}
+            />)
           )}
         </Box>
 
         {
-        totalPreguntas.length > 0 ?
-          (
-            <div className="question_btn">
-              <Button
-                className="nextquestion_btn"
-                sx={{ backgroundColor: 'var(--main)' }}
-                variant="contained"
-                disabled={totalRespondidas.length <= 1}
-                onClick={handleRemoveQuestion}
-              >
-                Anterior
-              </Button>
-              <Button
-                className="nextquestion_btn"
-                sx={{ backgroundColor: 'var(--main)' }}
-                variant="contained"
-                disabled={totalPreguntas.length <= 0}
-                onClick={handleAddQuestion}
-              >
-                Siguiente
-              </Button>
-            </div>
-          ) : (
-
-            <div className="question_btn">
-              <Button
-                className="nextquestion_btn"
-                sx={{ backgroundColor: 'var(--main)' }}
-                variant="contained"
-                onClick={saveRespones}
-              >
-                Guardar
-              </Button>
-            </div>
-          )
-
-      }
+          totalPreguntas.length > 0 ?
+            (
+              <div className="question_btn">
+                <Button
+                  className="nextquestion_btn"
+                  sx={{ backgroundColor: 'var(--main)' }}
+                  variant="contained"
+                  disabled={totalRespondidas.length <= 1}
+                  onClick={handleRemoveQuestion}
+                >
+                  Anterior
+                </Button>
+                <Button
+                  className="nextquestion_btn"
+                  sx={{ backgroundColor: 'var(--main)' }}
+                  variant="contained"
+                  disabled={totalPreguntas.length <= 0}
+                  onClick={handleAddQuestion}
+                >
+                  Siguiente
+                </Button>
+              </div>
+            ) : (
+
+              <div className="question_btn">
+                <Button
+                  className="nextquestion_btn"
+                  sx={{ backgroundColor: 'var(--main)' }}
+                  variant="contained"
+                  onClick={saveRespones}
+                >
+                  Guardar
+                </Button>
+              </div>
+            )
+
+        }
         <Toaster position="bottom-right" />
         <Backdrop
           sx={{ color: '#fd4b4b', zIndex: (theme) => theme.zIndex.drawer + 1 }}
           open={open}
-          // onClick={()}
+        // onClick={()}
         >
           <CircularProgress color="inherit" />
         </Backdrop>

+ 3 - 2
src/Slices/userSlice.js

@@ -11,9 +11,10 @@ export const userSlice = createSlice({
     },
     setRole : (state, action ) => {
       state.role = Object.assign({}, state.role, action.payload);
-    }
+    },
+    getTestID : (state) => state.role.current_test_id
   }
 })
 
-export const { setProfile, setRole } = userSlice.actions;
+export const { setProfile, setRole, getTestID } = userSlice.actions;
 export default userSlice.reducer;

+ 1 - 2
src/Utils/MenuItems.js

@@ -6,7 +6,6 @@ import {
     AssignmentTurnedIn
 } from '@mui/icons-material'
 
-
 export const UserItems = [
     {
         icon : <Home/>,
@@ -20,7 +19,7 @@ export const UserItems = [
     },
     {
         icon : <Star/>,
-        route : 'prueba/:id',
+        route : 'prueba/:id' ,
         title : 'Test Actual'
     },
 ]