From be1722731fb2aa8138a3598c56d70c818156de99 Mon Sep 17 00:00:00 2001 From: Stef Date: Mon, 18 Dec 2017 13:52:40 -0800 Subject: [PATCH 01/12] Finds rental list. --- dist/index.html | 38 +++++++++++++++++++++++++---------- src/app.js | 15 +++++++++++++- src/collections/movie_list.js | 16 +++++++++++++++ src/models/movie.js | 7 +++++++ 4 files changed, 64 insertions(+), 12 deletions(-) create mode 100644 src/collections/movie_list.js create mode 100644 src/models/movie.js diff --git a/dist/index.html b/dist/index.html index 559b18ecd..e1c65c876 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1,15 +1,31 @@ - - - Backbone Baseline - - -
- -
+ + + The Amazing Movie Database + + +
- +
+
+
+
+ + +
+ +
+
- - + + + + + diff --git a/src/app.js b/src/app.js index 30c00d594..42edc622b 100644 --- a/src/app.js +++ b/src/app.js @@ -6,9 +6,22 @@ import './css/styles.css'; import $ from 'jquery'; import _ from 'underscore'; +import Movie from './models/movie'; +import MovieList from './collections/movie_list'; + +let movieTemplate; + +let movieList = new MovieList(); + + + // ready to go $(document).ready(function() { - $('#main-content').append('

Hello World!

'); + $('#main-content').append('

Movies!

'); + + movieList.fetch().done(() => { + console.log(movieList); + }); }); diff --git a/src/collections/movie_list.js b/src/collections/movie_list.js new file mode 100644 index 000000000..9992d8ce2 --- /dev/null +++ b/src/collections/movie_list.js @@ -0,0 +1,16 @@ +import Backbone from 'backbone'; +import Movie from '../models/movie'; + +const MovieList = Backbone.Collection.extend({ + model: Movie, + + url: 'http://localhost:3000/movies', + + parse(response) { + console.log(response); + return response + + }, +}); + +export default MovieList; diff --git a/src/models/movie.js b/src/models/movie.js new file mode 100644 index 000000000..2e3c413ca --- /dev/null +++ b/src/models/movie.js @@ -0,0 +1,7 @@ +import Backbone from 'backbone'; + +const Movie = Backbone.Model.extend({ + +}); + +export default Movie; From 999c5a2d357d4fd62b118108b4cfcf7e50a1d960 Mon Sep 17 00:00:00 2001 From: Stef Date: Mon, 18 Dec 2017 16:28:40 -0800 Subject: [PATCH 02/12] Changes for Shaunna --- dist/index.html | 14 ++++++++++++++ src/app.js | 15 +++++++++++---- src/collections/movie_list.js | 1 - src/views/movie_list_view.js | 24 ++++++++++++++++++++++++ src/views/movie_view.js | 14 ++++++++++++++ 5 files changed, 63 insertions(+), 5 deletions(-) create mode 100644 src/views/movie_list_view.js create mode 100644 src/views/movie_view.js diff --git a/dist/index.html b/dist/index.html index e1c65c876..605112bd8 100644 --- a/dist/index.html +++ b/dist/index.html @@ -8,7 +8,9 @@
+
+
@@ -16,6 +18,18 @@
+ +
+
+

Movie Rentals

+
+
    + +
+
+
+
+
diff --git a/src/app.js b/src/app.js index 42edc622b..11d17e0af 100644 --- a/src/app.js +++ b/src/app.js @@ -6,22 +6,29 @@ import './css/styles.css'; import $ from 'jquery'; import _ from 'underscore'; +import Backbone from 'backbone'; + import Movie from './models/movie'; import MovieList from './collections/movie_list'; +import MovieListView from './views/movie_list_view'; let movieTemplate; let movieList = new MovieList(); - - // ready to go $(document).ready(function() { - $('#main-content').append('

Movies!

'); - movieList.fetch().done(() => { + // const movieListView = new MovieListView({ + // model: movieList, + // template: _.template($('#movie-template').html()), + // el: 'main', + // }) + // movieListView.render(); console.log(movieList); }); + $('#main-content').append('

Movies!

'); + }); diff --git a/src/collections/movie_list.js b/src/collections/movie_list.js index 9992d8ce2..f90c550e6 100644 --- a/src/collections/movie_list.js +++ b/src/collections/movie_list.js @@ -7,7 +7,6 @@ const MovieList = Backbone.Collection.extend({ url: 'http://localhost:3000/movies', parse(response) { - console.log(response); return response }, diff --git a/src/views/movie_list_view.js b/src/views/movie_list_view.js new file mode 100644 index 000000000..f8abbb0a1 --- /dev/null +++ b/src/views/movie_list_view.js @@ -0,0 +1,24 @@ +import Backbone from 'backbone'; + +import MovieView from './movie_view'; + +const MovieListView = Backbone.View.extend({ + initialize(params) { + this.template = params.template; + }, + render() { + this.$('#rentals').empty(); + this.model.each((movie) => { + const movieView = new MovieView({ + model: movie, + template: this.template, + tagname: 'li', + className: 'rental', + }) + this.$('#rentals').append(movieView.render().$el); + }) + return this; + } +}) + +export default MovieListView; diff --git a/src/views/movie_view.js b/src/views/movie_view.js new file mode 100644 index 000000000..d4eed9337 --- /dev/null +++ b/src/views/movie_view.js @@ -0,0 +1,14 @@ +import Backbone from 'backbone'; + +const MovieView = Backbone.View.extend({ + initialize(params) { + this.template = params.movieTemplate; + }, + render() { + const compiledTemplate = this.template(this.model.toJSON()); + this.$el.html(compiledTemplate); + return this; + }, +}) + +export default MovieView; From ef252d5b2b0118ff2d2a1786a0b02b61e9606240 Mon Sep 17 00:00:00 2001 From: Stef Date: Tue, 19 Dec 2017 11:10:49 -0800 Subject: [PATCH 03/12] Click function for list rentals now working. --- src/app.js | 21 +++++++++++---------- src/views/movie_list_view.js | 19 +++++++++++++++++-- src/views/movie_view.js | 2 +- 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/app.js b/src/app.js index 11d17e0af..a0f6e73ab 100644 --- a/src/app.js +++ b/src/app.js @@ -12,22 +12,23 @@ import Movie from './models/movie'; import MovieList from './collections/movie_list'; import MovieListView from './views/movie_list_view'; -let movieTemplate; +// let movieTemplate; let movieList = new MovieList(); // ready to go $(document).ready(function() { - movieList.fetch().done(() => { - // const movieListView = new MovieListView({ - // model: movieList, - // template: _.template($('#movie-template').html()), - // el: 'main', - // }) - // movieListView.render(); - console.log(movieList); - }); + // movieList.fetch().done(() => { + const movieListView = new MovieListView({ + model: movieList, + template: _.template($('#movie-template').html()), + el: 'main', + }) + movieListView.render(); + // console.log(movieList); + + // }); $('#main-content').append('

Movies!

'); diff --git a/src/views/movie_list_view.js b/src/views/movie_list_view.js index f8abbb0a1..24182740d 100644 --- a/src/views/movie_list_view.js +++ b/src/views/movie_list_view.js @@ -18,7 +18,22 @@ const MovieListView = Backbone.View.extend({ this.$('#rentals').append(movieView.render().$el); }) return this; - } -}) + }, + + events: { + 'click button#btn-rentals': 'getRentals', + }, + + getRentals: function(e) { + e.preventDefault(); + console.log(this.model); + this.model.fetch().done(() => { + console.log(this.model); + this.render(); + }) + + }, + +}); export default MovieListView; diff --git a/src/views/movie_view.js b/src/views/movie_view.js index d4eed9337..dfd6766fd 100644 --- a/src/views/movie_view.js +++ b/src/views/movie_view.js @@ -2,7 +2,7 @@ import Backbone from 'backbone'; const MovieView = Backbone.View.extend({ initialize(params) { - this.template = params.movieTemplate; + this.template = params.template; }, render() { const compiledTemplate = this.template(this.model.toJSON()); From 5185e3b3e873ef230599c4a78ee3213afaa1db17 Mon Sep 17 00:00:00 2001 From: Stef Date: Tue, 19 Dec 2017 11:28:54 -0800 Subject: [PATCH 04/12] Search DB missing form functionality, WIP. --- dist/index.html | 3 ++- src/views/movie_list_view.js | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/dist/index.html b/dist/index.html index 605112bd8..34fd6c71c 100644 --- a/dist/index.html +++ b/dist/index.html @@ -15,6 +15,7 @@
+
@@ -24,7 +25,7 @@

Movie Rentals

    - +
diff --git a/src/views/movie_list_view.js b/src/views/movie_list_view.js index 24182740d..731ce09d2 100644 --- a/src/views/movie_list_view.js +++ b/src/views/movie_list_view.js @@ -1,3 +1,5 @@ +import $ from 'jquery'; + import Backbone from 'backbone'; import MovieView from './movie_view'; @@ -22,18 +24,28 @@ const MovieListView = Backbone.View.extend({ events: { 'click button#btn-rentals': 'getRentals', + 'click button#btn-search': 'searchDBMovies', }, getRentals: function(e) { e.preventDefault(); - console.log(this.model); this.model.fetch().done(() => { - console.log(this.model); this.render(); }) }, + searchDBMovies: function(e) { + e.preventDefault(); + console.log('hello!'); + this.model.fetch({ data: $.param({'query': 'cat'}) }).done(() => { + console.log(this.model); + this.render(); + }) + }, + }); export default MovieListView; + +// collection.fetch({ data: $.param({ page: 1}) }); From e36eec52209cc4b5b40ff16671e4c130d10e1d83 Mon Sep 17 00:00:00 2001 From: Stef Date: Tue, 19 Dec 2017 12:50:15 -0800 Subject: [PATCH 05/12] Search bar is working, can search for movies. --- src/views/movie_list_view.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/views/movie_list_view.js b/src/views/movie_list_view.js index 731ce09d2..ae0710ea0 100644 --- a/src/views/movie_list_view.js +++ b/src/views/movie_list_view.js @@ -37,8 +37,9 @@ const MovieListView = Backbone.View.extend({ searchDBMovies: function(e) { e.preventDefault(); - console.log('hello!'); - this.model.fetch({ data: $.param({'query': 'cat'}) }).done(() => { + let searchWord = this.$('input[name=search-movies]').val(); + console.log(searchWord); + this.model.fetch({ data: $.param({'query': searchWord}) }).done(() => { console.log(this.model); this.render(); }) From 97a7df91f34c0a81448ea5cc93543d01fb102e11 Mon Sep 17 00:00:00 2001 From: Stef Date: Tue, 19 Dec 2017 14:36:33 -0800 Subject: [PATCH 06/12] Can add movies, exclamation point. --- dist/index.html | 1 + src/models/movie.js | 4 ++++ src/views/movie_view.js | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+) diff --git a/dist/index.html b/dist/index.html index 34fd6c71c..177ee0e6c 100644 --- a/dist/index.html +++ b/dist/index.html @@ -41,6 +41,7 @@

Movie Rentals

diff --git a/src/models/movie.js b/src/models/movie.js index 2e3c413ca..78e47a447 100644 --- a/src/models/movie.js +++ b/src/models/movie.js @@ -1,7 +1,11 @@ import Backbone from 'backbone'; const Movie = Backbone.Model.extend({ + urlRoot:'http://localhost:3000/movies', + parse(response) { + return response + }, }); export default Movie; diff --git a/src/views/movie_view.js b/src/views/movie_view.js index dfd6766fd..5f9ca6a84 100644 --- a/src/views/movie_view.js +++ b/src/views/movie_view.js @@ -1,5 +1,8 @@ import Backbone from 'backbone'; +import Movie from '../models/movie'; + + const MovieView = Backbone.View.extend({ initialize(params) { this.template = params.template; @@ -9,6 +12,40 @@ const MovieView = Backbone.View.extend({ this.$el.html(compiledTemplate); return this; }, + + events: { + 'click button#btn-add-to-lib': 'addLib', + + }, + + // addLib: function(e) { + // e.preventDefault(); + // console.log(this.model); + // const newMovie = this.model; + // + // if (newMovie.isValid()) { + // newMovie.save({}, { + // success: this.successSave(newMovie), + // }); + // } + // }, + + addLib: function(e) { + e.preventDefault(); + console.log(this.model); + const newMovie = new Movie ({ + title: this.model.get('title'), + release_date: this.model.get('release_date'), + }) + newMovie.save({}, { + success: this.successSave(newMovie), + }); + }, + + successSave: function(newMovie) { + console.log(newMovie); + console.log('success'); + } }) export default MovieView; From 35cff17f245c50b05f61c0f4a82bfaa2af98f524 Mon Sep 17 00:00:00 2001 From: Stef Date: Tue, 19 Dec 2017 18:09:12 -0800 Subject: [PATCH 07/12] Status messages showing for adding videos. --- dist/index.html | 1 + src/app.js | 4 ++++ src/views/movie_list_view.js | 9 +++++++++ src/views/movie_view.js | 14 ++++++++++---- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/dist/index.html b/dist/index.html index 177ee0e6c..9c87ec7b3 100644 --- a/dist/index.html +++ b/dist/index.html @@ -10,6 +10,7 @@
+

Status Messages Go Here!

diff --git a/src/app.js b/src/app.js index a0f6e73ab..e9f5b35b6 100644 --- a/src/app.js +++ b/src/app.js @@ -16,6 +16,9 @@ import MovieListView from './views/movie_list_view'; let movieList = new MovieList(); +let bus = {}; +bus = _.extend(bus, Backbone.Events); + // ready to go $(document).ready(function() { @@ -24,6 +27,7 @@ $(document).ready(function() { model: movieList, template: _.template($('#movie-template').html()), el: 'main', + bus: bus, }) movieListView.render(); // console.log(movieList); diff --git a/src/views/movie_list_view.js b/src/views/movie_list_view.js index ae0710ea0..b5120b989 100644 --- a/src/views/movie_list_view.js +++ b/src/views/movie_list_view.js @@ -7,7 +7,10 @@ import MovieView from './movie_view'; const MovieListView = Backbone.View.extend({ initialize(params) { this.template = params.template; + this.bus = params.bus; + this.listenTo(this.bus, 'updateStatusMessage', this.statusMessage); }, + render() { this.$('#rentals').empty(); this.model.each((movie) => { @@ -16,6 +19,7 @@ const MovieListView = Backbone.View.extend({ template: this.template, tagname: 'li', className: 'rental', + bus: this.bus, }) this.$('#rentals').append(movieView.render().$el); }) @@ -45,6 +49,11 @@ const MovieListView = Backbone.View.extend({ }) }, + statusMessage: function(statusMessage) { + this.$('#status-messages').empty(); + this.$('#status-messages').html(`

${statusMessage}

`); + } + }); export default MovieListView; diff --git a/src/views/movie_view.js b/src/views/movie_view.js index 5f9ca6a84..11dc8a5a2 100644 --- a/src/views/movie_view.js +++ b/src/views/movie_view.js @@ -6,6 +6,7 @@ import Movie from '../models/movie'; const MovieView = Backbone.View.extend({ initialize(params) { this.template = params.template; + this.bus = params.bus; }, render() { const compiledTemplate = this.template(this.model.toJSON()); @@ -32,19 +33,24 @@ const MovieView = Backbone.View.extend({ addLib: function(e) { e.preventDefault(); - console.log(this.model); const newMovie = new Movie ({ title: this.model.get('title'), release_date: this.model.get('release_date'), }) newMovie.save({}, { - success: this.successSave(newMovie), + success: this.successSave.bind(this), + error: this.failSave.bind(this), }); }, successSave: function(newMovie) { - console.log(newMovie); - console.log('success'); + const statusMessage = `${newMovie.attributes.title} added to rental list!`; + this.bus.trigger('updateStatusMessage', statusMessage); + }, + + failSave: function(newMovie, response) { + const statusMessage = `${newMovie.attributes.title} unable to add to rental list!`; + this.bus.trigger('updateStatusMessage', statusMessage); } }) From 4accdd2a3b02f9d4798eea3405493051fde6bcbd Mon Sep 17 00:00:00 2001 From: Stef Date: Tue, 19 Dec 2017 19:02:08 -0800 Subject: [PATCH 08/12] All images showing. --- dist/index.html | 1 + src/app.js | 2 +- src/views/movie_list_view.js | 3 ++- src/views/movie_view.js | 1 + 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/dist/index.html b/dist/index.html index 9c87ec7b3..0a095d791 100644 --- a/dist/index.html +++ b/dist/index.html @@ -42,6 +42,7 @@

Movie Rentals

diff --git a/src/app.js b/src/app.js index e9f5b35b6..2ba7c2b13 100644 --- a/src/app.js +++ b/src/app.js @@ -34,6 +34,6 @@ $(document).ready(function() { // }); - $('#main-content').append('

Movies!

'); + }); diff --git a/src/views/movie_list_view.js b/src/views/movie_list_view.js index b5120b989..e60d1226e 100644 --- a/src/views/movie_list_view.js +++ b/src/views/movie_list_view.js @@ -35,6 +35,7 @@ const MovieListView = Backbone.View.extend({ e.preventDefault(); this.model.fetch().done(() => { this.render(); + console.log(this.model.models); }) }, @@ -53,7 +54,7 @@ const MovieListView = Backbone.View.extend({ this.$('#status-messages').empty(); this.$('#status-messages').html(`

${statusMessage}

`); } - + }); export default MovieListView; diff --git a/src/views/movie_view.js b/src/views/movie_view.js index 11dc8a5a2..0991c68cf 100644 --- a/src/views/movie_view.js +++ b/src/views/movie_view.js @@ -8,6 +8,7 @@ const MovieView = Backbone.View.extend({ this.template = params.template; this.bus = params.bus; }, + render() { const compiledTemplate = this.template(this.model.toJSON()); this.$el.html(compiledTemplate); From a7a80523ffeb376bead02ce80ca4699b5fcd1b77 Mon Sep 17 00:00:00 2001 From: Stef Date: Wed, 20 Dec 2017 09:12:47 -0800 Subject: [PATCH 09/12] Overview and Summary now showing. --- dist/index.html | 2 ++ src/app.js | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/dist/index.html b/dist/index.html index 0a095d791..e1525132e 100644 --- a/dist/index.html +++ b/dist/index.html @@ -43,6 +43,8 @@

Movie Rentals

diff --git a/src/app.js b/src/app.js index 2ba7c2b13..3eda8a733 100644 --- a/src/app.js +++ b/src/app.js @@ -1,4 +1,4 @@ -import 'css/_settings.css'; +//import 'css/_settings.css'; import 'foundation-sites/dist/css/foundation.css'; import './css/styles.css'; From 384a3945414f1d6b18d908f70b914781037e2ccf Mon Sep 17 00:00:00 2001 From: Stef Date: Wed, 20 Dec 2017 10:32:05 -0800 Subject: [PATCH 10/12] Add button not showing on rental list, only searches. --- dist/index.html | 1 - src/views/movie_list_view.js | 8 ++++---- src/views/movie_view.js | 7 +++++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/dist/index.html b/dist/index.html index e1525132e..df5e977ee 100644 --- a/dist/index.html +++ b/dist/index.html @@ -45,7 +45,6 @@

<%- title %>

Summary

<%- overview %>

Release Date

<%- release_date %>

- diff --git a/src/views/movie_list_view.js b/src/views/movie_list_view.js index e60d1226e..72dcf4fe4 100644 --- a/src/views/movie_list_view.js +++ b/src/views/movie_list_view.js @@ -11,7 +11,7 @@ const MovieListView = Backbone.View.extend({ this.listenTo(this.bus, 'updateStatusMessage', this.statusMessage); }, - render() { + render(args) { this.$('#rentals').empty(); this.model.each((movie) => { const movieView = new MovieView({ @@ -21,7 +21,7 @@ const MovieListView = Backbone.View.extend({ className: 'rental', bus: this.bus, }) - this.$('#rentals').append(movieView.render().$el); + this.$('#rentals').append(movieView.render(args).$el); }) return this; }, @@ -34,7 +34,7 @@ const MovieListView = Backbone.View.extend({ getRentals: function(e) { e.preventDefault(); this.model.fetch().done(() => { - this.render(); + this.render({button: false}); console.log(this.model.models); }) @@ -46,7 +46,7 @@ const MovieListView = Backbone.View.extend({ console.log(searchWord); this.model.fetch({ data: $.param({'query': searchWord}) }).done(() => { console.log(this.model); - this.render(); + this.render({button: true}); }) }, diff --git a/src/views/movie_view.js b/src/views/movie_view.js index 0991c68cf..19bf344ba 100644 --- a/src/views/movie_view.js +++ b/src/views/movie_view.js @@ -8,10 +8,13 @@ const MovieView = Backbone.View.extend({ this.template = params.template; this.bus = params.bus; }, - - render() { + + render(args) { const compiledTemplate = this.template(this.model.toJSON()); this.$el.html(compiledTemplate); + if (args.button) { + this.$el.append('') + } return this; }, From 78f36d35415db8955a798dac9ee421c4fccd7836 Mon Sep 17 00:00:00 2001 From: Stef Date: Wed, 20 Dec 2017 11:48:54 -0800 Subject: [PATCH 11/12] Validations, tests (passing), and status messages WIP. --- dist/index.html | 2 +- spec/test_spec.js | 32 +++++++++++++++++++++++++------- src/models/movie.js | 22 ++++++++++++++++++++++ src/views/movie_view.js | 33 +++++++++++++++++---------------- 4 files changed, 65 insertions(+), 24 deletions(-) diff --git a/dist/index.html b/dist/index.html index df5e977ee..3df9c057f 100644 --- a/dist/index.html +++ b/dist/index.html @@ -10,7 +10,7 @@
-

Status Messages Go Here!

+
diff --git a/spec/test_spec.js b/spec/test_spec.js index 9252883f2..698d05499 100644 --- a/spec/test_spec.js +++ b/spec/test_spec.js @@ -1,13 +1,31 @@ +import Movie from '../src/models/movie'; -describe('Sample spec', () => { - let a; +describe('Movie Spec', () => { + let movie - it('and so is a spec', () => { - a = true; + it('Creates a valid instance of a movie.', () => { + movie = new Movie ({ + title: 'A Street Cat Named Bob', + release_date: '2016-11-04', + }) - expect(a).toBe(true); + expect(movie.isValid()).toEqual(true); }); - xit('will not work', () => { - expect(false).toBe(true); + + it('Returns invalid if title is not present.', () => { + movie = new Movie ({ + release_date: '2016-11-04', + }) + + expect(movie.isValid()).toEqual(false); + }); + + it('Returns invalid if release date is not present.', () => { + movie = new Movie ({ + title: 'A Street Cat Named Bob', + }) + + expect(movie.isValid()).toEqual(false); }); + }); diff --git a/src/models/movie.js b/src/models/movie.js index 78e47a447..47a0db7fc 100644 --- a/src/models/movie.js +++ b/src/models/movie.js @@ -6,6 +6,28 @@ const Movie = Backbone.Model.extend({ parse(response) { return response }, + + validate(attributes) { + const errors = {}; + if (!attributes.title) { + errors['title'] = "Title is required!"; + } + + if (!attributes.release_date) { + errors['release_date'] = "Release date required!"; + } + + if (!attributes.hedwig) { + errors['hedwig'] = "Must have a cat!"; + } + + if (Object.keys(errors).length > 0) { + return errors; + } else { + return false; + } + }, + }); export default Movie; diff --git a/src/views/movie_view.js b/src/views/movie_view.js index 19bf344ba..e9d6579dc 100644 --- a/src/views/movie_view.js +++ b/src/views/movie_view.js @@ -23,28 +23,29 @@ const MovieView = Backbone.View.extend({ }, - // addLib: function(e) { - // e.preventDefault(); - // console.log(this.model); - // const newMovie = this.model; - // - // if (newMovie.isValid()) { - // newMovie.save({}, { - // success: this.successSave(newMovie), - // }); - // } - // }, - addLib: function(e) { e.preventDefault(); const newMovie = new Movie ({ title: this.model.get('title'), release_date: this.model.get('release_date'), }) - newMovie.save({}, { - success: this.successSave.bind(this), - error: this.failSave.bind(this), - }); + if (newMovie.isValid()) { + newMovie.save({}, { + success: this.successSave.bind(this), + error: this.failSave.bind(this), + }); + } else { + console.log(newMovie.validationError); + let statusMessage = ''; + console.log(newMovie.validationError); + console.log(Object.keys(newMovie.validationError)); + Object.keys(newMovie.validationError).forEach((key) => { + statusMessage = `${statusMessage}

${newMovie.validationError[key]}

`; + }); + console.log(statusMessage); + this.bus.trigger('updateStatusMessage', newMovie.validationError.values) + } + }, successSave: function(newMovie) { From 6af41b512f2edc70142c5062c091f234871f8ae3 Mon Sep 17 00:00:00 2001 From: Stef Date: Wed, 20 Dec 2017 13:27:22 -0800 Subject: [PATCH 12/12] Status messages completed. --- src/views/movie_list_view.js | 8 +++++--- src/views/movie_view.js | 24 ++++++------------------ 2 files changed, 11 insertions(+), 21 deletions(-) diff --git a/src/views/movie_list_view.js b/src/views/movie_list_view.js index 72dcf4fe4..eea3136c8 100644 --- a/src/views/movie_list_view.js +++ b/src/views/movie_list_view.js @@ -35,7 +35,6 @@ const MovieListView = Backbone.View.extend({ e.preventDefault(); this.model.fetch().done(() => { this.render({button: false}); - console.log(this.model.models); }) }, @@ -43,9 +42,12 @@ const MovieListView = Backbone.View.extend({ searchDBMovies: function(e) { e.preventDefault(); let searchWord = this.$('input[name=search-movies]').val(); - console.log(searchWord); this.model.fetch({ data: $.param({'query': searchWord}) }).done(() => { - console.log(this.model); + if (this.model.length == 0) { + this.statusMessage('No Results Found!') + } else { + this.statusMessage(`${this.model.length} Results Found.`) + } this.render({button: true}); }) }, diff --git a/src/views/movie_view.js b/src/views/movie_view.js index e9d6579dc..ff0439749 100644 --- a/src/views/movie_view.js +++ b/src/views/movie_view.js @@ -29,23 +29,11 @@ const MovieView = Backbone.View.extend({ title: this.model.get('title'), release_date: this.model.get('release_date'), }) - if (newMovie.isValid()) { - newMovie.save({}, { - success: this.successSave.bind(this), - error: this.failSave.bind(this), - }); - } else { - console.log(newMovie.validationError); - let statusMessage = ''; - console.log(newMovie.validationError); - console.log(Object.keys(newMovie.validationError)); - Object.keys(newMovie.validationError).forEach((key) => { - statusMessage = `${statusMessage}

${newMovie.validationError[key]}

`; - }); - console.log(statusMessage); - this.bus.trigger('updateStatusMessage', newMovie.validationError.values) - } + newMovie.save({}, { + success: this.successSave.bind(this), + error: this.failSave.bind(this), + }); }, successSave: function(newMovie) { @@ -53,10 +41,10 @@ const MovieView = Backbone.View.extend({ this.bus.trigger('updateStatusMessage', statusMessage); }, - failSave: function(newMovie, response) { + failSave: function(newMovie) { const statusMessage = `${newMovie.attributes.title} unable to add to rental list!`; this.bus.trigger('updateStatusMessage', statusMessage); - } + }, }) export default MovieView;