functions.js
3.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
$(function () {
//Agregamos los criterios de categorizacion
$('#tablaCriteriosCategorizacion tbody').sortable({
stop: rellenarOrden
});
console.log(criteriosSeleccionados);
for(var i in criteriosSeleccionados) {
agregarFilaCriterioCategorizacion(criteriosSeleccionados[i]['caracteristicaSeleccionada'], criteriosSeleccionados[i]['valorCaracteristicaSeleccionado'], criteriosSeleccionados[i]['tipoSeleccionado']);
}
$('button[name="agregarCriterio"]').click(function() {
agregarFilaCriterioCategorizacion();
});
});
/**
* Pone valor al input de orden.
*/
function rellenarOrden() {
var orden = 0;
$('#tablaCriteriosCategorizacion input[name*="orden"]').each(function() {
$(this).val(orden);
orden++;
});
}
/**
* Agrega una fila de categorizacion en la tabla.
* @param {int} caracteristicaSeleccionada
* @param {int} valorCaracteristicaSeleccionado
* @param {int} tipoSeleccionado
*/
function agregarFilaCriterioCategorizacion(caracteristicaSeleccionada, valorCaracteristicaSeleccionado, tipoSeleccionado) {
var indice = -1;
$('#tablaCriteriosCategorizacion').find('td:first-child').children('select[name^="categorizacion"]').each(function() {
var nombreTemp = $(this).attr('name').split('[');
var indiceTemp = nombreTemp[1].substr(0, nombreTemp[1].length - 1);
if(indiceTemp > indice) {
indice = indiceTemp;
}
});
indice++;
var html = '<tr>';
html += '<td>' + generarSelectCategorizacion('caracteristicaSeleccionada', indice, caracteristicasFormateadas, caracteristicaSeleccionada) + '</td>';
html += '<td>' + generarSelectCategorizacion('valorCaracteristicaSeleccionado', indice, (typeof valoresCaracteristicaFormateados[caracteristicaSeleccionada] !== 'undefined' ? valoresCaracteristicaFormateados[caracteristicaSeleccionada] : { 0: '- Seleccione uno -' }), valorCaracteristicaSeleccionado) + '</td>';
html += '<td>' + generarSelectCategorizacion('tipoSeleccionado', indice, tiposFormateados, tipoSeleccionado) + '</td>';
html += '<td><input type="hidden" name="categorizacion[' + indice + '][orden]" value=""/> <input class="btn btn-default" type="button" name="eliminarFilaCriterioCategorizacion" value="-"/></td>';
html += '</tr>';
var fila = $(html);
//Eliminar fila
fila.find('input[name="eliminarFilaCriterioCategorizacion"]').click(function() {
$(this).parent().parent().remove();
});
//Modificar el select de valores
fila.find('select[name*="caracteristicaSeleccionada"]').change(function() {
var parent = fila.find('select[name*="valorCaracteristicaSeleccionado"]').parent();
var nombreTemp = $(this).attr('name').split('[');
var indiceTemp = nombreTemp[1].substr(0, nombreTemp[1].length - 1);
fila.find('select[name*="valorCaracteristicaSeleccionado"]').remove();
parent.append(generarSelectCategorizacion('valorCaracteristicaSeleccionado', indiceTemp, (typeof valoresCaracteristicaFormateados[$(this).val()] !== 'undefined' ? valoresCaracteristicaFormateados[$(this).val()] : { 0: '- Seleccione uno -' })));
});
$('#tablaCriteriosCategorizacion tbody').append(fila);
rellenarOrden();
}
/**
* Devuelve un select generado con los datos.
* @param {String} nombre
* @param {int} indice
* @param {Object} datos
* @param {String} seleccionado
* @returns {String}
*/
function generarSelectCategorizacion(nombre, indice, datos, seleccionado) {
var html = '<select name="categorizacion[' + indice + '][' + nombre + ']">';
for (var value in datos) {
html += '<option value="' + value + '" ' + (value == seleccionado ? 'selected="selected"' : '') + '>' + datos[value] + '</option>';
}
html += '</select>';
return html;
}