<div class="row">
<div class="col-xs-12">
<table id="table_test_psicologico" class="table table-striped table-bordered table-hover">
<thead>
<tr>
<th style="width: 150px">
Tipo
</th>
<th>
Nombre
</th>
<th style="width: 130px">
Riesgo Bajo
</th>
<th style="width: 130px">
Riesgo Medio
</th>
<th style="width: 130px">
Riesgo Alto
</th>
<th style="width: 105px">
Tipo Pregunta
</th>
<th style="width: 75px">
Acciones
</th>
</tr>
</thead>
<tbody>
{% for sistemaId, sistema in preguntas %}
<tr id="S-{{ sistemaId }}" parentId="" data-tt-id="S-{{ sistemaId }}" data-tt-parent-id="">
<td>
SISTEMA
</td>
<td>
<input field="nombre" type="text" class="editable" value="{{ sistema.nombre }}" old_value="{{ sistema.nombre }}" style="width: 100%;">
</td>
<td colspan="4"></td>
<td>
<div class="pull-left action-buttons">
<nobr>
<a class="save save_sistema hide" href="">
<i class="fas fa-save blue bigger-150" title="Guardar"></i>
</a>
<a class="cancel hide" href="">
<i class="fas fa-ban red bigger-150" title="Cancelar"></i>
</a>
<a class="new_eje" href="">
<i class="fas fa-plus green bigger-150" title="Nuevo eje"></i>
</a>
<a class="delete delete_sistema" href="">
<i class="fas fa-trash red bigger-150" title="Eliminar"></i>
</a>
</nobr>
</div>
</td>
</tr>
{% if sistema.ejes is defined %}
{% for ejeId, eje in sistema.ejes %}
<tr id="E-{{ ejeId }}" parentId="S-{{ sistemaId }}" data-tt-id="E-{{ ejeId }}" data-tt-parent-id="S-{{ sistemaId }}">
<td>
EJE
</td>
<td>
<input field="nombre" type="text" class="editable" value="{{ eje.nombre }}" old_value="{{ eje.nombre }}" style="width: 100%;">
</td>
<td colspan="4"></td>
<td>
<div class="pull-left action-buttons">
<nobr>
<a class="save save_eje hide" href="">
<i class="fas fa-save blue bigger-150" title="Guardar"></i>
</a>
<a class="cancel hide" href="">
<i class="fas fa-ban red bigger-150" title="Cancelar"></i>
</a>
<a class="new_criterio" href="">
<i class="fas fa-plus green bigger-150" title="Nuevo criterio"></i>
</a>
<a class="delete delete_eje" href="">
<i class="fas fa-trash red bigger-150" title="Eliminar"></i>
</a>
</nobr>
</div>
</td>
</tr>
{% if eje.criterios is defined %}
{% for criterioId, criterio in eje.criterios %}
<tr id="C-{{ criterioId }}" parentId="E-{{ ejeId }}" data-tt-id="C-{{ criterioId }}" data-tt-parent-id="E-{{ ejeId }}">
<td>
CRITERIO
</td>
<td>
<input field="nombre" type="text" class="editable" value="{{ criterio.criterio.nombre }}" old_value="{{ criterio.criterio.nombre }}" style="width: 100%;">
</td>
<td>
<input field="riesgoBajoDesde" type="text" class="editable" style="width: 50px;" value="{{ criterio.criterio.riesgoBajoDesde }}" old_value="{{ criterio.criterio.riesgoBajoDesde }}"> a <input field="riesgoBajoHasta" type="text" class="editable" style="width: 50px;" value="{{ criterio.criterio.riesgoBajoHasta }}" old_value="{{ criterio.criterio.riesgoBajoHasta }}">
</td>
<td>
<input field="riesgoMedioDesde" type="text" class="editable" style="width: 50px;" value="{{ criterio.criterio.riesgoMedioDesde }}" old_value="{{ criterio.criterio.riesgoMedioDesde }}"> a <input field="riesgoMedioHasta" type="text" class="editable" style="width: 50px;" value="{{ criterio.criterio.riesgoMedioHasta }}" old_value="{{ criterio.criterio.riesgoMedioHasta }}">
</td>
<td>
<input field="riesgoAltoDesde" type="text" class="editable" style="width: 50px;" value="{{ criterio.criterio.riesgoAltoDesde }}" old_value="{{ criterio.criterio.riesgoAltoDesde }}"> a <input field="riesgoAltoHasta" type="text" class="editable" style="width: 50px;" value="{{ criterio.criterio.riesgoAltoHasta }}" old_value="{{ criterio.criterio.riesgoAltoHasta }}">
</td>
<td></td>
<td>
<div class="pull-left action-buttons">
<nobr>
<a class="save save_criterio hide" href="">
<i class="fas fa-save blue bigger-150" title="Guardar"></i>
</a>
<a class="cancel hide" href="">
<i class="fas fa-ban red bigger-150" title="Cancelar"></i>
</a>
<a class="new_pregunta" href="">
<i class="fas fa-plus green bigger-150" title="Nueva pregunta"></i>
</a>
<a class="delete delete_criterio" href="">
<i class="fas fa-trash red bigger-150" title="Eliminar"></i>
</a>
</nobr>
</div>
</td>
</tr>
{% if criterio.preguntas is defined %}
{% for pregunta in criterio.preguntas %}
<tr id="P-{{ pregunta.id }}" parentId="C-{{ criterioId }}" data-tt-id="P-{{ pregunta.id }}" data-tt-parent-id="C-{{ criterioId }}">
<td>
PREGUNTA
</td>
<td>
<input field="nombre" type="text" class="editable" value="{{ pregunta.nombre }}" old_value="{{ pregunta.nombre }}" style="width: 100%;">
</td>
<td colspan="3"></td>
<td>
<select field="tipo" class="editable" style="width: 100%" old_value="{{ pregunta.tipo }}">
<option value="directo" {% if pregunta.tipo=='directo' %}selected="true"{% endif %}>Directa</option>
<option value="inverso" {% if pregunta.tipo=='inverso' %}selected="true"{% endif %}>Inversa</option>
</select>
</td>
<td>
<div class="pull-left action-buttons">
<nobr>
<a class="save save_pregunta hide" href="">
<i class="fas fa-save blue bigger-150" title="Guardar"></i>
</a>
<a class="cancel hide" href="">
<i class="fas fa-ban red bigger-150" title="Cancelar"></i>
</a>
<a class="delete delete_pregunta" href="">
<i class="fas fa-trash red bigger-150" title="Eliminar"></i>
</a>
</nobr>
</div>
</td>
</tr>
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
{% endfor%}
</tbody>
</table>
</div>
</div>
<script type="text/javascript">
var nuevoSistema = {{ maxSistema + 1 }};
var nuevoEje = {{ maxEje + 1 }};
var nuevoCriterio = {{ maxCriterio + 1 }};
var nuevaPregunta = {{ maxPregunta + 1 }};
$(function()
{
$('input.editable').keyup(function(){
editableChange(this);
});
$('select.editable').change(function(){
editableChange(this);
});
$('.save').click(function(e){
e.preventDefault();
clickSave(this);
});
$('.cancel').click(function(e){
e.preventDefault();
clickCancel(this);
});
$('.delete').click(function(e){
e.preventDefault();
clickDelete(this);
});
$('.new_eje').click(function(e){
e.preventDefault();
clickNewEje(this);
});
$('.new_criterio').click(function(e){
e.preventDefault();
clickNewCriterio(this);
});
$('.new_pregunta').click(function(e){
e.preventDefault();
clickNewPregunta(this);
});
});
function clickSave(elemento)
{
var tr = $(elemento).parents('tr');
tr.find('.alert').remove();
var trId = tr.attr('id');
var trParentId = tr.attr('parentId');
$('#form_save_id').val(trId);
$('#form_save_parent').val(trParentId);
tr.find('.editable').each(function(){
var field = $(this).attr('field');
$('#form_save_'+field).val($(this).val());
});
tr.mask(' Guardaando...');
$('#form_save').ajaxSubmit({
type: $('form_save').attr('method'),
url: $('form_save').attr('action'),
dataType: 'json',
data: { _xml_http_request: true },
success: function(result) {
var tr = $('#'+result.id);
tr.unmask();
if (!result.ok)
{
var s = $('#save_alert').prop("outerHTML");
tr.find("td").eq(1).prepend(s);
}
else
{
if (result.newElement)
{
tr.attr('id', result.newId);
$("tr[parentId='"+result.id+"']").attr('parentId', result.newId);
}
tr.find('.save').addClass('hide');
tr.find('.cancel').addClass('hide');
}
}
})
}
function clickCancel(elemento)
{
var tr = $(elemento).parents('tr');
tr.find('.editable').each(function(){
$(this).val($(this).attr('old_value'));
});
tr.find('.save').addClass('hide');
tr.find('.cancel').addClass('hide');
tr.find('.alert').remove();
}
function clickDelete(elemento)
{
var tr = $(elemento).parents('tr');
tr.find('.alert').remove();
var trId = tr.attr('id');
var nTrId = trId.replace('N-', '');
if (trId == nTrId) //No era uno nuevo. Hay que borrar de la bd
{
tr.mask(' Eliminando...');
if ($(elemento).hasClass('delete_sistema'))
{
deleteTestElement('sistema', trId);
}
else
if ($(elemento).hasClass('delete_eje'))
{
deleteTestElement('eje', trId);
}
else
if ($(elemento).hasClass('delete_criterio'))
{
deleteTestElement('criterio', trId);
}
else
{
deleteTestElement('pregunta', trId);
}
}
else
{
trId = tr.attr('data-tt-id');
$('#table_test_psicologico').treetable('removeNode', trId);
}
}
function editableChange(elemento)
{
var tr = $(elemento).parents('tr');
tr.find('.save').removeClass('hide');
tr.find('.cancel').removeClass('hide');
}
function clickNewEje(elemento)
{
var tr = $(elemento).parents('tr');
var sistemaPadreId = tr.attr('data-tt-id');
var s = $('#N-E-NUEVO-EJE').prop("outerHTML");
s=s.replaceAll('PARENT-ID', sistemaPadreId);
s=s.replaceAll('NUEVO-EJE', nuevoEje);
var node = $("#table_test_psicologico").treetable("node", sistemaPadreId);
$("#table_test_psicologico").treetable("loadBranch", node, s);
bindButtons('N-E-'+nuevoEje);
nuevoEje++;
}
function clickNewCriterio(elemento)
{
var tr = $(elemento).parents('tr');
var ejePadreId = tr.attr('data-tt-id');
var s = $('#N-C-NUEVO-CRITERIO').prop("outerHTML");
s=s.replaceAll('PARENT-ID', ejePadreId);
s=s.replaceAll('NUEVO-CRITERIO', nuevoCriterio);
var node = $("#table_test_psicologico").treetable("node", ejePadreId);
$("#table_test_psicologico").treetable("loadBranch", node, s);
bindButtons('N-C-'+nuevoCriterio);
nuevoCriterio++;
}
function clickNewPregunta(elemento)
{
var tr = $(elemento).parents('tr');
var criterioPadreId = tr.attr('data-tt-id');
var s = $('#N-P-NUEVA-PREGUNTA').prop("outerHTML");
s=s.replaceAll('PARENT-ID', criterioPadreId);
s=s.replaceAll('NUEVA-PREGUNTA', nuevaPregunta);
var node = $("#table_test_psicologico").treetable("node", criterioPadreId);
$("#table_test_psicologico").treetable("loadBranch", node, s);
bindButtons('N-P-'+nuevaPregunta);
nuevaPregunta++;
}
function bindButtons(trId)
{
$('#'+trId).find('.save').click(function(e){
e.preventDefault();
clickSave(this);
});
$('#'+trId).find('.cancel').click(function(e){
e.preventDefault();
clickCancel(this);
});
$('#'+trId).find('.delete').click(function(e){
e.preventDefault();
clickDelete(this);
});
$('#'+trId).find('input.editable').keyup(function(){
editableChange(this);
});
$('#'+trId).find('select.editable').change(function(){
editableChange(this);
});
$('#'+trId).find('.new_eje').click(function(e){
e.preventDefault();
clickNewEje(this);
});
$('#'+trId).find('.new_criterio').click(function(e){
e.preventDefault();
clickNewCriterio(this);
});
$('#'+trId).find('.new_pregunta').click(function(e){
e.preventDefault();
clickNewPregunta(this);
});
}
function deleteTestElement(tipo, id)
{
var url = "{{ path('delete_test_element', {'tipo': '__TIPO__', 'id': '__ID__'}) }}";
url=url.replace('__TIPO__', tipo);
url=url.replace('__ID__', id);
$.getJSON(url , function(result){
var tr = $('#'+result.id);
if (!result.ok)
{
var s = $('#delete_alert').prop("outerHTML");
tr.unmask();
tr.find("td").eq(1).prepend(s);
}
else
{
var data_tt_id = tr.attr('data-tt-id');
$('#table_test_psicologico').treetable('removeNode', data_tt_id );
}
});
}
</script>