From d25b83cd7607c9104577d8e9cd7de101b362b9d5 Mon Sep 17 00:00:00 2001 From: sera Date: Sat, 30 Jun 2018 21:20:33 -0300 Subject: [PATCH 1/3] create movie object || play with them in the console --- 02-oop-inheritance/css/normalize.css | 341 +++++++++++++++++++++++++++ 02-oop-inheritance/css/styles.css | 47 ++++ 02-oop-inheritance/index.html | 21 ++ 02-oop-inheritance/js/movie.js | 17 ++ 4 files changed, 426 insertions(+) create mode 100644 02-oop-inheritance/css/normalize.css create mode 100644 02-oop-inheritance/css/styles.css create mode 100644 02-oop-inheritance/index.html create mode 100644 02-oop-inheritance/js/movie.js diff --git a/02-oop-inheritance/css/normalize.css b/02-oop-inheritance/css/normalize.css new file mode 100644 index 000000000..6e51e579a --- /dev/null +++ b/02-oop-inheritance/css/normalize.css @@ -0,0 +1,341 @@ +/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + + html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} \ No newline at end of file diff --git a/02-oop-inheritance/css/styles.css b/02-oop-inheritance/css/styles.css new file mode 100644 index 000000000..c05ebefcd --- /dev/null +++ b/02-oop-inheritance/css/styles.css @@ -0,0 +1,47 @@ +/* GRID SYSTEM */ + +.container { + margin: 0 auto; + max-width: 48rem; + width: 90%; +} + +.column { + float: left; +} + +.column.full { + width: 100%; +} + +.column.two-thirds { + width: 66.7%; +} + +.column.half { + width: 50%; +} + +.column.third { + width: 33.3%; +} + +.column.fourth { + width: 25%; +} + +.column.flow-opposite { + float: right; +} + +/* GRID SYSTEM */ + +.header h1 { + text-align: center; +} + +.play, +.pause, +.resume { + text-align: center; +} diff --git a/02-oop-inheritance/index.html b/02-oop-inheritance/index.html new file mode 100644 index 000000000..1c63f6bef --- /dev/null +++ b/02-oop-inheritance/index.html @@ -0,0 +1,21 @@ + + + + + + + Topic 2 + + + + +
+
+
+

Topic 2

+
+
+
+ + + \ No newline at end of file diff --git a/02-oop-inheritance/js/movie.js b/02-oop-inheritance/js/movie.js new file mode 100644 index 000000000..fbafbf4b1 --- /dev/null +++ b/02-oop-inheritance/js/movie.js @@ -0,0 +1,17 @@ +let movie = { + title: 'Star Wars episode V: "The empire strikes back"', + year: 1980, + duration: '2 hours ,7 minutes', + play() { + return `${this.title} starts`; + }, + pause() { + return `${this.title} is paused`; + }, + resume() { + return `Play ${this.title} `; + } +} + +//Run with console.log(movie.NAME OF FUNCTION) and it will print +//in console the methods of the "movie" object. From db5db2416089eb9794d38c6ed5f7203a5a40e4b2 Mon Sep 17 00:00:00 2001 From: sera Date: Wed, 4 Jul 2018 21:00:53 -0300 Subject: [PATCH 2/3] almost done --- 02-oop-inheritance/.vscode/launch.json | 14 ++++ 02-oop-inheritance/js/movie.js | 109 ++++++++++++++++++++++--- 2 files changed, 112 insertions(+), 11 deletions(-) create mode 100644 02-oop-inheritance/.vscode/launch.json diff --git a/02-oop-inheritance/.vscode/launch.json b/02-oop-inheritance/.vscode/launch.json new file mode 100644 index 000000000..2a4c3d466 --- /dev/null +++ b/02-oop-inheritance/.vscode/launch.json @@ -0,0 +1,14 @@ +{ + // Use IntelliSense para saber los atributos posibles. + // Mantenga el puntero para ver las descripciones de los existentes atributos + // Para más información, visite: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Iniciar programa", + "program": "${workspaceFolder}/js\\movie.js" + } + ] +} \ No newline at end of file diff --git a/02-oop-inheritance/js/movie.js b/02-oop-inheritance/js/movie.js index fbafbf4b1..10558e23a 100644 --- a/02-oop-inheritance/js/movie.js +++ b/02-oop-inheritance/js/movie.js @@ -1,17 +1,104 @@ -let movie = { - title: 'Star Wars episode V: "The empire strikes back"', - year: 1980, - duration: '2 hours ,7 minutes', +class EventEmitter { + constructor() { + + this.events = {} + } + + on(EvName, callback) { + if (this.events[EvName]) { + this.events[EvName].push(callback) + callback(EvName) + } else { + this.events[EvName] = [callback] + callback(EvName) + } + } + emit(EvName, callback) { + let listeners = this.events[EvName] + if (listeners && listeners.length) { + listeners.forEach((listener) => { + listener(callback); + }); + return callback(EvName); + } + return false; + } + + off(EvName) { + if (this.events[EvName]) { + this.events[EvName].forEach(x => x()) + delete this.events[EvName] + } + } +} + +class Movie extends EventEmitter { + constructor(title, year, duration) { + super(); + this.title = title; + this.year = year; + this.duration = duration; + } play() { - return `${this.title} starts`; - }, + console.log('Play movie'); + } + pause() { - return `${this.title} is paused`; - }, + console.log('Movie paused'); + } + resume() { - return `Play ${this.title} `; + console.log('Resume movie'); + } +} +class Logger { + log(info) { + + console.log('The ' + info + ' event has been emited'); + } +} + +let Social = { + share(friendName) { + console.log(`Shares ${this.title} with ${friendName}`); + }, + like(friendName) { + console.log(`${friendName} liked ${this.title}`); + } +} + +class Actor { + constructor(name, age, character) { + this.name = name; + this.age = age; + this.character = character; + } + addCast(cast) { + cast.forEach(element => { + console.log(element); + }) } } -//Run with console.log(movie.NAME OF FUNCTION) and it will print -//in console the methods of the "movie" object. + + +let starWars = new Movie('Star Wars episode V: "The empire strikes back"', 1980, '2 hours ,7 minutes', 'lightsaber'); +let markHamill = new Actor('Mark Hamill', 66, 'Luke Skywalker'); + +let cast = new Actor; +cast.addCast(['David Prowse', 'David Prowse', 'David Prowse', 'David Prowse', ]) + +let logger = new Logger(); + +starWars.on('play', logger.log); +starWars.on('pause', logger.log) +starWars.on('resume', logger.log); +starWars.emit('pause', logger.log); +starWars.off('resume', logger.log); + +Object.assign(starWars, Social); + +starWars.play(); + +starWars.share("Matias Serafini"); +starWars.like("Matias Serafini"); From dc0bf1cc6bbde2667fa22e2619d7efc5bb7f8735 Mon Sep 17 00:00:00 2001 From: sera Date: Thu, 5 Jul 2018 16:15:04 -0300 Subject: [PATCH 3/3] topic 2 done --- 02-oop-inheritance/index.html | 2 +- 02-oop-inheritance/js/movie.js | 104 -------------------------------- 02-oop-inheritance/js/topic.js | 105 +++++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+), 105 deletions(-) delete mode 100644 02-oop-inheritance/js/movie.js create mode 100644 02-oop-inheritance/js/topic.js diff --git a/02-oop-inheritance/index.html b/02-oop-inheritance/index.html index 1c63f6bef..92dd78b20 100644 --- a/02-oop-inheritance/index.html +++ b/02-oop-inheritance/index.html @@ -17,5 +17,5 @@

Topic 2

- + \ No newline at end of file diff --git a/02-oop-inheritance/js/movie.js b/02-oop-inheritance/js/movie.js deleted file mode 100644 index 10558e23a..000000000 --- a/02-oop-inheritance/js/movie.js +++ /dev/null @@ -1,104 +0,0 @@ -class EventEmitter { - constructor() { - - this.events = {} - } - - on(EvName, callback) { - if (this.events[EvName]) { - this.events[EvName].push(callback) - callback(EvName) - } else { - this.events[EvName] = [callback] - callback(EvName) - } - } - emit(EvName, callback) { - let listeners = this.events[EvName] - if (listeners && listeners.length) { - listeners.forEach((listener) => { - listener(callback); - }); - return callback(EvName); - } - return false; - } - - off(EvName) { - if (this.events[EvName]) { - this.events[EvName].forEach(x => x()) - delete this.events[EvName] - } - } -} - -class Movie extends EventEmitter { - constructor(title, year, duration) { - super(); - this.title = title; - this.year = year; - this.duration = duration; - } - play() { - console.log('Play movie'); - } - - pause() { - console.log('Movie paused'); - } - - resume() { - console.log('Resume movie'); - } -} -class Logger { - log(info) { - - console.log('The ' + info + ' event has been emited'); - } -} - -let Social = { - share(friendName) { - console.log(`Shares ${this.title} with ${friendName}`); - }, - like(friendName) { - console.log(`${friendName} liked ${this.title}`); - } -} - -class Actor { - constructor(name, age, character) { - this.name = name; - this.age = age; - this.character = character; - } - addCast(cast) { - cast.forEach(element => { - console.log(element); - }) - } -} - - - -let starWars = new Movie('Star Wars episode V: "The empire strikes back"', 1980, '2 hours ,7 minutes', 'lightsaber'); -let markHamill = new Actor('Mark Hamill', 66, 'Luke Skywalker'); - -let cast = new Actor; -cast.addCast(['David Prowse', 'David Prowse', 'David Prowse', 'David Prowse', ]) - -let logger = new Logger(); - -starWars.on('play', logger.log); -starWars.on('pause', logger.log) -starWars.on('resume', logger.log); -starWars.emit('pause', logger.log); -starWars.off('resume', logger.log); - -Object.assign(starWars, Social); - -starWars.play(); - -starWars.share("Matias Serafini"); -starWars.like("Matias Serafini"); diff --git a/02-oop-inheritance/js/topic.js b/02-oop-inheritance/js/topic.js new file mode 100644 index 000000000..423fe0411 --- /dev/null +++ b/02-oop-inheritance/js/topic.js @@ -0,0 +1,105 @@ +class EventEmitter { + constructor() { + + this.events = {} + } + + on(EvName, callback) { + if (this.events[EvName]) { + this.events[EvName].push(callback) + callback(EvName) + } else { + this.events[EvName] = [callback] + callback(EvName) + } + } + emit(EvName, callback) { + let listeners = this.events[EvName] + if (listeners && listeners.length) { + listeners.forEach((listener) => { + listener(callback); + }); + return callback(EvName); + } + return false; + } + + off(EvName) { + if (this.events[EvName]) { + this.events[EvName].forEach(x => x()) + delete this.events[EvName] + } + } + } + + class Movie extends EventEmitter { + constructor(title, year, duration) { + super(); + this.title = title; + this.year = year; + this.duration = duration; + } + play() { + console.log('Play movie'); + } + + pause() { + console.log('Movie paused'); + } + + resume() { + console.log('Resume movie'); + } + } + class Logger { + log(info) { + + console.log('The ' + info + ' event has been emited'); + } + } + + let Social = { + share(friendName) { + console.log(`Shares ${this.title} with ${friendName}`); + }, + like(friendName) { + console.log(`${friendName} liked ${this.title}`); + } + } + + class Actor { + constructor(name, age, character) { + this.name = name; + this.age = age; + this.character = character; + } + addCast(cast) { + cast.forEach(element => { + console.log(element); + }) + } + } + + + + let starWars = new Movie('Star Wars episode V: "The empire strikes back"', 1980, '2 hours ,7 minutes', 'lightsaber'); + let markHamill = new Actor('Mark Hamill', 66, 'Luke Skywalker'); + + let cast = new Actor; + cast.addCast(['David Prowse', 'Carrie Fisher', 'Harrison Ford', 'R2D2', ]) + + let logger = new Logger(); + + starWars.on('play', logger.log); + starWars.on('pause', logger.log) + starWars.on('resume', logger.log); + starWars.emit('pause', logger.log); + starWars.off('resume', logger.log); + + Object.assign(starWars, Social); + + starWars.play(); + + starWars.share("Matias Serafini"); + starWars.like("Matias Serafini"); + \ No newline at end of file