AutorÃa | Ultima modificación | Ver Log |
import React, { useState, useEffect } from "react";import Option from "../behavior/Option";const Competency = (props) => {// get propsconst { competency, backendVars, page, setPage, total, index } = props;//init statesconst [errors, setErrors] = useState([]);const [input, setInput] = useState(competency.answer);/*** Check if there are behaviors to answer* @returns*/const validateCompetency = () => {setErrors([]);let formValid = true;let messages = [];competency.behaviors.map((behavior) => {//Validate if the answer is emptyif (!behavior.answer || behavior.answer.length == 0) {messages.push(backendVars.LBL_ERROR_FIELDS_EMPTY);formValid = false;}});setErrors(messages);return formValid;}/*** Return to previous competency* @returns*/const handlePrevious = () => {setErrors([]);setPage(page - 1);};/*** Update competency answer* @param {*} value*/const handleAnswer = (value) => {setInput(value);competency.answer = value;}/*** Continue to the next competency*/const handleNext = () => validateCompetency() && setPage(page + 1);/*** componentDidMount*/useEffect(() => {setInput(competency.answer);}, [competency]);return (<div className="panel-group" hidden={page == index ? false : true}><div className="panel panel-default" id={`panel-${competency.competency_id}`}><div className="panel-heading"><h4 className="panel-title">{competency.type} {competency.name}</h4></div><div id={competency.competency_id} className="panel-collapse in collapse show"><div className="panel-body"><divdangerouslySetInnerHTML={{ __html: competency.description }}className="description"/>><div className="row"><div className="col-md-12 col-sm-12 col-xs-12 np-padding">{competency.behaviors.length > 0 &&<div className="col-md-12 col-sm-12 col-xs-12 np-padding">{competency.behaviors.map((behavior, i) => {return <Optionbehavior={behavior}key={i}handleAnswer={handleAnswer}/>})}</div>}</div></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 Competency;