From 66548ef49f87427e218c65f34869661f525d92c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20Mungu=C3=ADa?= Date: Sun, 16 Apr 2017 13:12:20 -0700 Subject: [PATCH 01/16] =?UTF-8?q?a=C3=B1ade=20m=C3=A9todo=20con=20el=20pro?= =?UTF-8?q?totype?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- datastore.js | 7 +++++++ index.html | 1 + main.js | 6 ++++++ 3 files changed, 14 insertions(+) create mode 100644 datastore.js diff --git a/datastore.js b/datastore.js new file mode 100644 index 0000000..f1263f0 --- /dev/null +++ b/datastore.js @@ -0,0 +1,7 @@ +function DataStore() { + this.data = {}; +} + +DataStore.prototype.add = function (key, val) { + this.data[key] = val; +} diff --git a/index.html b/index.html index c13f653..69bb4dd 100644 --- a/index.html +++ b/index.html @@ -3,6 +3,7 @@ Pizza Place + diff --git a/main.js b/main.js index 4c63ab5..f1183f3 100644 --- a/main.js +++ b/main.js @@ -1 +1,7 @@ console.log('Pizza place'); +var dataStore = new DataStore(); +dataStore.add('valor1', 'esta es una cadena'); +dataStore.add('valor2', 20); +console.log(dataStore); + +console.log(DataStore.prototype === dataStore.__proto__); From f2ea99603956962fcaaa693d7dda0232307dff19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20Mungu=C3=ADa?= Date: Sun, 16 Apr 2017 13:21:13 -0700 Subject: [PATCH 02/16] =?UTF-8?q?a=C3=B1ade=20m=C3=A1s=20m=C3=A9todos=20a?= =?UTF-8?q?=20DataStore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- datastore.js | 14 +++++++++++++- main.js | 2 ++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/datastore.js b/datastore.js index f1263f0..bf10917 100644 --- a/datastore.js +++ b/datastore.js @@ -4,4 +4,16 @@ function DataStore() { DataStore.prototype.add = function (key, val) { this.data[key] = val; -} +}; + +DataStore.prototype.get = function (key) { + return this.data[key]; +}; + +DataStore.prototype.getAll = function () { + return this.data; +}; + +DataStore.prototype.remove = function (key) { + delete this.data[key]; +}; diff --git a/main.js b/main.js index f1183f3..e5b4d50 100644 --- a/main.js +++ b/main.js @@ -3,5 +3,7 @@ var dataStore = new DataStore(); dataStore.add('valor1', 'esta es una cadena'); dataStore.add('valor2', 20); console.log(dataStore); +console.log(dataStore.getAll()); +console.log(dataStore.get('valor2')); console.log(DataStore.prototype === dataStore.__proto__); From cb4c235c15cc905dc99943b4156fc8443d96831d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20Mungu=C3=ADa?= Date: Sun, 16 Apr 2017 13:32:21 -0700 Subject: [PATCH 03/16] =?UTF-8?q?crea=20m=C3=B3dulos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- datastore.js | 38 +++++++++++++++++++++++--------------- main.js | 20 ++++++++++++-------- 2 files changed, 35 insertions(+), 23 deletions(-) diff --git a/datastore.js b/datastore.js index bf10917..939fefe 100644 --- a/datastore.js +++ b/datastore.js @@ -1,19 +1,27 @@ -function DataStore() { - this.data = {}; -} +(function (window) { + 'use strict'; + var App = window.App || {}; -DataStore.prototype.add = function (key, val) { - this.data[key] = val; -}; + function DataStore() { + this.data = {}; + } -DataStore.prototype.get = function (key) { - return this.data[key]; -}; + DataStore.prototype.add = function (key, val) { + this.data[key] = val; + }; -DataStore.prototype.getAll = function () { - return this.data; -}; + DataStore.prototype.get = function (key) { + return this.data[key]; + }; -DataStore.prototype.remove = function (key) { - delete this.data[key]; -}; + DataStore.prototype.getAll = function () { + return this.data; + }; + + DataStore.prototype.remove = function (key) { + delete this.data[key]; + }; + + App.DataStore = DataStore; + window.App = App; +}(window)); // IIFE diff --git a/main.js b/main.js index e5b4d50..6f14a34 100644 --- a/main.js +++ b/main.js @@ -1,9 +1,13 @@ -console.log('Pizza place'); -var dataStore = new DataStore(); -dataStore.add('valor1', 'esta es una cadena'); -dataStore.add('valor2', 20); -console.log(dataStore); -console.log(dataStore.getAll()); -console.log(dataStore.get('valor2')); +(function (window) { + 'use strict'; + var App = window.App; + var DataStore = App.DataStore; -console.log(DataStore.prototype === dataStore.__proto__); + console.log('Pizza place'); + var dataStore = new DataStore(); + dataStore.add('valor1', 'esta es una cadena'); + dataStore.add('valor2', 20); + console.log(dataStore); + console.log(dataStore.getAll()); + console.log(dataStore.get('valor2')); +}(window)); From cf72fdd232c156fa48e8752a1ac713e1a08808b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20Mungu=C3=ADa?= Date: Sun, 16 Apr 2017 19:12:43 -0700 Subject: [PATCH 04/16] =?UTF-8?q?a=C3=B1ade=20m=C3=A9todos=20de=20Store?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 2 ++ main.js | 13 ++++++++----- order.js | 13 +++++++++++++ store.js | 37 +++++++++++++++++++++++++++++++++++++ 4 files changed, 60 insertions(+), 5 deletions(-) create mode 100644 order.js create mode 100644 store.js diff --git a/index.html b/index.html index 69bb4dd..32c0bad 100644 --- a/index.html +++ b/index.html @@ -4,6 +4,8 @@ Pizza Place + + diff --git a/main.js b/main.js index 6f14a34..2ec617e 100644 --- a/main.js +++ b/main.js @@ -2,12 +2,15 @@ 'use strict'; var App = window.App; var DataStore = App.DataStore; + var Store = App.Store; + var Order = App.Order; console.log('Pizza place'); var dataStore = new DataStore(); - dataStore.add('valor1', 'esta es una cadena'); - dataStore.add('valor2', 20); - console.log(dataStore); - console.log(dataStore.getAll()); - console.log(dataStore.get('valor2')); + var store = new Store('ncc-1701', dataStore); + var order = new Order('enrique@devcode.com', 'large', 'cheese'); + + store.createOrder(order); + store.printOrders(); + }(window)); diff --git a/order.js b/order.js new file mode 100644 index 0000000..647e9e4 --- /dev/null +++ b/order.js @@ -0,0 +1,13 @@ +(function () { + 'use strict'; + var App = window.App || {}; + + function Order (email, size, speciality) { + this.email = email; + this.size = size; + this.speciality = speciality; + } + + App.Order = Order; + window.App.App; +}()); diff --git a/store.js b/store.js new file mode 100644 index 0000000..8bd7d71 --- /dev/null +++ b/store.js @@ -0,0 +1,37 @@ +(function () { + 'use strict'; + var App = window.App || {}; + + function Store(storeId, db) { + this.storeId = storeId; + this.db = db; // composición + } + + Store.prototype.createOrder = function (order) { + console.log('Adding order for: ' + order.email); + this.db.add(order.email, order); + }; + + Store.prototype.deliverOrder = function (email) { + console.log('Delivering order for: ' + email); + this.db.remove(email); + }; + + Store.prototype.printOrders = function () { + console.log('Store #' + this.storeId + ' has pending orders'); + + var customerEmails = Object.keys(this.db.getAll()); + // var self = this; + // customerEmails.forEach(function (email) { + // console.log(self.db.get(email)); + // }); + + customerEmails.forEach(function (email) { + console.log(this.db.get(email)); + }.bind(this)); + + }; + + App.Store = Store; + window.App.App; +}()); From 4d5bb1e4b632e962526b31c1563edda95c7a63ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20Mungu=C3=ADa?= Date: Sun, 16 Apr 2017 19:26:04 -0700 Subject: [PATCH 05/16] =?UTF-8?q?a=C3=B1ada=20BaseOrder=20y=20PizzaOrder?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.js | 4 ++-- order.js | 11 +++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/main.js b/main.js index 2ec617e..d3a4a79 100644 --- a/main.js +++ b/main.js @@ -3,12 +3,12 @@ var App = window.App; var DataStore = App.DataStore; var Store = App.Store; - var Order = App.Order; + var PizzaOrder = App.PizzaOrder; console.log('Pizza place'); var dataStore = new DataStore(); var store = new Store('ncc-1701', dataStore); - var order = new Order('enrique@devcode.com', 'large', 'cheese'); + var order = new PizzaOrder('enrique@devcode.com', 'large', 'cheese'); store.createOrder(order); store.printOrders(); diff --git a/order.js b/order.js index 647e9e4..8105fba 100644 --- a/order.js +++ b/order.js @@ -2,12 +2,19 @@ 'use strict'; var App = window.App || {}; - function Order (email, size, speciality) { + function BaseOrder (email) { this.email = email; + } + + function PizzaOrder (email, size, speciality) { + BaseOrder.call(this, email); this.size = size; this.speciality = speciality; } - App.Order = Order; + PizzaOrder.prototype = Object.create(BaseOrder.prototype); + PizzaOrder.prototype.constructor = PizzaOrder; + + App.PizzaOrder = PizzaOrder; window.App.App; }()); From 86d4779b4e34d2291053d41d1691a2873a5afc9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20Mungu=C3=ADa?= Date: Sun, 16 Apr 2017 19:39:28 -0700 Subject: [PATCH 06/16] =?UTF-8?q?a=C3=B1ade=20m=C3=A9todos=20a=20BaseOrder?= =?UTF-8?q?=20y=20PizzaOrder?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.js | 1 + order.js | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/main.js b/main.js index d3a4a79..79ea4f8 100644 --- a/main.js +++ b/main.js @@ -11,6 +11,7 @@ var order = new PizzaOrder('enrique@devcode.com', 'large', 'cheese'); store.createOrder(order); + order.displayOrder(); store.printOrders(); }(window)); diff --git a/order.js b/order.js index 8105fba..b4fe218 100644 --- a/order.js +++ b/order.js @@ -6,6 +6,10 @@ this.email = email; } + BaseOrder.prototype.displayOrder = function () { + console.log('Order for: ' + this.email); + }; + function PizzaOrder (email, size, speciality) { BaseOrder.call(this, email); this.size = size; @@ -15,6 +19,11 @@ PizzaOrder.prototype = Object.create(BaseOrder.prototype); PizzaOrder.prototype.constructor = PizzaOrder; + PizzaOrder.prototype.displayOrder = function () { + BaseOrder.prototype.displayOrder.call(this); + console.log('Size: ' + this.size); + }; + App.PizzaOrder = PizzaOrder; window.App.App; }()); From 9492fb7fe306472a67fa5edf0a21a54c256c0c27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20Mungu=C3=ADa?= Date: Sun, 16 Apr 2017 20:10:58 -0700 Subject: [PATCH 07/16] =?UTF-8?q?a=C3=B1ade=20ejemplos=20call=20y=20bind?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- order.js | 6 ++++++ store.js | 3 +++ 2 files changed, 9 insertions(+) diff --git a/order.js b/order.js index b4fe218..db161ae 100644 --- a/order.js +++ b/order.js @@ -24,6 +24,12 @@ console.log('Size: ' + this.size); }; + var obj = { email: 'example@devcode.com' }; + var obj2 = { email: 'example2@devcode.com' }; + BaseOrder.prototype.displayOrder.call(obj); + var displayEmail = BaseOrder.prototype.displayOrder.bind(obj2); + displayEmail(); + App.PizzaOrder = PizzaOrder; window.App.App; }()); diff --git a/store.js b/store.js index 8bd7d71..8c4a57a 100644 --- a/store.js +++ b/store.js @@ -3,8 +3,11 @@ var App = window.App || {}; function Store(storeId, db) { + // this = {}; + // this.__proto__ = Store.prototype this.storeId = storeId; this.db = db; // composición + // return this; } Store.prototype.createOrder = function (order) { From a12732d72bc76c27a66b7fa1dff4a80eafd0e78b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20Mungu=C3=ADa?= Date: Sat, 22 Apr 2017 18:50:35 -0700 Subject: [PATCH 08/16] corrige store y order --- main.js | 4 ++-- order.js | 45 +++++++++++++++++++-------------------------- store.js | 2 +- 3 files changed, 22 insertions(+), 29 deletions(-) diff --git a/main.js b/main.js index 79ea4f8..654ffc6 100644 --- a/main.js +++ b/main.js @@ -3,12 +3,12 @@ var App = window.App; var DataStore = App.DataStore; var Store = App.Store; - var PizzaOrder = App.PizzaOrder; + var pizzaOrderFactory = App.pizzaOrderFactory; console.log('Pizza place'); var dataStore = new DataStore(); var store = new Store('ncc-1701', dataStore); - var order = new PizzaOrder('enrique@devcode.com', 'large', 'cheese'); + var order = pizzaOrderFactory('enrique@devcode.com', 'large', 'cheese'); store.createOrder(order); order.displayOrder(); diff --git a/order.js b/order.js index db161ae..5687044 100644 --- a/order.js +++ b/order.js @@ -2,34 +2,27 @@ 'use strict'; var App = window.App || {}; - function BaseOrder (email) { - this.email = email; - } - - BaseOrder.prototype.displayOrder = function () { - console.log('Order for: ' + this.email); + var order = { + email: '', + displayOrder: function () { + console.log('Order for: ' + this.email); + } }; - function PizzaOrder (email, size, speciality) { - BaseOrder.call(this, email); - this.size = size; - this.speciality = speciality; + function pizzaOrderFactory(email, size, speciality) { + return Object.create(order, { + email: { value: email }, + size: { value: size }, + speciality: { value: speciality }, + displayOrder: { + value: function() { + order.displayOrder.call(this); + console.log('Size: ' + this.size); + } + } + }); } - PizzaOrder.prototype = Object.create(BaseOrder.prototype); - PizzaOrder.prototype.constructor = PizzaOrder; - - PizzaOrder.prototype.displayOrder = function () { - BaseOrder.prototype.displayOrder.call(this); - console.log('Size: ' + this.size); - }; - - var obj = { email: 'example@devcode.com' }; - var obj2 = { email: 'example2@devcode.com' }; - BaseOrder.prototype.displayOrder.call(obj); - var displayEmail = BaseOrder.prototype.displayOrder.bind(obj2); - displayEmail(); - - App.PizzaOrder = PizzaOrder; - window.App.App; + App.pizzaOrderFactory = pizzaOrderFactory; + window.App = App; }()); diff --git a/store.js b/store.js index 8c4a57a..85d228c 100644 --- a/store.js +++ b/store.js @@ -36,5 +36,5 @@ }; App.Store = Store; - window.App.App; + window.App = App; }()); From 9e01ecea9146f7487578f1f4849886e8d99f9b16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20Mungu=C3=ADa?= Date: Sat, 22 Apr 2017 22:55:11 -0700 Subject: [PATCH 09/16] migrar archivos a es6 --- .gitignore | 58 ++++++++++++++++++++++++++++ index.html | 5 +-- package.json | 19 +++++++++ scripts-es6/datastore.js | 23 +++++++++++ scripts-es6/main.js | 1 + datastore.js => scripts/datastore.js | 0 main.js => scripts/main.js | 0 order.js => scripts/order.js | 0 store.js => scripts/store.js | 0 webpack.config.js | 41 ++++++++++++++++++++ 10 files changed, 143 insertions(+), 4 deletions(-) create mode 100644 .gitignore create mode 100644 package.json create mode 100644 scripts-es6/datastore.js create mode 100644 scripts-es6/main.js rename datastore.js => scripts/datastore.js (100%) rename main.js => scripts/main.js (100%) rename order.js => scripts/order.js (100%) rename store.js => scripts/store.js (100%) create mode 100644 webpack.config.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..621038f --- /dev/null +++ b/.gitignore @@ -0,0 +1,58 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env diff --git a/index.html b/index.html index 32c0bad..1a84982 100644 --- a/index.html +++ b/index.html @@ -3,10 +3,7 @@ Pizza Place - - - - +

Pizza Place

diff --git a/package.json b/package.json new file mode 100644 index 0000000..8c62773 --- /dev/null +++ b/package.json @@ -0,0 +1,19 @@ +{ + "name": "pizzaplace", + "version": "1.0.0", + "description": "JavaScript POO", + "main": "webpack.config.js", + "devDependencies": { + "babel-core": "^6.24.1", + "babel-loader": "^6.4.1", + "babel-preset-es2015-native-modules": "^6.9.4", + "webpack": "^2.3.3", + "webpack-dev-server": "2" + }, + "scripts": { + "dev": "webpack-dev-server", + "build": "webpack --progress --watch" + }, + "author": "enrique7mc", + "license": "ISC" +} diff --git a/scripts-es6/datastore.js b/scripts-es6/datastore.js new file mode 100644 index 0000000..205dcce --- /dev/null +++ b/scripts-es6/datastore.js @@ -0,0 +1,23 @@ +class DataStore { + constructor() { + this.data = {}; + } + + add(key, val) { + this.data[key] = val; + } + + get(key) { + return this.data[key]; + } + + getAll() { + return this.data; + } + + remove(key) { + delete this.data[key]; + } +} + +export default DataStore; diff --git a/scripts-es6/main.js b/scripts-es6/main.js new file mode 100644 index 0000000..3716363 --- /dev/null +++ b/scripts-es6/main.js @@ -0,0 +1 @@ +console.log('pizza place es6'); diff --git a/datastore.js b/scripts/datastore.js similarity index 100% rename from datastore.js rename to scripts/datastore.js diff --git a/main.js b/scripts/main.js similarity index 100% rename from main.js rename to scripts/main.js diff --git a/order.js b/scripts/order.js similarity index 100% rename from order.js rename to scripts/order.js diff --git a/store.js b/scripts/store.js similarity index 100% rename from store.js rename to scripts/store.js diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..18166e7 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,41 @@ +const webpack = require('webpack'); +const path = require('path'); + +const nodeEnv = process.env.NODE_ENV || 'production'; + +module.exports = { + devtool: 'source-map', + entry: { + filename: './scripts-es6/main.js' + }, + output: { + filename: '_build/bundle.js' + }, + module: { + loaders: [ + { + test: /\.js$/, + exclude: /node_modules/, + loader: 'babel-loader', + query: { + presets: ['es2015-native-modules'] + } + } + ] + }, + plugins: [ + // uglify js + new webpack.optimize.UglifyJsPlugin({ + compress: { warnings: false }, + output: { comments: false }, + sourceMap: true + }), + // env plugin + new webpack.DefinePlugin({ + 'proccess.env': { NODE_ENV: JSON.stringify(nodeEnv) } + }) + ], + devServer: { + contentBase: path.resolve(__dirname, './'), + } +}; From 85c864c2156d82c27184e87dd61ccb6e9ef13767 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20Mungu=C3=ADa?= Date: Sun, 23 Apr 2017 20:26:12 -0700 Subject: [PATCH 10/16] =?UTF-8?q?a=C3=B1ade=20order.js?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts-es6/main.js | 11 ++++++++++- scripts-es6/order.js | 18 ++++++++++++++++++ scripts-es6/store.js | 27 +++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 scripts-es6/order.js create mode 100644 scripts-es6/store.js diff --git a/scripts-es6/main.js b/scripts-es6/main.js index 3716363..1d3d24e 100644 --- a/scripts-es6/main.js +++ b/scripts-es6/main.js @@ -1 +1,10 @@ -console.log('pizza place es6'); +import DataStore from './datastore'; +import Store from './store'; +import { PizzaOrder } from './order'; + +const store = new Store('ncc-1701', new DataStore()); +const order = new PizzaOrder('enrique@devcode.com', 'large', 'meats'); +store.createOrder(order); +store.printOrders(); +store.deliverOrder('enrique@devcode.com'); +store.printOrders(); diff --git a/scripts-es6/order.js b/scripts-es6/order.js new file mode 100644 index 0000000..f870de3 --- /dev/null +++ b/scripts-es6/order.js @@ -0,0 +1,18 @@ +class BaseOrder { + constructor(email) { + this.email = email; + } +} + +class PizzaOrder extends BaseOrder { + constructor(email, size, speciality) { + super(email); + this.size = size; + this.speciality = speciality; + } +} + +export { + BaseOrder, + PizzaOrder +}; diff --git a/scripts-es6/store.js b/scripts-es6/store.js new file mode 100644 index 0000000..4d68713 --- /dev/null +++ b/scripts-es6/store.js @@ -0,0 +1,27 @@ +class Store { + constructor(storeId, db) { + this.storeId = storeId; + this.db = db; + } + + createOrder(order) { + console.log(`Adding order for ${order.email}`); + this.db.add(order.email, order); + } + + deliverOrder(email) { + console.log(`Delivering order for ${email}`); + this.db.remove(email); + } + + printOrders() { + const customerEmails = Object.keys(this.db.getAll()); + + console.log(`Store #${this.storeId} has pending orders`); + customerEmails.forEach((email) => { + console.log(this.db.get(email)); + }) + } +} + +export default Store; From 28340ce8f5f636ef3df774723b4d0410994dc953 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20Mungu=C3=ADa?= Date: Mon, 24 Apr 2017 19:57:53 -0700 Subject: [PATCH 11/16] =?UTF-8?q?a=C3=B1ade=20displayOrder?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts-es6/main.js | 1 + scripts-es6/order.js | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/scripts-es6/main.js b/scripts-es6/main.js index 1d3d24e..12e7058 100644 --- a/scripts-es6/main.js +++ b/scripts-es6/main.js @@ -6,5 +6,6 @@ const store = new Store('ncc-1701', new DataStore()); const order = new PizzaOrder('enrique@devcode.com', 'large', 'meats'); store.createOrder(order); store.printOrders(); +order.displayOrder(); store.deliverOrder('enrique@devcode.com'); store.printOrders(); diff --git a/scripts-es6/order.js b/scripts-es6/order.js index f870de3..a6ae624 100644 --- a/scripts-es6/order.js +++ b/scripts-es6/order.js @@ -2,6 +2,10 @@ class BaseOrder { constructor(email) { this.email = email; } + + displayOrder() { + console.log(`Order for: ${this.email}`); + } } class PizzaOrder extends BaseOrder { @@ -10,6 +14,11 @@ class PizzaOrder extends BaseOrder { this.size = size; this.speciality = speciality; } + + displayOrder() { + super.displayOrder(); + console.log(`Size: ${this.size}`); + } } export { From c3fac30ae6f2c68bea96dbde4e403c064498a1b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20Mungu=C3=ADa?= Date: Mon, 24 Apr 2017 20:14:45 -0700 Subject: [PATCH 12/16] =?UTF-8?q?a=C3=B1ade=20displayOrder?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts-es6/main.js | 8 ++++++-- scripts-es6/order.js | 29 +++++++++-------------------- 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/scripts-es6/main.js b/scripts-es6/main.js index 12e7058..404f5ca 100644 --- a/scripts-es6/main.js +++ b/scripts-es6/main.js @@ -3,9 +3,13 @@ import Store from './store'; import { PizzaOrder } from './order'; const store = new Store('ncc-1701', new DataStore()); -const order = new PizzaOrder('enrique@devcode.com', 'large', 'meats'); +const order = PizzaOrder({ + email: 'enrique@devcode.com', + size: 'large', + speciality: 'meats' +}); store.createOrder(order); store.printOrders(); -order.displayOrder(); +// order.displayOrder(); store.deliverOrder('enrique@devcode.com'); store.printOrders(); diff --git a/scripts-es6/order.js b/scripts-es6/order.js index a6ae624..79737f1 100644 --- a/scripts-es6/order.js +++ b/scripts-es6/order.js @@ -1,25 +1,14 @@ -class BaseOrder { - constructor(email) { - this.email = email; - } +const email = { email: '' }; +const size = { size: 'medium' }; +const speciality = { speciality: 'cheese' }; - displayOrder() { - console.log(`Order for: ${this.email}`); - } -} - -class PizzaOrder extends BaseOrder { - constructor(email, size, speciality) { - super(email); - this.size = size; - this.speciality = speciality; - } +const BaseOrder = (params) => { + return Object.assign({}, email, params); +}; - displayOrder() { - super.displayOrder(); - console.log(`Size: ${this.size}`); - } -} +const PizzaOrder = (params) => { + return Object.assign({}, email, size, speciality, params); +}; export { BaseOrder, From 5bd6bf79de423a50b830a600ec6339c574f305c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20Mungu=C3=ADa?= Date: Mon, 24 Apr 2017 20:23:31 -0700 Subject: [PATCH 13/16] =?UTF-8?q?a=C3=B1ade=20m=C3=A9todo=20a=20BaseOrder?= =?UTF-8?q?=20y=20PizzaOrder?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts-es6/main.js | 2 +- scripts-es6/order.js | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/scripts-es6/main.js b/scripts-es6/main.js index 404f5ca..bb0815d 100644 --- a/scripts-es6/main.js +++ b/scripts-es6/main.js @@ -10,6 +10,6 @@ const order = PizzaOrder({ }); store.createOrder(order); store.printOrders(); -// order.displayOrder(); +order.displayOrder(); store.deliverOrder('enrique@devcode.com'); store.printOrders(); diff --git a/scripts-es6/order.js b/scripts-es6/order.js index 79737f1..ffcdd62 100644 --- a/scripts-es6/order.js +++ b/scripts-es6/order.js @@ -1,13 +1,18 @@ const email = { email: '' }; const size = { size: 'medium' }; const speciality = { speciality: 'cheese' }; +const displayOrder = { + displayOrder: function () { + console.log(`Order for: ${this.email}`); + } +} const BaseOrder = (params) => { - return Object.assign({}, email, params); + return Object.assign({}, email, displayOrder, params); }; const PizzaOrder = (params) => { - return Object.assign({}, email, size, speciality, params); + return Object.assign({}, email, size, displayOrder, speciality, params); }; export { From 8d6a1d0ff33102d9dc96845fb919128948dbb42a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20Mungu=C3=ADa?= Date: Tue, 25 Apr 2017 20:37:22 -0700 Subject: [PATCH 14/16] first commit --- README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..fb27c44 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Curso-de-POO-JavaScript From 95a4da3b05b071a83ec731fa10d2fd686350fa07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20Mungu=C3=ADa?= Date: Wed, 26 Apr 2017 06:50:56 -0700 Subject: [PATCH 15/16] =?UTF-8?q?a=C3=B1ade=20front=20end=20para=20a=C3=B1?= =?UTF-8?q?adir=20=C3=B3rdenes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 61 +++++++++++++++++++++++++++++++++++++++++--- scripts-es6/main.js | 37 +++++++++++++++++++-------- scripts-es6/order.js | 34 +++++++++++++++++++++--- 3 files changed, 115 insertions(+), 17 deletions(-) diff --git a/index.html b/index.html index 1a84982..10a9a77 100644 --- a/index.html +++ b/index.html @@ -1,11 +1,64 @@ - - Pizza Place + + Pizza place + - -

Pizza Place

+ +
+

Pizza Place

+
+
+
+
+
+
+ + +
+
+ +
+ +
+
+ +
+
+ +
+
+
+ + +
+ +
+
+
+
+
+

Pending Orders:

+
+
+
+
+
diff --git a/scripts-es6/main.js b/scripts-es6/main.js index bb0815d..7dd2729 100644 --- a/scripts-es6/main.js +++ b/scripts-es6/main.js @@ -3,13 +3,30 @@ import Store from './store'; import { PizzaOrder } from './order'; const store = new Store('ncc-1701', new DataStore()); -const order = PizzaOrder({ - email: 'enrique@devcode.com', - size: 'large', - speciality: 'meats' -}); -store.createOrder(order); -store.printOrders(); -order.displayOrder(); -store.deliverOrder('enrique@devcode.com'); -store.printOrders(); +const form = document.querySelector('#pizza-form'); +form.addEventListener('submit', onSubmit); +const checklist = document.querySelector('#checklist'); + +// Event Handlers +function onSubmit(e) { + e.preventDefault(); + const email = form.querySelector('#emailInput').value; + const size = form.querySelector('input[name="size"]:checked').value; + const select = form.querySelector('#speciality'); + const speciality = select.options[select.selectedIndex].value; + const newOrder = new PizzaOrder({ + email, + size, + speciality + }); + store.createOrder(newOrder); + addToPending(newOrder); +} + +// Funciones +function addToPending(order) { + const orderDiv = document.createElement('div'); + const newContent = document.createTextNode(order.toString()); + orderDiv.appendChild(newContent); + checklist.appendChild(orderDiv); +} diff --git a/scripts-es6/order.js b/scripts-es6/order.js index ffcdd62..d287829 100644 --- a/scripts-es6/order.js +++ b/scripts-es6/order.js @@ -1,18 +1,46 @@ +/* // Herencia con clases +class BaseOrder { + constructor(email) { + this.email = email; + } +} + +class PizzaOrder extends BaseOrder { + constructor(email, size, speciality) { + super(email); + this.size = size; + this.speciality = speciality; + } +} + +export { + BaseOrder, + PizzaOrder +}; +*/ + +// Composición const email = { email: '' }; const size = { size: 'medium' }; const speciality = { speciality: 'cheese' }; const displayOrder = { displayOrder: function () { - console.log(`Order for: ${this.email}`); + console.log('Order for: ' + this.email); } -} +}; const BaseOrder = (params) => { return Object.assign({}, email, displayOrder, params); }; +const toString = { + toString: function () { + return `${this.email} - ${this.size} - ${this.speciality}`; + } +}; + const PizzaOrder = (params) => { - return Object.assign({}, email, size, displayOrder, speciality, params); + return Object.assign({}, email, size, speciality, displayOrder, toString, params); }; export { From 1e5a3f201c1a23750849194428d80dbf98f41577 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20Mungu=C3=ADa?= Date: Wed, 26 Apr 2017 08:43:19 -0700 Subject: [PATCH 16/16] Update README.md --- README.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fb27c44..5e14503 100644 --- a/README.md +++ b/README.md @@ -1 +1,15 @@ -# Curso-de-POO-JavaScript +# Curso POO con JavaScript + +## Pizza Place + +Aplicación simple para demostrar conceptos de Programación Orientada a Objetos con JavaScript + +Incluye diferentes *branches* para cada uno de los capítulos. + +Requiere [Node JS](https://nodejs.org) instalado + +**Uso** +- `git clone` o descargar como `.zip` +- `npm install` +- `npm run dev` +- Abrir navegador en `localhost:8080`