Rev 561 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useState } from "react";import Question from "../question/Question";const Section = (props) => {// get propsconst { section, backendVars, page, setPage, total, index } = props;//init statesconst [errors, setErrors] = useState([]);/*** Check if there are questions to answer* @returns*/const validateSection = () => {setErrors([]);let formValid = true;let messages = [];section.questions.map((question) => {//Validate if the answer is emptyif (!question.answer || question.answer.length == 0) {// set error messagemessages.push(backendVars.LBL_EMPTY_ANSWER.replace('%n', question.position + 1));formValid = false;}});setErrors(messages);return formValid;}/*** Return to previous section* @returns*/const handlePrevious = () => {setErrors([]);setPage(page - 1);};/*** Continue to the next section*/const handleNext = () => validateSection() && setPage(page + 1);return (<div className="panel-group" hidden={page == index ? false : true}><div className="panel panel-default" id={`panel-${section.slug_section}`}><div className="panel-heading"><h4 className="panel-title">{section.name}</h4></div><div id={section.slug_section} className="panel-collapse in collapse show"><div className="panel-body"><divdangerouslySetInnerHTML={{ __html: section.text }}className="description"/><div className="row">{section.questions.map((question, i) => {return <Questionquestion={question}key={i}backendVars={backendVars}/>;})}</div><div className="row">{errors.length > 0 &&<div className="col-md-12 np-padding">{errors.map((error, index) => {return (<div className="alert alert-danger alert-dismissible fade show" role="alert" key={index}>{error}<button type="button" className="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button></div>);})}</div>}<div className="col-md-12 np-padding"><ul className="wizard"><li className="previous">{index != 0 &&<buttontype="button"className="btn btn-secondary"onClick={() => handlePrevious()}>{backendVars.LBL_EVALUATION_TEST_FORM_PREVIOUS}</button>}</li><li className="next">{index != total - 1 &&<buttontype="button"onClick={() => handleNext()}className="btn btn-secondary">{backendVars.LBL_EVALUATION_TEST_FORM_NEXT}</button>}</li></ul></div></div></div></div></div></div>)}export default Section;