$(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 = ''; html += '' + generarSelectCategorizacion('caracteristicaSeleccionada', indice, caracteristicasFormateadas, caracteristicaSeleccionada) + ''; html += '' + generarSelectCategorizacion('valorCaracteristicaSeleccionado', indice, (typeof valoresCaracteristicaFormateados[caracteristicaSeleccionada] !== 'undefined' ? valoresCaracteristicaFormateados[caracteristicaSeleccionada] : { 0: '- Seleccione uno -' }), valorCaracteristicaSeleccionado) + ''; html += '' + generarSelectCategorizacion('tipoSeleccionado', indice, tiposFormateados, tipoSeleccionado) + ''; html += ' '; html += ''; 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 = ''; return html; }