From 80b9b2feb69024c698b73b6d1f5bc3a40534c75d Mon Sep 17 00:00:00 2001 From: aarrieth Date: Thu, 14 May 2020 22:14:07 -0500 Subject: [PATCH 1/2] aplicar herencia y refactorizar metodos de la clase UI --- App.js | 87 +++++++++++++++++++++++++++++++++------------------------- 1 file changed, 49 insertions(+), 38 deletions(-) diff --git a/App.js b/App.js index 42d6992..822a286 100644 --- a/App.js +++ b/App.js @@ -8,80 +8,91 @@ class Product { } // UI Constructor -class UI { - addProduct(product) { +class UI extends Product { + constructor(name, price, year, message, cssClass) { + super(name, price, year) + this.message = message + this.cssClass = cssClass + } + + resetForm() { + document.getElementById('product-form').reset(); + } + + addProduct() { const productList = document.getElementById('product-list'); const element = document.createElement('div'); element.innerHTML = `
- Product: ${product.name} - - Price: ${product.price} - - Year: ${product.year} + Product: ${this.name} + Price: ${this.price} + Year: ${this.year} Delete
`; productList.appendChild(element); + this.resetForm(); } + showMessage(message, cssClass) { - resetForm() { - document.getElementById('product-form').reset(); - } - - deleteProduct(element) { - if (element.name === 'delete') { - element.parentElement.parentElement.remove(); - this.showMessage('Product Deleted Succsssfully', 'success'); - } - } + //recibir valores de message o cssClass de forma implicita o explicita + const newCssClass = cssClass || this.cssClass; + const newMessage = message || this.message; - showMessage(message, cssClass) { const div = document.createElement('div'); - div.className = `alert alert-${cssClass} mt-2`; - div.appendChild(document.createTextNode(message)); + div.className = `alert alert-${newCssClass} mt-2`; + div.appendChild(document.createTextNode(newMessage)); // Show in The DOM const container = document.querySelector('.container'); const app = document.querySelector('#App'); // Insert Message in the UI container.insertBefore(div, app); // Remove the Message after 3 seconds - setTimeout(function () { + setTimeout(function() { document.querySelector('.alert').remove(); }, 3000); } + + deleteProduct() { + document.getElementById('product-list') + .addEventListener('click', (e) => { + if (e.target.name === 'delete') { + e.target.parentElement.parentElement.parentElement.remove(); + this.showMessage('Product delect successfully...', 'info'); + } + }); + } } +//definir clase UI de manera explicita para reutilizar el método showMessage(); +const uiMessage = new UI + // DOM Events document.getElementById('product-form') - .addEventListener('submit', function (e) { + .addEventListener('submit', function(e) { const name = document.getElementById('name').value, price = document.getElementById('price').value, year = document.getElementById('year').value; - - // Create a new Oject Product - const product = new Product(name, price, year); - - // Create a new UI - const ui = new UI(); - - // Input User Validation if (name === '' || price === '' || year === '') { - ui.showMessage('Please Insert data in all fields', 'danger'); + return uiMessage.showMessage('Complete fields, please!', 'info'); + } else { + const ui = new UI(name, price, year, 'Product added succesfully', 'success'); + ui.addProduct(); + ui.showMessage(); + ui.deleteProduct(); } - - // Save Product - ui.addProduct(product); - ui.showMessage('Product Added Successfully', 'success'); - ui.resetForm(); - e.preventDefault(); }); -document.getElementById('product-list') - .addEventListener('click', function (e) { +/* + document.getElementById('product-list') + .addEventListener('click', function(e) { const ui = new UI(); ui.deleteProduct(e.target); e.preventDefault(); - }); \ No newline at end of file + }); + +*/ \ No newline at end of file From bdc52a34d5f59336289fb9865bc5fd50cb65a5ec Mon Sep 17 00:00:00 2001 From: aarrieth Date: Thu, 14 May 2020 22:23:56 -0500 Subject: [PATCH 2/2] aplicar herencia y refactorizar metodos --- App.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/App.js b/App.js index 822a286..c2e9693 100644 --- a/App.js +++ b/App.js @@ -35,8 +35,9 @@ class UI extends Product { productList.appendChild(element); this.resetForm(); } - showMessage(message, cssClass) { + + showMessage(message, cssClass) { //recibir valores de message o cssClass de forma implicita o explicita const newCssClass = cssClass || this.cssClass; const newMessage = message || this.message;