var PetsView = (function () { var dao; var self; var formId = 'pets-form'; var listId = 'pets-list'; var formQuery = '#' + formId; var listQuery = '#' + listId; function PetsView(petsDao, formContainerId,listContainerId){ dao = petsDao; self = this; insertPetsForm($('#' + formContainerId)); insertPetsList($('#' + listContainerId)); this.init = function() { dao.listPets(function(pets) { $.each(pets, function(key, pet) { appendToTable(pet); }); }, function () { alert('No ha sido posible acceder al listado de pets'); } ); // 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) { let pet = self.getPetInForm(); if (self.isEditing()) { dao.modifyPet(pet, function(pet) { $('#pet-' + pet.id + ' td.name').text(pet.name); $('#pet-' + pet.id + ' td.type').text(pet.surname); $('#pet-' + pet.id + ' td.person').text(pet.person); 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.initList = function (id) { dao.listPetsOwner(id,function (pets) { $.each(pets,function (key,pet) { appendToTable(pet); }); }, function () { alert("No ha sido posible acceder al listado de pets."); } ); $(formQuery).submit(function(event) { let pet = self.getPetInForm(); if (self.isEditing()) { dao.modifyPet(pet, function(pet) { $('#pet-' + pet.id + ' td.name').text(pet.name); $('#pet-' + pet.id + ' td.type').text(pet.surname); $('#pet-' + pet.id + ' td.person').text(pet.person); self.resetForm(); if(pet.person != id){ $('tr#pet-'+ pet.id).remove(); } }, showErrorMessage, self.enableForm ); } else { dao.addPet(pet, function(pet) { if (pet.person == id) { 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(), 'type': form.find('input[name="type"]').val(), 'person': form.find('input[name="person"]').val() }; }; this.getPetInRow = function(id) { var row = $('#pet-' + id); if (row !== undefined) { return { 'id': id, 'name': row.find('td.name').text(), 'type': row.find('td.type').text(), 'person': row.find('td.person').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="type"]').val(row.find('td.type').text()); form.find('input[name="person"]').val(row.find('td.person').text()); $('input#btnSubmit').val('Modificar'); } }; this.deletePet = function(id) { if (confirm('Está a punto de eliminar a una persona. ¿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 insertPetsList = function(parent) { parent.append( '
Nombre | \Tipo | \Dueño | \\ |
---|