Rev 449 | Rev 470 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useState, useEffect } from "react";import { axios } from '../../../utils';import Section from "./section/Section";import Spinner from "../../../shared/loading-spinner/Spinner";const Test = (props) => {//init statesconst [success, setSuccess] = useState(false);const [page, setPage] = useState(0);// get propsconst { backendVars, test, loading, setTest, action } = props;/*** Send form data*/const handleSubmit = async () => {//init form dataconst formData = new FormData();let status = validateForm() ? 'p' : 'd';formData.append("content", JSON.stringify(test.content));formData.append("status", status );console.log(test.content);await axios.post(action, formData).then((response) => {if (response.data.success && validateForm()) {setSuccess(true);}});}/*** Check if there are questions to answer* @returns*/const validateForm = () => {let formValid = true;test.content.map((section) => {section.questions.map((question) => {//Validate if the answer is emptyif (!question.answer || question.answer.length == 0) {formValid = false;}})})return formValid;}/*** Cancel test and send to the list of forms* @returns*/const handleGoBack = () => {setTest(null);setSuccess(false)}/*** componentDidMount*/useEffect(() => {setPage(0);}, [action]);return (<div>{loading ? (<div className="row"><Spinner /></div>) : (<div>{!success ? (<div className="row test-section"><div className="col-md-12 col-sm-12 col-xs-12"><div className="company-title"><div className="section_admin_title_buttons"><h1 className="title">{test.name}</h1></div></div><divdangerouslySetInnerHTML={{ __html: test.text }}className="description company-title"></div></div>{test.content.length <= 0 ? (<div className="col-md-12 col-sm-12 col-xs-12 text-center">{backendVars.LBL_DATATABLE_SZERORECORDS}</div>) : (<div className="col-md-12 col-sm-12 col-xs-12"><div className="company-title">{test.content.map((section, key) => {return (<Sectionsection={section}index={key}page={page}setPage={setPage}total={test.content.length}backendVars={backendVars}/>)})}</div></div>)}<div className="col-md-12 col-sm-12 col-xs-12 text-right"><div className="company-title"><buttontype="button"className="btn btn-secondary"onClick={() => handleGoBack()}>{backendVars.LBL_GO_BACK}</button><buttontype="buttton"className="btn btn-primary"onClick={() => handleSubmit()}>{backendVars.LBL_SAVE}</button></div></div></div>) : (<div className="row"><div class="company-title text-center"><div class="section_admin_title_buttons"><h1 class="title">{backendVars.LBL_SUCCESS_SELF_EVALUATION}</h1></div></div><div className="col-md-12 col-sm-12 col-xs-12 text-center"><br /><buttonclassName="btn btn-sm btn-primary"onClick={() => handleGoBack()}>{backendVars.LBL_GO_BACK}</button></div></div>)}</div>)}</div>)}export default Test;