From d5d284eebc7747a15877c659ef1477bde4ec008a Mon Sep 17 00:00:00 2001 From: "osgonzalez@esei.uvigo.es" Date: Thu, 15 Mar 2018 20:31:15 +0100 Subject: [PATCH] Fixed view.js -Fixed a var name --- src/main/webapp/js/view/pet.js | 193 +++++++++++++++++++++++++++++++++ 1 file changed, 193 insertions(+) diff --git a/src/main/webapp/js/view/pet.js b/src/main/webapp/js/view/pet.js index e69de29..b043b60 100644 --- a/src/main/webapp/js/view/pet.js +++ b/src/main/webapp/js/view/pet.js @@ -0,0 +1,193 @@ +var PetView = (function() { + var dao; + + // Referencia a this que permite acceder a las funciones públicas desde las funciones de jQuery. + var self; + + var formId = 'Pet-form'; + var listId = 'Pet-list'; + var formQuery = '#' + formId; + var listQuery = '#' + listId; + + function PetView(PetDao, formContainerId, listContainerId) { + dao = PetDao; + self = this; + + insertPetForm($('#' + formContainerId)); + insertPetList($('#' + listContainerId)); + + this.init = function() { + dao.listPet(function(Pet) { + $.each(Pet, function(key, pet) { + appendToTable(pet); + }); + }); + + // La acción por defecto de enviar formulario (submit) se sobreescribe + // para que el envío sea a través de AJAX + $(formQuery).submit(function(event) { + var pet = self.getpetInForm(); + + if (self.isEditing()) { + dao.modifypet(pet, + function(pet) { + $('#pet-' + pet.idPet + ' td.name').text(pet.name); + $('#pet-' + pet.idPet + ' td.idMaster').text(pet.idMaster); + self.resetForm(); + }, + showErrorMessage, + self.enableForm + ); + } else { + dao.addpet(pet, + function(pet) { + appendToTable(pet); + self.resetForm(); + }, + showErrorMessage, + self.enableForm + ); + } + + return false; + }); + + $('#btnClear').click(this.resetForm); + }; + + this.getpetInForm = function() { + var form = $(formQuery); + return { + 'id': form.find('input[name="id"]').val(), + 'name': form.find('input[name="name"]').val(), + 'idMaster': form.find('input[name="idMaster"]').val() + }; + }; + + this.getpetInRow = function(id) { + var row = $('#pet-' + id); + + if (row !== undefined) { + return { + 'id': id, + 'name': row.find('td.name').text(), + 'idMaster': row.find('td.idMaster').text() + }; + } else { + return undefined; + } + }; + + this.editpet = function(id) { + var row = $('#pet-' + id); + + if (row !== undefined) { + var form = $(formQuery); + + form.find('input[name="id"]').val(id); + form.find('input[name="name"]').val(row.find('td.name').text()); + form.find('input[name="idMaster"]').val(row.find('td.idMaster').text()); + + $('input#btnSubmit').val('Modificar'); + } + }; + + this.deletepet = function(id) { + if (confirm('Está a punto de eliminar a una pet. ¿Está seguro de que desea continuar?')) { + dao.deletepet(id, + function() { + $('tr#pet-' + id).remove(); + }, + showErrorMessage + ); + } + }; + + this.isEditing = function() { + return $(formQuery + ' input[name="id"]').val() != ""; + }; + + this.disableForm = function() { + $(formQuery + ' input').prop('disabled', true); + }; + + this.enableForm = function() { + $(formQuery + ' input').prop('disabled', false); + }; + + this.resetForm = function() { + $(formQuery)[0].reset(); + $(formQuery + ' input[name="id"]').val(''); + $('#btnSubmit').val('Crear'); + }; + }; + + var insertPetList = function(parent) { + parent.append( + '\ + \ + \ + \ + \ + \ + \ + \ + \ + \ +
NombreId Master 
' + ); + }; + + var insertPetForm = function(parent) { + parent.append( + '
\ + \ +
\ +
\ + \ +
\ +
\ + \ +
\ +
\ + \ + \ +
\ +
\ +
' + ); + }; + + var createpetRow = function(pet) { + return '\ + ' + pet.name + '\ + ' + pet.idMaster + '\ + \ + Editar\ + Eliminar\ + \ + '; + }; + + var showErrorMessage = function(jqxhr, textStatus, error) { + alert(textStatus + ": " + error); + }; + + var addRowListeners = function(pet) { + $('#pet-' + pet.idPet + ' a.edit').click(function() { + self.editpet(pet.idPet); + }); + + $('#pet-' + pet.idPet + ' a.delete').click(function() { + self.deletepet(pet.idPet); + }); + }; + + var appendToTable = function(pet) { + $(listQuery + ' > tbody:last') + .append(createpetRow(pet)); + addRowListeners(pet); + }; + + return PetView; +})(); \ No newline at end of file -- 2.18.1