diff --git a/app/View/Cita/add_multiple.ctp b/app/View/Cita/add_multiple.ctp index 77fa9875..069e9d42 100755 --- a/app/View/Cita/add_multiple.ctp +++ b/app/View/Cita/add_multiple.ctp @@ -8,6 +8,7 @@ $this->set('title_for_layout', 'Nueva cita múltiple'); $this->Html->css(array( 'datatables-bootstrap', '/plugin/jquery-timepicker-1.3.5/jquery.timepicker.min.css', + '/plugin/summernote-0.8.16-dist/summernote.min.css', 'Cita/add_multiple' ), null, array('inline' => false)); @@ -22,6 +23,8 @@ $this->Html->script(array( '/plugin/jquery-timepicker-1.3.5/jquery.timepicker.min.js', 'datatables-bootstrap', '/plugin/bootbox/bootbox.min', + '/plugin/summernote-0.8.16-dist/summernote.min.js', + '/plugin/summernote-0.8.16-dist/lang/summernote-es-ES.min.js', 'common/Especie/funciones', 'common/Lugar/funciones', 'common/Cita/funciones', @@ -230,7 +233,6 @@ $this->end(); - @@ -262,10 +264,299 @@ $this->end(); -element('Especie/nuevaFilaEspecie'); ?> + -element('Especie/editarFilaEspecie'); ?> + element('Lugar/seleccionarLugar'); ?> diff --git a/app/View/Elements/Especie/editarFilaEspecie.ctp b/app/View/Elements/Especie/editarFilaEspecie.ctp deleted file mode 100755 index 5c8c5830..00000000 --- a/app/View/Elements/Especie/editarFilaEspecie.ctp +++ /dev/null @@ -1,165 +0,0 @@ -Html->css(array( - 'Elements/Especie/filaEspecie' -), null, array('inline' => false)); - -/** - * Javascript - */ -$this->Html->script(array( - 'Elements/Especie/filaEspecie', - 'Elements/Especie/editarFilaEspecie' -), array('inline' => false)); - -?> - - diff --git a/app/View/Elements/Especie/nuevaFilaEspecie.ctp b/app/View/Elements/Especie/nuevaFilaEspecie.ctp deleted file mode 100755 index 7b408577..00000000 --- a/app/View/Elements/Especie/nuevaFilaEspecie.ctp +++ /dev/null @@ -1,179 +0,0 @@ -Html->css(array( - '/plugin/summernote-0.8.16-dist/summernote.min.css', - 'Elements/Especie/filaEspecie' -), null, array('inline' => false)); - -/** - * Javascript - */ -$this->Html->script(array( - '/plugin/summernote-0.8.16-dist/summernote.min.js', - '/plugin/summernote-0.8.16-dist/lang/summernote-es-ES.min.js', - 'Elements/Especie/filaEspecie', - 'Elements/Especie/nuevaFilaEspecie' -), array('inline' => false)); - -?> - - - - diff --git a/app/webroot/css/Cita/add_multiple.css b/app/webroot/css/Cita/add_multiple.css index 5e7f1949..c284912f 100755 --- a/app/webroot/css/Cita/add_multiple.css +++ b/app/webroot/css/Cita/add_multiple.css @@ -36,3 +36,13 @@ .control-label { font-weight: bold; } + +#modalNuevaEspecie .modal-body, +#modalEditarEspecie .modal-body { + height: 430px; +} + +#modalNuevaEspecie .modal-body textarea, +#modalEditarEspecie .modal-body textarea { + width: 560px; +} diff --git a/app/webroot/css/Elements/Especie/filaEspecie.css b/app/webroot/css/Elements/Especie/filaEspecie.css deleted file mode 100755 index da7595ef..00000000 --- a/app/webroot/css/Elements/Especie/filaEspecie.css +++ /dev/null @@ -1,9 +0,0 @@ -#modalNuevaEspecie .modal-body, -#modalEditarEspecie .modal-body { - height: 430px; -} - -#modalNuevaEspecie .modal-body textarea, -#modalEditarEspecie .modal-body textarea { - width: 560px; -} \ No newline at end of file diff --git a/app/webroot/js/Cita/add_multiple.js b/app/webroot/js/Cita/add_multiple.js index cbb62add..151d0c73 100755 --- a/app/webroot/js/Cita/add_multiple.js +++ b/app/webroot/js/Cita/add_multiple.js @@ -1,231 +1,572 @@ -/** - * - */ - $(document).ready(function () { - var $divNuevaCitaMultiple = $('#divNuevaCitaMultiple'); + var $divNuevaCitaMultiple = $('#divNuevaCitaMultiple'); - /** - * CRITERIOS GENERALES - */ + /** + * CRITERIOS GENERALES + */ - // Seleccionar fecha - seleccionarFecha($divNuevaCitaMultiple); + // Seleccionar fecha + seleccionarFecha($divNuevaCitaMultiple); // Seleccionar hora de alta seleccionarHora($divNuevaCitaMultiple); - // Seleccionar lugar - seleccionarLugar($divNuevaCitaMultiple); - - // Vaciar lugar - $divNuevaCitaMultiple.find(".btnVaciarLugar").click(function () { - vaciarLugarSeleccioando($divNuevaCitaMultiple) - }); - - // Nuevo lugar - $divNuevaCitaMultiple.find(".btnNuevoLugar").click(function() { - limpiarFormularioLugar(); - $('#modalNuevoLugar').modal(); - }); - - // Seleccionar observador - seleccionarObservador($divNuevaCitaMultiple); - - // Nuevo colaborador - $divNuevaCitaMultiple.find(".btnNuevoColaborador").click(function() { - limpiarNuevoColaborador(); - $('#divNuevoColaborador').modal(); - }); - - // Seleccionar colaborador - seleccionarColaboradores($divNuevaCitaMultiple); - - // Limpiar colaboradores seleccioandos - $divNuevaCitaMultiple.find("#btnVaciarColaboradores").click(function () { - limpiarColaboradores($divNuevaCitaMultiple); - }); - - // Popup ayuda - $divNuevaCitaMultiple.find('.badge-info').popover(); - - // Insertar especie - $divNuevaCitaMultiple.find("#btnInsertarEspecie").click(function() { - limpiarFormularioEspecie(); - var $modalNuevaEspecie = $('#modalNuevaEspecie'); - $modalNuevaEspecie.modal(); - - $modalNuevaEspecie.on('shown', function () { - $modalNuevaEspecie.find('.modal-body').scrollTop(0); - }); - }); - - /* INICIO Validación de formulario */ - jQuery.validator.addMethod("isdate", function (value, element) { - var validDate = /^(\d{2})\/(\d{2})\/(\d{4})?$/; - return validDate.test(value) - }); - jQuery.validator.addMethod("validarEspecie", function (value, element) { - return $divNuevaCitaMultiple.find("input[name$='[especie_id]']").length > 0; - }, "Debe insertar al menos una especie."); - - jQuery.validator.addMethod("validarLugar", function (value, element) { - return $("#lugarId").val() != ""; - }, "Debe seleccionar un lugar."); - - jQuery.validator.addMethod("validarObservador", function (value, element) { - return $("#observadoresSeleccionados").val() != ""; - }, "Debe seleccionar al menos un observador."); - - jQuery.validator.addMethod("dateBeforeOrEqualToday", function (value, element) { - - var fechaAlta = $.datepicker.parseDate("dd/mm/yy", value); - var now = new Date(); - - return (fechaAlta < now || fechaAlta == now); - }, "Debe introducir una fecha de alta anterior o igual a la fecha de hoy."); - - $divNuevaCitaMultiple.find('#frmNuevaCitaMultiple').validate({ - rules: { - "data[Cita][fechaAlta]": { - required: true, - date: false, - isdate: true, - dateBeforeOrEqualToday: true - }, - lugar: { - validarLugar: true - }, - observadores: { - validarObservador: true - }, - hdnEspecies: { - validarEspecie: true - } - }, - messages: { - "data[Cita][fechaAlta]": { - required: "Debe seleccionar una fecha de alta.", - date: "Debe introducir una fecha de alta con formato correcto (dd/mm/aaaa)." - } - }, - ignore: [], - errorContainer: "#errorMessages", - errorLabelContainer: "#errorMessages ul", - wrapper: "li", - invalidHandler: function (event, validator) { - $('html, body').animate({scrollTop: 0}, 'slow'); - }, - onfocusout: false - }); - /* FIN Validación de formulario */ - - /* INICIO guardar */ - $divNuevaCitaMultiple.find("#btnGuardar").click(function () { - - if ($divNuevaCitaMultiple.find('#frmNuevaCitaMultiple').valid()) { - - var especies = [], - lugarId = $("#lugarId").val(), - fechaAlta = $("#fechaAlta").val(), - items = []; - - $divNuevaCitaMultiple.find("input[name$='[especie_id]']").each(function () { - if ($(this).val() !== '') { - especies.push($(this).val()); - } - }); - especies = especies.join(','); - - $.ajax({ - url: "/cita/existenCitas", - data: {"especies": especies, "lugarId": lugarId, "fechaAlta": fechaAlta}, - dataType: "json", - success: function (response) { - - if (response.status === 0 && response.citasSimilares === false) { - items = []; - items.push("
"); - items.push("alert icon"); - items.push("Ya has creado previamente alguna cita para la misma fecha y lugar de alguna de las especies introducidas."); - items.push("
"); - - bootbox.alert(items.join(""), "Aceptar"); - } else if(response.status == 0 && response.citasSimilares.length > 0) { - - items.push("

Ya existen citas en " + response.citasSimilares[0].Lugar.nombre + " del día " + response.citasSimilares[0].Cita.fechaAlta + " de:

"); - items.push("
"); - items.push(""); - items.push(""); - for (var i = 0; i < response.citasSimilares.length; i++) { - var citaSimilar = response.citasSimilares[i]; - items.push(""); - } - items.push("
EspecieObservadorNúmero individuos
" + citaSimilar.Especie.nombreComun + "" + citaSimilar.ObservadorPrincipal.codigo + ' - ' + citaSimilar.ObservadorPrincipal.nombre + "" + citaSimilar.Cita.cantidad + "
"); - items.push("
"); - items.push("

¿Estás seguro de que deseas crear estas nuevas citas?

"); - - bootbox.confirm(items.join(""), "Cancelar", "Aceptar", function (result) { - if (result) { - validarRarezaCitaMultiple(especies); - } - }); - } else { - validarRarezaCitaMultiple(especies); - } - } - }); - } - }); - /* FIN guardar */ + // Seleccionar lugar + seleccionarLugar($divNuevaCitaMultiple); + + // Vaciar lugar + $divNuevaCitaMultiple.find(".btnVaciarLugar").click(function () { + vaciarLugarSeleccioando($divNuevaCitaMultiple) + }); + + // Nuevo lugar + $divNuevaCitaMultiple.find(".btnNuevoLugar").click(function () { + limpiarFormularioLugar(); + $('#modalNuevoLugar').modal(); + }); + + // Seleccionar observador + seleccionarObservador($divNuevaCitaMultiple); + + // Nuevo colaborador + $divNuevaCitaMultiple.find(".btnNuevoColaborador").click(function () { + limpiarNuevoColaborador(); + $('#divNuevoColaborador').modal(); + }); + + // Seleccionar colaborador + seleccionarColaboradores($divNuevaCitaMultiple); + + // Limpiar colaboradores seleccioandos + $divNuevaCitaMultiple.find("#btnVaciarColaboradores").click(function () { + limpiarColaboradores($divNuevaCitaMultiple); + }); + + // Popup ayuda + $divNuevaCitaMultiple.find('.badge-info').popover(); + + // Insertar especie + $divNuevaCitaMultiple.find("#btnInsertarEspecie").click(function () { + limpiarFormularioEspecie(); + var $modalNuevaEspecie = $('#modalNuevaEspecie'); + $modalNuevaEspecie.modal(); + + $modalNuevaEspecie.on('shown', function () { + $modalNuevaEspecie.find('.modal-body').scrollTop(0); + }); + }); + + /* INICIO Validación de formulario */ + jQuery.validator.addMethod("isdate", function (value, element) { + var validDate = /^(\d{2})\/(\d{2})\/(\d{4})?$/; + return validDate.test(value) + }); + jQuery.validator.addMethod("validarEspecie", function (value, element) { + return $divNuevaCitaMultiple.find("input[name$='[especie_id]']").length > 0; + }, "Debe insertar al menos una especie."); + + jQuery.validator.addMethod("validarLugar", function (value, element) { + return $("#lugarId").val() != ""; + }, "Debe seleccionar un lugar."); + + jQuery.validator.addMethod("validarObservador", function (value, element) { + return $("#observadoresSeleccionados").val() != ""; + }, "Debe seleccionar al menos un observador."); + + jQuery.validator.addMethod("dateBeforeOrEqualToday", function (value, element) { + + var fechaAlta = $.datepicker.parseDate("dd/mm/yy", value); + var now = new Date(); + + return (fechaAlta < now || fechaAlta == now); + }, "Debe introducir una fecha de alta anterior o igual a la fecha de hoy."); + + $divNuevaCitaMultiple.find('#frmNuevaCitaMultiple').validate({ + rules: { + "data[Cita][fechaAlta]": { + required: true, + date: false, + isdate: true, + dateBeforeOrEqualToday: true + }, + lugar: { + validarLugar: true + }, + observadores: { + validarObservador: true + }, + hdnEspecies: { + validarEspecie: true + } + }, + messages: { + "data[Cita][fechaAlta]": { + required: "Debe seleccionar una fecha de alta.", + date: "Debe introducir una fecha de alta con formato correcto (dd/mm/aaaa)." + } + }, + ignore: [], + errorContainer: "#errorMessages", + errorLabelContainer: "#errorMessages ul", + wrapper: "li", + invalidHandler: function (event, validator) { + $('html, body').animate({scrollTop: 0}, 'slow'); + }, + onfocusout: false + }); + /* FIN Validación de formulario */ + + /* INICIO guardar */ + $divNuevaCitaMultiple.find("#btnGuardar").click(function () { + + if ($divNuevaCitaMultiple.find('#frmNuevaCitaMultiple').valid()) { + + var especies = [], + lugarId = $("#lugarId").val(), + fechaAlta = $("#fechaAlta").val(), + items = []; + + $divNuevaCitaMultiple.find("input[name$='[especie_id]']").each(function () { + if ($(this).val() !== '') { + especies.push($(this).val()); + } + }); + especies = especies.join(','); + + $.ajax({ + url: "/cita/existenCitas", + data: {"especies": especies, "lugarId": lugarId, "fechaAlta": fechaAlta}, + dataType: "json", + success: function (response) { + + if (response.status === 0 && response.citasSimilares === false) { + items = []; + items.push("
"); + items.push("alert icon"); + items.push("Ya has creado previamente alguna cita para la misma fecha y lugar de alguna de las especies introducidas."); + items.push("
"); + + bootbox.alert(items.join(""), "Aceptar"); + } else if (response.status == 0 && response.citasSimilares.length > 0) { + + items.push("

Ya existen citas en " + response.citasSimilares[0].Lugar.nombre + " del día " + response.citasSimilares[0].Cita.fechaAlta + " de:

"); + items.push("
"); + items.push(""); + items.push(""); + for (var i = 0; i < response.citasSimilares.length; i++) { + var citaSimilar = response.citasSimilares[i]; + items.push(""); + } + items.push("
EspecieObservadorNúmero individuos
" + citaSimilar.Especie.nombreComun + "" + citaSimilar.ObservadorPrincipal.codigo + ' - ' + citaSimilar.ObservadorPrincipal.nombre + "" + citaSimilar.Cita.cantidad + "
"); + items.push("
"); + items.push("

¿Estás seguro de que deseas crear estas nuevas citas?

"); + + bootbox.confirm(items.join(""), "Cancelar", "Aceptar", function (result) { + if (result) { + validarRarezaCitaMultiple(especies); + } + }); + } else { + validarRarezaCitaMultiple(especies); + } + } + }); + } + }); + /* FIN guardar */ + + var richTextEditorSettings = { + toolbar: [ + ['style', ['style']], + ['font', ['bold', 'underline', 'clear']], + // ['fontname', ['fontname']], + ['color', ['color']], + ['para', ['ul', 'ol'/*, 'paragraph'*/]], + // ['table', ['table']], + ['insert', ['link'/*, 'picture'*/]], + // ['view', ['fullscreen', 'codeview']], + ], + lang: 'es-ES', // default: 'en-US' + dialogsInBody: false, + dialogsFade: true // Add fade effect on dialogs + }; + + /***********************/ + /* Editar file especie */ + /***********************/ + var $divEditarEspecie = $('#modalEditarEspecie'); + + // Seleccionar especie + seleccionarEspecie($divEditarEspecie); + + // Limpiar especie + $divEditarEspecie.find(".btnVaciarEspecie").click(function () { + limpiarEspecie($divEditarEspecie); + }); + + // Seleccionar subespecie + seleccionarSubespecie($divEditarEspecie); + + // Gestioanr tabla de clases de edad/sexo */ + gestionarTablaNumeroAves($divEditarEspecie); + + // Resaltar checks seleccioandos + marcarChecksSeleccioandos($divEditarEspecie); + + $divEditarEspecie.find('.btn-aceptar-editar-especie').click(function () { + validarFormularioEspecie($divEditarEspecie, $divEditarEspecie.find('.frmEditarEspecie'), + 'errorMessagesEditarEspecie', $(this).attr('data-fila')); + }); + + // Popup ayuda + $divEditarEspecie.find('.badge-info').popover(); + + // Rich editor para las observaciones + $divEditarEspecie.find('.observaciones').summernote(richTextEditorSettings); + $divEditarEspecie.find('.note-modal').remove() + + /*****************/ + /* Nueva especie */ + /*****************/ + var $divNuevaEspecie = $('#modalNuevaEspecie'); + + // Seleccionar especie + seleccionarEspecie($divNuevaEspecie); + + // Limpiar especie + $divNuevaEspecie.find(".btnVaciarEspecie").click(function () { + limpiarEspecie($divNuevaEspecie); + }); + + // Seleccionar subespecie + seleccionarSubespecie($divNuevaEspecie); + + // Gestioanr tabla de clases de edad/sexo + gestionarTablaNumeroAves($divNuevaEspecie); + + // Resaltar checks seleccioandos + marcarChecksSeleccioandos($divNuevaEspecie); + + $divNuevaEspecie.find('.btn-aceptar-nueva-especie').click(function () { + validarFormularioEspecie($divNuevaEspecie, $divNuevaEspecie.find('.frmNuevaEspecie'), + 'errorMessagesNuevaEspecie'); + }); + + // Popup ayuda + $divNuevaEspecie.find('.badge-info').popover(); + + // Rich editor para las observaciones + $divNuevaEspecie.find('.observaciones').summernote(richTextEditorSettings); + $divNuevaEspecie.find('.note-modal').remove() }); -function validarRarezaCitaMultiple(especies) -{ - var items = []; - - $.ajax({ - url: "/especie/sonRarezas", - data: {"especies": especies}, - success: function (indEsRareza) { - - if (indEsRareza == 1) { - items = []; - items.push("
"); - items.push("alert icon"); - items.push("Alguna de las especies que has introducido es una RAREZA NACIONAL."); - items.push("
"); - items.push("
"); - items.push("Para homologar esta cita debes seguir "); - items.push("estas instrucciones."); - - bootbox.confirm(items.join(""), "Cancelar", "Continuar", function (result) { - if (result) { - $("#frmNuevaCitaMultiple").submit(); - } - }); - } else if (indEsRareza == 2) { - items = []; - items.push("
"); - items.push("alert icon"); - items.push("Alguna de las especies que has introducido es una RAREZA LOCAL."); - items.push("
"); - items.push("
"); - items.push("Debido a la importancia de la cita, por favor, envíanos un correo electrónico a "); - items.push("anuario@sao.albacete.org, "); - items.push("describíendo con detalle el avistamiento y ampliando toda la información posible."); - items.push("
"); - items.push("Es importante que adjuntes fotografías aunque sean de mala calidad para apoyar la identificación de la especie."); - - bootbox.confirm(items.join(""), "Cancelar", "Continuar", function (result) { - if (result) { - $("#frmNuevaCitaMultiple").submit(); - } - }); - } else { - $("#frmNuevaCitaMultiple").submit(); - } - } - }); +function validarRarezaCitaMultiple(especies) { + var items = []; + + $.ajax({ + url: "/especie/sonRarezas", + data: {"especies": especies}, + success: function (indEsRareza) { + + if (indEsRareza == 1) { + items = []; + items.push("
"); + items.push("alert icon"); + items.push("Alguna de las especies que has introducido es una RAREZA NACIONAL."); + items.push("
"); + items.push("
"); + items.push("Para homologar esta cita debes seguir "); + items.push("estas instrucciones."); + + bootbox.confirm(items.join(""), "Cancelar", "Continuar", function (result) { + if (result) { + $("#frmNuevaCitaMultiple").submit(); + } + }); + } else if (indEsRareza == 2) { + items = []; + items.push("
"); + items.push("alert icon"); + items.push("Alguna de las especies que has introducido es una RAREZA LOCAL."); + items.push("
"); + items.push("
"); + items.push("Debido a la importancia de la cita, por favor, envíanos un correo electrónico a "); + items.push("anuario@sao.albacete.org, "); + items.push("describíendo con detalle el avistamiento y ampliando toda la información posible."); + items.push("
"); + items.push("Es importante que adjuntes fotografías aunque sean de mala calidad para apoyar la identificación de la especie."); + + bootbox.confirm(items.join(""), "Cancelar", "Continuar", function (result) { + if (result) { + $("#frmNuevaCitaMultiple").submit(); + } + }); + } else { + $("#frmNuevaCitaMultiple").submit(); + } + } + }); +} + +/** + * Valida los datos introducidos en el formulario de especie y si son correctos, + * añade una nueva fila, si no, muestra los errores de validación + */ +function validarFormularioEspecie($div, $formulario, errorContainer, numeroFila) { + jQuery.validator.addMethod("validarEspeciePopup", function (value, element) { + return $div.find(".especieId").val() != ""; + }, "Debe seleccionar una especie."); + + jQuery.validator.addMethod("validarNumeroAves", function (value, element) { + var total_numero_aves = 0; + $div.find(".numero_aves").each(function () { + total_numero_aves += parseInt($(this).val()); + }); + return total_numero_aves > 0; + }, "El número de aves debe ser mayor que cero."); + + $formulario.validate({ + rules: { + especie: { + validarEspeciePopup: true + }, + "data[claseEdadSexo][][4]": { + validarNumeroAves: true + }, + "data[Cita][clase_reproduccion_id]": { + required: true + } + }, + messages: { + "data[Cita][clase_reproduccion_id]": { + required: "Debe seleccionar un dato de reproducción." + } + }, + errorContainer: "#" + errorContainer, + errorLabelContainer: "#" + errorContainer + " ul", + wrapper: "li", + onfocusout: false + }); + + if ($formulario.valid()) { + + if (numeroFila) { + eliminarFilaEspecie(numeroFila); + } + insertarFilaEspecie($div, numeroFila); + + ordenarTablaEspecies(document.getElementById("tablaEspecies").tBodies[0], 0, 1); + + $div.modal('hide'); + } +} + +/** + * Inserta una nueva fila en la tabla de especies y sus hiddens correspondientes + * @param $div + * @param fila + */ +function insertarFilaEspecie($div, fila) { + var $tablaEspecies = $('#tablaEspecies'), + $indHabitatRaro = $div.find(".indHabitatRaro").is(":checked"), + $indCriaHabitatRaro = $div.find(".indCriaHabitatRaro").is(":checked"), + $indHerido = $div.find(".indHerido").is(":checked"), + $indComportamiento = $div.find(".indComportamiento").is(":checked"), + numeroFila = fila ? fila : $tablaEspecies.find('tbody tr').length, + $formulario = $('#frmNuevaCitaMultiple'); + + // Insertar fila en la tabla de especies + content = []; + content.push(''); + content.push('' + $div.find(".especie").val() + ' ' + $div.find(".subespecie").val() + ''); + content.push('' + $div.find(".totalNumeroAves").val() + ''); + content.push('' + $div.find(".datosReproduccion option:selected").text() + ''); + content.push('' + ($indHabitatRaro ? 'Sí' : 'No') + ''); + content.push('' + ($indCriaHabitatRaro ? 'Sí' : 'No') + ''); + content.push('' + ($indHerido ? 'Sí' : 'No') + ''); + content.push('' + ($indComportamiento ? 'Sí' : 'No') + ''); + // content.push('' + $div.find(".observaciones ").val() + ''); + content.push(insertarBotonesFila(numeroFila)); + content.push(''); + $tablaEspecies.find('tbody').append(content.join()); + + // Insertar hiddens en el formulario de envio + $formulario.append(''); + $formulario.append(''); + $formulario.append(''); + $formulario.append(''); + + // Numero de aves + $formulario.append(''); + $div.find(".numero_aves").each(function () { + if ($(this).val() != "0" && $(this).val() != "") { + $formulario.append(''); + } + }); + + $formulario.append(''); + $formulario.append(''); + $formulario.append(''); + $formulario.append(''); + $formulario.append(''); +} + +/** + * Elimina la fila indicada por el número recibido por parametro de la tabla de especies + * + * @param numeroFila + */ +function eliminarFilaEspecie(numeroFila) { + // Eliminamos la fila de la tabla + $("#fila" + numeroFila).remove(); + + // Eliminamos los hiddens relacionados + $('input[name^="data[Especie][' + numeroFila + ']"]').remove(); +} + +/** + * Genera los botones de acciones de cada fila de la tabla de especies + * + * @param numeroFila + * @returns {string} + */ +function insertarBotonesFila(numeroFila) { + var columnaBotones = ''; + + columnaBotones += ''; + columnaBotones += "Eliminar especie"; + columnaBotones += '  '; + columnaBotones += "Editar especie"; + columnaBotones += ''; + + return columnaBotones; +} + +/** + * Ordena las filas de la tabla de especies + * + * @param tbody + * @param col + * @param asc + */ +function ordenarTablaEspecies(tbody, col, asc) { + + var rows = tbody.rows, + row, + rlen = rows.length, + arr = [], + i, + j, + cells, + clen; + + // fill the array with values from the table + for (i = 0; i < rlen; i++) { + cells = rows[i].cells; + clen = cells.length; + arr[i] = []; + arr[i][0] = rows[i].getAttribute('id'); + for (j = 0; j < clen; j++) { + arr[i][j + 1] = cells[j].innerHTML; + } + } + + // sort the array by the specified column number (col) and order (asc) + col++; + arr.sort(function (a, b) { + return (a[col] == b[col]) ? 0 : ((a[col] > b[col]) ? asc : -1 * asc); + }); + for (i = 0; i < rlen; i++) { + row = ""; + arr[i].shift(); + row += "" + arr[i].join("") + ""; + row += ""; + arr[i] = row; + } + tbody.innerHTML = arr.join(" "); +} + +/** + * Muestra el popup de edición de especie cargando los datos rellenados hasta el momento + * @param numeroFila + */ +function editarFilaEspecie(numeroFila) { + $div = $('#modalEditarEspecie'); + + $div.find('.especieId').val($('input[name="data[Especie][' + numeroFila + '][especie_id]"]').val()); + $div.find('.especie').val($('input[name="data[Especie][' + numeroFila + '][especie]"]').val()); + $div.find(".especieSeleccionadaContenedor").show(); + $div.find(".especieSeleccionada").text($div.find('.especie').val()); + + $div.find('.subespecie').val($('input[name="data[Especie][' + numeroFila + '][subespecie]"]').val()); + $div.find('.subespecie').attr('disabled', false); + $div.find(".subespecieSeleccionadaContenedor").show(); + $div.find(".subespecieSeleccionada").text($div.find('.subespecie').val()); + + $div.find('.datosReproduccion').val($('input[name="data[Especie][' + numeroFila + '][clase_reproduccion_id]"]').val()); + $div.find('.totalNumeroAves').val($('input[name="data[Especie][' + numeroFila + '][cantidad]"]').val()); + $div.find(".numeroTotalAvesDiv").show(); + $div.find(".numeroTotalAvesTexto").text($div.find('.totalNumeroAves').val()); + + $div.find('.numero_aves').each(function () { + $(this).val(0); + }); + $('input[name^="data[Especie][' + numeroFila + '][claseEdadSexo]"]').each(function () { + $div.find('input[data-id="' + $(this).attr('data-id') + '"]').val($(this).val()); + }); + + $div.find('.indHabitatRaro').prop('checked', ($('input[name="data[Especie][' + numeroFila + '][indHabitatRaro]"]').val() != "0")); + $div.find('.indCriaHabitatRaro').prop('checked', $('input[name="data[Especie][' + numeroFila + '][indCriaHabitatRaro]"]').val() != "0"); + $div.find('.indHerido').prop('checked', $('input[name="data[Especie][' + numeroFila + '][indHerido]"]').val() != "0"); + $div.find('.indComportamiento').prop('checked', $('input[name="data[Especie][' + numeroFila + '][indComportamiento]"]').val() != "0"); + + $div.find('.observaciones').val($('input[name="data[Especie][' + numeroFila + '][observaciones]"]').val()); + $div.find('.observaciones').summernote("code", $div.find('.observaciones').val()); + + // Resaltar los checks seleccioandos + $div.find("input[type=checkbox]").each(function () { + if ($(this).is(":checked")) { + $(this).parent().addClass("text-success"); + $(this).parent().css("font-weight", "bold"); + } else { + $(this).parent().removeClass("text-success"); + $(this).parent().css("font-weight", "normal"); + } + }); + + // Añadimos el numero de fila al botón aceptar + $div.find('.btn-aceptar-editar-especie').attr('data-fila', numeroFila); + + $div.modal(); +} + +/** + * Limpia el formulario de especie + */ +function limpiarFormularioEspecie() { + var $divNuevaEspecie = $('#modalNuevaEspecie'); + + limpiarEspecie($divNuevaEspecie); + + $divNuevaEspecie.find("input[type=checkbox]").each(function () { + $(this).prop('checked', false); + $(this).parent().removeClass("text-success"); + $(this).parent().css("font-weight", "normal"); + }); + + $divNuevaEspecie.find(".numero_aves").each(function () { + $(this).val(0); + }); + + $divNuevaEspecie.find('.observaciones').val(''); + $divNuevaEspecie.find('.observaciones').summernote('reset'); + $divNuevaEspecie.find('.note-modal').remove(); + + $divNuevaEspecie.find('.datosReproduccion').val(11); + + $divNuevaEspecie.find(".totalNumeroAves").val(0); + + $divNuevaEspecie.find(".numeroTotalAvesDiv").hide(); + $divNuevaEspecie.find(".numeroTotalAvesTexto").text(0); } diff --git a/app/webroot/js/Elements/Especie/editarFilaEspecie.js b/app/webroot/js/Elements/Especie/editarFilaEspecie.js deleted file mode 100755 index 3a315e05..00000000 --- a/app/webroot/js/Elements/Especie/editarFilaEspecie.js +++ /dev/null @@ -1,102 +0,0 @@ -$(document).ready(function () { - - var $divEditarEspecie = $('#modalEditarEspecie'); - - // Seleccionar especie - seleccionarEspecie($divEditarEspecie); - - // Limpiar especie - $divEditarEspecie.find(".btnVaciarEspecie").click(function() { - limpiarEspecie($divEditarEspecie); - }); - - // Seleccionar subespecie - seleccionarSubespecie($divEditarEspecie); - - // Gestioanr tabla de clases de edad/sexo */ - gestionarTablaNumeroAves($divEditarEspecie); - - // Resaltar checks seleccioandos - marcarChecksSeleccioandos($divEditarEspecie); - - $divEditarEspecie.find('.btnAceptar').click(function() { - validarFormularioEspecie($divEditarEspecie, 'errorMessagesEditarEspecie', $(this).attr('data-fila')); - }); - - // Popup ayuda - $divEditarEspecie.find('.badge-info').popover(); - - // Rich editor para las observaciones - $divEditarEspecie.find('.observaciones').summernote({ - toolbar: [ - ['style', ['style']], - ['font', ['bold', 'underline', 'clear']], - // ['fontname', ['fontname']], - ['color', ['color']], - ['para', ['ul', 'ol'/*, 'paragraph'*/]], - // ['table', ['table']], - ['insert', ['link'/*, 'picture'*/]], - // ['view', ['fullscreen', 'codeview']], - ], - lang: 'es-ES', // default: 'en-US' - dialogsInBody: false, - dialogsFade: true // Add fade effect on dialogs - }); - $divEditarEspecie.find('.note-modal').remove() -}); - -/** - * Muestra el popup de edición de especie cargando los datos rellenados hasta el momento - * @param numeroFila - */ -function editarFilaEspecie(numeroFila) -{ - $div = $('#modalEditarEspecie'); - - $div.find('.especieId').val($('input[name="data[Especie][' + numeroFila + '][especie_id]"]').val()); - $div.find('.especie').val($('input[name="data[Especie][' + numeroFila + '][especie]"]').val()); - $div.find(".especieSeleccionadaContenedor").show(); - $div.find(".especieSeleccionada").text($div.find('.especie').val()); - - $div.find('.subespecie').val($('input[name="data[Especie][' + numeroFila + '][subespecie]"]').val()); - $div.find('.subespecie').attr('disabled', false); - $div.find(".subespecieSeleccionadaContenedor").show(); - $div.find(".subespecieSeleccionada").text($div.find('.subespecie').val()); - - $div.find('.datosReproduccion').val($('input[name="data[Especie][' + numeroFila + '][clase_reproduccion_id]"]').val()); - $div.find('.totalNumeroAves').val($('input[name="data[Especie][' + numeroFila + '][cantidad]"]').val()); - $div.find(".numeroTotalAvesDiv").show(); - $div.find(".numeroTotalAvesTexto").text($div.find('.totalNumeroAves').val()); - - $div.find('.numero_aves').each(function(){ - $(this).val(0); - }); - $('input[name^="data[Especie][' + numeroFila + '][claseEdadSexo]"]').each(function(){ - $div.find('input[data-id="' + $(this).attr('data-id') + '"]').val($(this).val()); - }); - - $div.find('.indHabitatRaro').prop('checked', ($('input[name="data[Especie][' + numeroFila + '][indHabitatRaro]"]').val() != "0")); - $div.find('.indCriaHabitatRaro').prop('checked', $('input[name="data[Especie][' + numeroFila + '][indCriaHabitatRaro]"]').val() != "0"); - $div.find('.indHerido').prop('checked', $('input[name="data[Especie][' + numeroFila + '][indHerido]"]').val() != "0"); - $div.find('.indComportamiento').prop('checked', $('input[name="data[Especie][' + numeroFila + '][indComportamiento]"]').val() != "0"); - - $div.find('.observaciones').val($('input[name="data[Especie][' + numeroFila + '][observaciones]"]').val()); - $div.find('.observaciones').summernote("code", $div.find('.observaciones').val()); - - // Resaltar los checks seleccioandos - $div.find("input[type=checkbox]").each(function() { - if($(this).is(":checked")) { - $(this).parent().addClass("text-success"); - $(this).parent().css("font-weight", "bold"); - } - else { - $(this).parent().removeClass("text-success"); - $(this).parent().css("font-weight", "normal"); - } - }); - - // Añadimos el numero de fila al botón aceptar - $div.find('.btnAceptar').attr('data-fila', numeroFila); - - $div.modal(); -} diff --git a/app/webroot/js/Elements/Especie/filaEspecie.js b/app/webroot/js/Elements/Especie/filaEspecie.js deleted file mode 100755 index 44622b39..00000000 --- a/app/webroot/js/Elements/Especie/filaEspecie.js +++ /dev/null @@ -1,187 +0,0 @@ -/** - * Valida los datos introducidos en el formulario de especie y si son correctos, - * añade una nueva fila, si no, muestra los errores de validación - * - * @param $div - * @param errorContainer - * @param numeroFila - */ -function validarFormularioEspecie($div, errorContainer, numeroFila) -{ - var $formulario = $div.find('.frmEspecie'); - - jQuery.validator.addMethod("validarEspecie", function(value, element) { - return $div.find(".especieId").val() != ""; - }, "Debe seleccionar una especie."); - - jQuery.validator.addMethod("validarNumeroAves", function(value, element) { - var total_numero_aves = 0; - $div.find(".numero_aves").each(function(){ - total_numero_aves += parseInt($(this).val()); - }); - return total_numero_aves > 0; - }, "El número de aves debe ser mayor que cero."); - - $formulario.validate({ - rules: { - especie: { - validarEspecie: true - }, - "data[claseEdadSexo][][4]": { - validarNumeroAves: true - }, - "data[Cita][clase_reproduccion_id]" : { - required: true - } - }, - messages: { - "data[Cita][clase_reproduccion_id]" : { - required: "Debe seleccionar un dato de reproducción." - } - }, - errorContainer: "#" + errorContainer, - errorLabelContainer : "#" + errorContainer + " ul", - wrapper: "li", - onfocusout: false - }); - - if ($formulario.valid()) { - - if (numeroFila) { - eliminarFilaEspecie(numeroFila); - } - insertarFilaEspecie($div, numeroFila); - - ordenarTablaEspecies(document.getElementById("tablaEspecies").tBodies[0], 0, 1); - - $div.modal('hide'); - } -} - -/** - * Inserta una nueva fila en la tabla de especies y sus hiddens correspondientes - * @param $div - * @param fila - */ -function insertarFilaEspecie($div, fila) -{ - var $tablaEspecies = $('#tablaEspecies'), - $indHabitatRaro = $div.find(".indHabitatRaro").is(":checked"), - $indCriaHabitatRaro = $div.find(".indCriaHabitatRaro").is(":checked"), - $indHerido = $div.find(".indHerido").is(":checked"), - $indComportamiento = $div.find(".indComportamiento").is(":checked"), - numeroFila = fila ? fila : $tablaEspecies.find('tbody tr').length, - $formulario = $('#frmNuevaCitaMultiple'); - - // Insertar fila en la tabla de especies - content = []; - content.push(''); - content.push('' + $div.find(".especie").val() + ' ' + $div.find(".subespecie").val() + ''); - content.push('' + $div.find(".totalNumeroAves").val() + ''); - content.push('' + $div.find(".datosReproduccion option:selected").text() + ''); - content.push('' + ($indHabitatRaro ? 'Sí' : 'No') + ''); - content.push('' + ($indCriaHabitatRaro ? 'Sí' : 'No') + ''); - content.push('' + ($indHerido ? 'Sí' : 'No') + ''); - content.push('' + ($indComportamiento ? 'Sí' : 'No') + ''); - // content.push('' + $div.find(".observaciones ").val() + ''); - content.push(insertarBotonesFila(numeroFila)); - content.push(''); - $tablaEspecies.find('tbody').append(content.join()); - - // Insertar hiddens en el formulario de envio - $formulario.append(''); - $formulario.append(''); - $formulario.append(''); - $formulario.append(''); - - // Numero de aves - $formulario.append(''); - $div.find(".numero_aves").each(function(){ - if($(this).val() != "0" && $(this).val() != "") { - $formulario.append(''); - } - }); - - $formulario.append(''); - $formulario.append(''); - $formulario.append(''); - $formulario.append(''); - $formulario.append(''); -} - -/** - * Elimina la fila indicada por el número recibido por parametro de la tabla de especies - * - * @param numeroFila - */ -function eliminarFilaEspecie(numeroFila) -{ - // Eliminamos la fila de la tabla - $("#fila" + numeroFila).remove(); - - // Eliminamos los hiddens relacionados - $('input[name^="data[Especie][' + numeroFila + ']"]').remove(); -} - -/** - * Genera los botones de acciones de cada fila de la tabla de especies - * - * @param numeroFila - * @returns {string} - */ -function insertarBotonesFila(numeroFila) -{ - var columnaBotones = ''; - - columnaBotones += ''; - columnaBotones += "Eliminar especie"; - columnaBotones += '  '; - columnaBotones += "Editar especie"; - columnaBotones += ''; - - return columnaBotones; -} - -/** - * Ordena las filas de la tabla de especies - * - * @param tbody - * @param col - * @param asc - */ -function ordenarTablaEspecies(tbody, col, asc){ - - var rows = tbody.rows, - row, - rlen = rows.length, - arr = [], - i, - j, - cells, - clen; - - // fill the array with values from the table - for (i = 0; i < rlen; i++) { - cells = rows[i].cells; - clen = cells.length; - arr[i] = []; - arr[i][0] = rows[i].getAttribute('id'); - for (j = 0; j < clen; j++) { - arr[i][j + 1] = cells[j].innerHTML; - } - } - - // sort the array by the specified column number (col) and order (asc) - col++; - arr.sort(function(a, b){ - return (a[col] == b[col]) ? 0 : ((a[col] > b[col]) ? asc : -1*asc); - }); - for(i = 0; i < rlen; i++){ - row = ""; - arr[i].shift(); - row += ""+arr[i].join("")+""; - row += ""; - arr[i] = row; - } - tbody.innerHTML = arr.join(" "); -} diff --git a/app/webroot/js/Elements/Especie/nuevaFilaEspecie.js b/app/webroot/js/Elements/Especie/nuevaFilaEspecie.js deleted file mode 100755 index 06a78b5f..00000000 --- a/app/webroot/js/Elements/Especie/nuevaFilaEspecie.js +++ /dev/null @@ -1,77 +0,0 @@ -$(document).ready(function () { - - var $divNuevaEspecie = $('#modalNuevaEspecie'); - - // Seleccionar especie - seleccionarEspecie($divNuevaEspecie); - - // Limpiar especie - $divNuevaEspecie.find(".btnVaciarEspecie").click(function() { - limpiarEspecie($divNuevaEspecie); - }); - - // Seleccionar subespecie - seleccionarSubespecie($divNuevaEspecie); - - // Gestioanr tabla de clases de edad/sexo - gestionarTablaNumeroAves($divNuevaEspecie); - - // Resaltar checks seleccioandos - marcarChecksSeleccioandos($divNuevaEspecie); - - $divNuevaEspecie.find('.btnAceptar').click(function() { - validarFormularioEspecie($divNuevaEspecie, 'errorMessagesNuevaEspecie'); - }); - - // Popup ayuda - $divNuevaEspecie.find('.badge-info').popover(); - - // Rich editor para las observaciones - $divNuevaEspecie.find('.observaciones').summernote({ - toolbar: [ - ['style', ['style']], - ['font', ['bold', 'underline', 'clear']], - // ['fontname', ['fontname']], - ['color', ['color']], - ['para', ['ul', 'ol'/*, 'paragraph'*/]], - // ['table', ['table']], - ['insert', ['link'/*, 'picture'*/]], - // ['view', ['fullscreen', 'codeview']], - ], - lang: 'es-ES', // default: 'en-US' - dialogsInBody: false, - dialogsFade: true // Add fade effect on dialogs - }); - $divNuevaEspecie.find('.note-modal').remove() -}); - -/** - * Limpia el formulario de especie - */ -function limpiarFormularioEspecie() -{ - var $divNuevaEspecie = $('#modalNuevaEspecie'); - - limpiarEspecie($divNuevaEspecie); - - $divNuevaEspecie.find("input[type=checkbox]").each(function() { - $(this).prop('checked', false); - $(this).parent().removeClass("text-success"); - $(this).parent().css("font-weight", "normal"); - }); - - $divNuevaEspecie.find(".numero_aves").each(function() { - $(this).val(0); - }); - - $divNuevaEspecie.find('.observaciones').val(''); - $divNuevaEspecie.find('.observaciones').summernote('reset'); - $divNuevaEspecie.find('.note-modal').remove(); - - $divNuevaEspecie.find('.datosReproduccion').val(11); - - $divNuevaEspecie.find(".totalNumeroAves").val(0); - - $divNuevaEspecie.find(".numeroTotalAvesDiv").hide(); - $divNuevaEspecie.find(".numeroTotalAvesTexto").text(0); -}