{% extends 'base.html.twig' %}
{% block title %}- Ver la Evaluación{% endblock %}
{% block stylesheets %}
{{ parent() }}
<link href="{{ asset('libraries/css/questions.css?v=4') }}" rel="stylesheet" type="text/css">
{% endblock %}
{% block body %}
<div class="row">
<div id="myStudent" class='col-sm-9 mt-5' style="margin: auto; font-size: 1.5em;" data-studentid="{{ student.id }}">
Estudiante: <span style="color: #990000;"><b>{{ student }}</b></span>
</div>
<div class='col-sm-9' style="margin: auto;">
<hr>
<div class="row">
<div class='col-sm-2 center'>
Curso: <br> <b>{{ module.level.course }}</b>
</div>
<div id="myModule" class='col-sm-2 center' data-moduleid="{{ module.id }}">
Nombre del Módulo: <br> <b>{{ module }}</b>
</div>
<div class='col-sm-2 center'>
Nivel: <br> <b>{{ module.level.name }}</b>
</div>
<div class='col-sm-2 center'>
Puntaje Mínimo: <br> <b>{{ module.scoreMinimun }}</b>
</div>
<div class='col-sm-2 center' id="myEvaluation" data-evaluationid="{{ evaluation.id }}">
Puntaje Obtenido: <br> <b><span id="evaluationScore">{{ evaluation.score }}</span></b>
</div>
</div>
</div>
</div>
<div class="row">
{# iterar las respuestas #}
<div id="content-questions" class='col-sm-9' style="margin: auto;">
<hr>
{% for answer in evaluationAnswer %}
<div class="col-sm-12">
<div class="pregresp" data-question="1" data-score="1">
<div class="question mb-2">
<div class="row">
<div class="col-5 col-sm-5 col-md-4 col-lg-3 col-xl-2">
<b>Pregunta: </b>
</div>
<div class="col-7 col-sm-8 col-md-8 col-lg-9 col-xl-10">
{{ answer.question|nl2br }}
</div>
</div>
</div>
<div class="answers">
<div class="row">
{% if answer.rightAnswer != 'text' and answer.rightAnswer != 'audio' %}
<div class="col-12 mb-2">
<div class="row">
<div class="col-5 col-sm-5 col-md-4 col-lg-3 col-xl-2">
<span>Respuesta Correcta: </span>
</div>
<div class="col-7 col-sm-7 col-md-8 col-lg-9 col-xl-10">
<span>{{ answer.rightAnswer }}</span>
</div>
</div>
</div>
{% endif %}
{# Validar que la pregunta se abierta #}
{% if answer.answerType == 'opened' %}
{% if answer.rightAnswer == 'audio' %}
<div class="col-12">
<div class="row mt-2 mb-2">
<div class="col-5 col-sm-5 col-md-4 col-lg-3 col-xl-2">
<span>Puntaje máximo: </span>
</div>
<div class="col-7 col-sm-8 col-md-8 col-lg-9 col-xl-10">
<span>{{ answer.points }}</span>
<div class="tooltip">?<span class="tooltiptext">Esta pregunta vale <b>{{ answer.points }}</b> puntos</span></div>
</div>
</div>
</div>
{# si es una pregunta tipo AUDIO se exponen 5 campos para calificacion del docente #}
<div class="col-12 mb-2">
<div class="row postRevision" data-answer='{{ answer.id }}' data-maxpoint='{{ answer.points }}'>
{% if answer.answerGiven %}
<div class="col-12 center">
<audio controls>
<source src="{{ answer.answerGiven }}">
</audio>
</div>
{% else %}
<div class="col-12 bold center mt-3 mb-3">
<span>No se encontró una respuesta</span>
</div>
{% endif %}
{% if not answer.isChecked %}
<div class="col-sm-12 center mb-2 text-primary">
<b><i>Cada habilidad se califica con máximo 20%</i></b>
</div>
<div class="col-sm-3 col-md-2 form-group center">
<label>Fluidez <i class="fa fa-spinner fa-spin fa-fw" style="display: none;"></i></label>
<div class="tooltip">?<span class="tooltiptext">Cada habilidad se califica con máximo 20%</span></div>
<input type="number" class="form-control center" step="1" min="0" max="20" data-revisionid='0' data-maxscore="20" data-observation='Fluidez' data-audio="1" value="0" data-toggle="tooltip" data-placement="top" title="Tooltip on top">
<div class="invalid-feedback validate">Max 20%</div>
</div>
<div class="col-sm-3 col-md-2 form-group center">
<label>Estructura <i class="fa fa-spinner fa-spin fa-fw" style="display: none;"></i></label>
<div class="tooltip">?<span class="tooltiptext">Cada habilidad se califica con máximo 20%</span></div>
<input type="number" class="form-control center" step="1" min="0" max="20" data-revisionid='0' data-maxscore="20" data-observation='Estructura' data-audio="1" value="0">
<div class="invalid-feedback validate">Max 20%</div>
</div>
<div class="col-sm-3 col-md-2 form-group center">
<label>Coherencia <i class="fa fa-spinner fa-spin fa-fw" style="display: none;"></i></label>
<div class="tooltip">?<span class="tooltiptext">Cada habilidad se califica con máximo 20%</span></div>
<input type="number" class="form-control center" step="1" min="0" max="20" data-revisionid='0' data-maxscore="20" data-observation='Coherencia' data-audio="1" value="0">
<div class="invalid-feedback validate">Max 20%</div>
</div>
<div class="col-sm-3 col-md-2 form-group center">
<label>Vocabulario <i class="fa fa-spinner fa-spin fa-fw" style="display: none;"></i></label>
<div class="tooltip">?<span class="tooltiptext">Cada habilidad se califica con máximo 20%</span></div>
<input type="number" class="form-control center" step="1" min="0" max="20" data-revisionid='0' data-maxscore="20" data-observation='Vocabulario' data-audio="1" value="0">
<div class="invalid-feedback validate">Max 20%</div>
</div>
<div class="col-sm-3 col-md-2 form-group center">
<label>Pronunciación <i class="fa fa-spinner fa-spin fa-fw" style="display: none;"></i></label>
<div class="tooltip">?<span class="tooltiptext">Cada habilidad se califica con máximo 20%</span></div>
<input type="number" class="form-control center" step="1" min="0" max="20" data-revisionid='0' data-maxscore="20" data-observation='Pronunciación' data-audio="1" value="0">
<div class="invalid-feedback validate">Max 20%</div>
</div>
{% endif %}
</div>
</div>
{% elseif answer.rightAnswer == 'text' %}
<div class="col-12 mb-2">
<div class="row">
<div class="col-5 col-sm-5 col-md-4 col-lg-3 col-xl-2">
<span>Puntaje máximo: </span>
</div>
<div class="col-7 col-sm-8 col-md-8 col-lg-9 col-xl-10">
<span><b>{{ answer.points }}</b></span>
<div class="tooltip">?<span class="tooltiptext">Esta pregunta vale <b>{{ answer.points }}</b> puntos</span></div>
</div>
</div>
</div>
<div class="col-12 mb-2">
<div class="row">
<div class="col-5 col-sm-5 col-md-4 col-lg-3 col-xl-2">
<span>Respuesta Dada: </span>
</div>
<div class="col-7 col-sm-7 col-md-8 col-lg-9 col-xl-10">
<div class="answTextGiven">
<span>{{ answer.answerGiven|nl2br }}</span>
</div>
</div>
</div>
{% if not answer.isChecked %}
<div class="row postRevision" data-answer='{{ answer.id }}'>
<div class="col-5 col-sm-5 col-md-4 col-lg-3 col-xl-2">
<label>Calificación</label>
</div>
<div class="col-4 col-sm-3 col-md-2 form-group">
{% set step = answer.isDecimals(answer.points)? 0.1 : 1 %}
<input type="number" class="form-control center" step="{{ step }}" min="0" max="{{ answer.points }}" data-revisionid='0' data-maxscore="{{ answer.points }}" data-observation='Vocabulario' value="0">
<div class="invalid-feedback validate center">La calificación no debe ser mayor a {{ answer.points }} pt</div>
</div>
</div>
{% endif %}
</div>
{% endif %}
{% else %}
<div class="col-12 mb-2">
<div class="row">
<div class="col-5 col-sm-5 col-md-4 col-lg-3 col-xl-2">
<span>Respuesta Dada: </span>
</div>
<div class="col-7 col-sm-7 col-md-8 col-lg-9 col-xl-10">
<span>{{ answer.answerGiven }}</span>
</div>
</div>
</div>
{% endif %}
<div class="col-12">
{% set redColor = '#00ec36' %}
{% if answer.score == 0 %}
{% set redColor = '#ffd8db' %}
{% endif %}
<div class="row">
<div class="col-5 col-sm-5 col-md-4 col-lg-3 col-xl-2">
<span>Puntaje Obtenido: </span>
</div>
<div class="col-7 col-sm-7 col-md-8 col-lg-9 col-xl-10">
<span class="answerScore" style="background-color: {{ redColor }}">{{ answer.score }}</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
<div class="row">
<div class="col-12 center" style="margin-bottom: 100px;">
<hr>
{% if evaluation.status == 'FINISHED' %}
<button id="btnGoBack" class="btn btn-primary"><i class="fa fa-arrow-left" aria-hidden="true"></i> Go back</button>
{% elseif evaluation.status == 'IN_PROCESS' %}
<button id="btnCloseEvaluation" class="btn btn-primary"><i class="fa fa-floppy-o" aria-hidden="true"></i> Submit grade</button>
{% endif %}
</div>
</div>
{% endblock body %}
{% block add2body %}
<div id="preloaderView">
<div style="position: absolute; top: 18%; left: 0%; width: 100%; text-align: center;">
<img src="/libraries/images/logo-1.png" style="">
</div>
<div class="spinner-border text-primary" style="position: fixed; top: 40%; left: 48%;"></div>
<div id="message" class="center" style="position: absolute; top: 55%; width: 100%;">Loading test...</div>
</div>
<div id="closeEvaluation" class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="center modal-title wdFull">Saving Answers</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<p class="center" style="font-size: 15pt;">
We have saved the answers <br> Thanks Teacher!!!
</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">Aceptar</button>
</div>
</div>
</div>
</div>
{% endblock add2body %}
{% block javascripts %}
{{ parent() }}
<script>
document.onreadystatechange = function () {
var state = document.readyState
if (state == 'complete') {
setTimeout(function(){
$('#preloaderView').animate({opacity: 0}, 1000, function () {
$('#preloaderView').hide();
$('#preloaderView').css({opacity: 1});
});
}, 800);
}
};
$(document).ready(function () {
$('.postRevision input').focusin(function () {
$(this).select();
});
$('.postRevision input').change(function () {
let myVal = $(this).val();
// mostrar alerta si el valor ingresado el mayor al permitido
if($(this).data('maxscore') < myVal) {
$(this).val('0');
$(this).closest('div').find('div.validate').show();
return;
}
$(this).closest('div').find('div.validate').hide();
let answerId = $(this).closest('div.postRevision').data('answer');
let isAudio = $(this).data('audio');
if(isAudio == 1) {
let mxpoint = $(this).closest('div.postRevision').data('maxpoint');
myVal = myVal * mxpoint / 100;
}
let data = {
scoreVal: myVal,
observation: $(this).data('observation'),
maxscore: $(this).data('maxscore'),
revisionid: $(this).data('revisionid'),
answerId: answerId
};
savePostRevision(data, $(this));
let arrInputs = $(this).closest('div.postRevision').find('input');
let sumInputs = 0;
arrInputs.each(function(i, o) {
let inputVal = ($(o).val() * 1);
if($(o).data('audio') == 1) {
let mxpoint = $(o).closest('div.postRevision').data('maxpoint');
inputVal = inputVal * mxpoint / 100;
}
sumInputs += inputVal;
});
let mycolor = '#ffd8db';
if(sumInputs > 0) {
mycolor = '#00ec36';
}
// mostrar el puntaje dado
$(this).closest('.answers').find('span.answerScore').text(sumInputs).css('background-color', mycolor);
});
$('#btnGoBack').click(function() {
history.back();
});
$('#btnCloseEvaluation').click(function() {
$('#preloaderView #message').text('Sendig the grade...');
$('#preloaderView').show();
// cambiar de estado la evaluacion y calificar los ponderados por habilidad
let data = {
evaluationId: $('#myEvaluation').data('evaluationid'),
studentId: $('#myStudent').data('studentid'),
moduleId: $('#myModule').data('moduleid')
};
$.ajax({
method: 'post', url: '{{ path('teacher_close_evaluation') }}', data: data,
success: function (data) {
// mostrar mensaje para cerrar la pagina
$('#preloaderView #message').text('Data was sent. Thanks');
setTimeout(function(){
$('#preloaderView').animate({opacity: 0}, 1000, function() {
$('#closeEvaluation').modal('show');
$('#preloaderView').hide();
});
}, 2000);
}
});
});
$('#closeEvaluation').on('hide.bs.modal', function (e) {
// redirigir a la pagina dashboard del estudiante
var studentID = $('#myStudent').data('studentid');
window.location.href = "/admin/student/modules/" + studentID;
});
function savePostRevision(data, objInput) {
$(objInput).prop("disabled", true);
let sibSpiner = $(objInput).closest('div').find('i.fa-spinner');
$(sibSpiner).show();
$.ajax({
method: 'post', url: '{{ path('teacher_save_post_revision') }}', data: data,
success: function (data) {
$(objInput).data('revisionid', data.revisionid);
$('#evaluationScore').text(data.evaluationScore);
$(objInput).prop( "disabled", false);
$(sibSpiner).hide();
}
});
}
});
</script>
{% endblock javascripts %}