From 62cea8de5eab178fa77e27668943dc4e42525b17 Mon Sep 17 00:00:00 2001 From: Keivan Beigi Date: Tue, 23 Jul 2013 18:15:58 -0700 Subject: [PATCH] making modals event driven, --- UI/AddSeries/AddSeriesLayout.js | 3 +- UI/AddSeries/SearchResultView.js | 2 +- UI/Calendar/CalendarView.js | 5 +-- UI/Constants.js | 4 -- UI/Episode/Search/Layout.js | 2 +- UI/History/Collection.js | 4 +- UI/Series/Delete/DeleteSeriesView.js | 2 +- UI/Series/Details/SeriesDetailsLayout.js | 22 +++++----- UI/Series/Edit/EditSeriesView.js | 19 +++++---- UI/Settings/Indexers/DeleteView.js | 2 +- UI/Settings/Indexers/EditView.js | 12 +++--- UI/Settings/Notifications/DeleteView.js | 2 +- UI/Settings/Notifications/EditView.js | 2 +- UI/Settings/Quality/Profile/DeleteView.js | 2 +- .../Quality/Profile/EditQualityProfileView.js | 2 +- UI/Shared/Modal/Controller.js | 42 +++++++++++++++++++ UI/Shared/Modal/Region.js | 14 +++++-- UI/app.js | 12 ++++-- 18 files changed, 100 insertions(+), 53 deletions(-) delete mode 100644 UI/Constants.js create mode 100644 UI/Shared/Modal/Controller.js diff --git a/UI/AddSeries/AddSeriesLayout.js b/UI/AddSeries/AddSeriesLayout.js index eb76f84f0..0cb7abd14 100644 --- a/UI/AddSeries/AddSeriesLayout.js +++ b/UI/AddSeries/AddSeriesLayout.js @@ -49,7 +49,8 @@ define( }, _folderSelected: function (options) { - App.modalRegion.closeModal(); + App.vent.trigger(App.Commands.CloseModalCommand); + this.workspace.show(new ExistingSeriesCollectionView({model: options.model})); }, diff --git a/UI/AddSeries/SearchResultView.js b/UI/AddSeries/SearchResultView.js index 75749dd91..458318228 100644 --- a/UI/AddSeries/SearchResultView.js +++ b/UI/AddSeries/SearchResultView.js @@ -98,7 +98,7 @@ define( }, _setRootFolder: function (options) { - App.modalRegion.closeModal(); + App.vent.trigger(App.Commands.CloseModalCommand); this.ui.rootFolder.val(options.model.id); }, diff --git a/UI/Calendar/CalendarView.js b/UI/Calendar/CalendarView.js index beb91f929..7539ef703 100644 --- a/UI/Calendar/CalendarView.js +++ b/UI/Calendar/CalendarView.js @@ -1,4 +1,4 @@ -'use strict'; +'use strict'; define( [ @@ -6,7 +6,6 @@ define( 'marionette', 'moment', 'Calendar/Collection', - 'Episode/Layout', 'fullcalendar' ], function (App, Marionette, Moment, CalendarCollection, EpisodeLayout) { @@ -37,7 +36,7 @@ define( $(element).addClass(event.statusLevel); $(element).children('.fc-event-inner').addClass(event.statusLevel); }, - eventClick : function (event) { + eventClick : function (event) { var view = new EpisodeLayout({ model: event.model }); App.modalRegion.show(view); } diff --git a/UI/Constants.js b/UI/Constants.js deleted file mode 100644 index 816e34eed..000000000 --- a/UI/Constants.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; -define({ - ApiRoot : '/api' -}); diff --git a/UI/Episode/Search/Layout.js b/UI/Episode/Search/Layout.js index 0aa35208a..f34cccbc7 100644 --- a/UI/Episode/Search/Layout.js +++ b/UI/Episode/Search/Layout.js @@ -49,7 +49,7 @@ define( message: 'Search started for: ' + message }); - App.modalRegion.closeModal(); + App.vent.trigger(App.Commands.CloseModalCommand); }, _searchManual: function (e) { diff --git a/UI/History/Collection.js b/UI/History/Collection.js index 644e9ac3a..525bf1e48 100644 --- a/UI/History/Collection.js +++ b/UI/History/Collection.js @@ -1,9 +1,9 @@ -'use strict'; +'use strict'; define( [ 'History/Model', 'backbone.pageable' - ], function ( HistoryModel, PageableCollection) { + ], function (HistoryModel, PageableCollection) { return PageableCollection.extend({ url : window.ApiRoot + '/history', model: HistoryModel, diff --git a/UI/Series/Delete/DeleteSeriesView.js b/UI/Series/Delete/DeleteSeriesView.js index b29e12722..75af268ca 100644 --- a/UI/Series/Delete/DeleteSeriesView.js +++ b/UI/Series/Delete/DeleteSeriesView.js @@ -25,7 +25,7 @@ define( wait: true }).done(function () { App.vent.trigger(App.Events.SeriesDeleted, { series: self.model }); - App.modalRegion.closeModal(); + App.vent.trigger(App.Commands.CloseModalCommand); }); } }); diff --git a/UI/Series/Details/SeriesDetailsLayout.js b/UI/Series/Details/SeriesDetailsLayout.js index 5d237caa2..d9c67bf03 100644 --- a/UI/Series/Details/SeriesDetailsLayout.js +++ b/UI/Series/Details/SeriesDetailsLayout.js @@ -6,11 +6,10 @@ define( 'Series/EpisodeCollection', 'Series/SeasonCollection', 'Series/Details/SeasonCollectionView', - 'Series/Edit/EditSeriesView', 'Shared/LoadingView', 'Shared/Actioneer', 'backstrech' - ], function (App, Marionette, EpisodeCollection, SeasonCollection, SeasonCollectionView, EditSeriesView, LoadingView, Actioneer) { + ], function (App, Marionette, EpisodeCollection, SeasonCollection, SeasonCollectionView, LoadingView, Actioneer) { return Marionette.Layout.extend({ itemViewContainer: '.x-series-seasons', @@ -78,7 +77,7 @@ define( _getFanArt: function () { var fanArt = _.where(this.model.get('images'), {coverType: 'fanart'}); - if(fanArt && fanArt[0]){ + if (fanArt && fanArt[0]) { return fanArt[0].url; } @@ -117,18 +116,17 @@ define( }, _editSeries: function () { - var view = new EditSeriesView({ model: this.model }); - App.modalRegion.show(view); + App.vent.trigger(App.Commands.EditSeriesCommand, {model: this.model}); }, _refreshSeries: function () { Actioneer.ExecuteCommand({ - command : 'refreshSeries', - properties : { - seriesId : this.model.get('id') + command : 'refreshSeries', + properties: { + seriesId: this.model.get('id') }, - element : this.ui.refresh, - leaveIcon : true + element : this.ui.refresh, + leaveIcon : true }); }, @@ -143,7 +141,7 @@ define( Actioneer.ExecuteCommand({ command : 'renameSeries', properties : { - seriesId : this.model.get('id') + seriesId: this.model.get('id') }, element : this.ui.rename, failMessage: 'Series search failed' @@ -154,7 +152,7 @@ define( Actioneer.ExecuteCommand({ command : 'seriesSearch', properties : { - seriesId : this.model.get('id') + seriesId: this.model.get('id') }, element : this.ui.search, failMessage : 'Series search failed', diff --git a/UI/Series/Edit/EditSeriesView.js b/UI/Series/Edit/EditSeriesView.js index 640c76adb..e7b72d88a 100644 --- a/UI/Series/Edit/EditSeriesView.js +++ b/UI/Series/Edit/EditSeriesView.js @@ -1,7 +1,7 @@ 'use strict'; define( [ - 'App', + 'app', 'marionette', 'Series/Delete/DeleteSeriesView', 'Quality/QualityProfileCollection', @@ -18,8 +18,8 @@ define( }, events: { - 'click .x-save' : 'saveSeries', - 'click .x-remove': 'removeSeries' + 'click .x-save' : '_saveSeries', + 'click .x-remove': '_removeSeries' }, @@ -28,22 +28,23 @@ define( }, - saveSeries: function () { + _saveSeries: function () { + var self = this; var qualityProfileId = this.ui.qualityProfile.val(); this.model.set({ qualityProfileId: qualityProfileId}); - this.model.save(); - this.trigger('saved'); - App.modalRegion.closeModal(); - + this.model.save().done(function () { + self.trigger('saved'); + App.vent.trigger(App.Commands.CloseModalCommand); + }); }, onRender: function () { this.ui.path.autoComplete('/directories'); }, - removeSeries: function () { + _removeSeries: function () { var view = new DeleteSeriesView({ model: this.model }); App.modalRegion.show(view); } diff --git a/UI/Settings/Indexers/DeleteView.js b/UI/Settings/Indexers/DeleteView.js index 3230c2fb0..b6d27184d 100644 --- a/UI/Settings/Indexers/DeleteView.js +++ b/UI/Settings/Indexers/DeleteView.js @@ -11,7 +11,7 @@ define(['app', 'marionette'], function (App, Marionette) { this.model.destroy({ wait : true, success: function () { - App.modalRegion.closeModal(); + App.vent.trigger(App.Commands.CloseModalCommand); } }); } diff --git a/UI/Settings/Indexers/EditView.js b/UI/Settings/Indexers/EditView.js index e805df302..e0fc8f0f0 100644 --- a/UI/Settings/Indexers/EditView.js +++ b/UI/Settings/Indexers/EditView.js @@ -1,4 +1,4 @@ -'use strict'; +'use strict'; define( [ @@ -11,7 +11,7 @@ define( template: 'Settings/Indexers/EditTemplate', events: { - 'click .x-save': '_save', + 'click .x-save' : '_save', 'click .x-save-and-add': '_saveAndAdd' }, @@ -26,7 +26,7 @@ define( if (promise) { promise.done(function () { self.indexerCollection.add(self.model, { merge: true }); - App.modalRegion.closeModal(); + App.vent.trigger(App.Commands.CloseModalCommand); }); } }, @@ -40,13 +40,13 @@ define( self.indexerCollection.add(self.model, { merge: true }); self.model.set({ - id: undefined, - name: '', + id : undefined, + name : '', enable: false }); _.each(self.model.get('fields'), function (value, key, list) { - self.model.set('fields.' + key +'.value', ''); + self.model.set('fields.' + key + '.value', ''); }); }); } diff --git a/UI/Settings/Notifications/DeleteView.js b/UI/Settings/Notifications/DeleteView.js index 4ac5c71c5..68af79465 100644 --- a/UI/Settings/Notifications/DeleteView.js +++ b/UI/Settings/Notifications/DeleteView.js @@ -11,7 +11,7 @@ define(['app', 'marionette'], function (App, Marionette) { this.model.destroy({ wait : true, success: function () { - App.modalRegion.closeModal(); + App.vent.trigger(App.Commands.CloseModalCommand); } }); } diff --git a/UI/Settings/Notifications/EditView.js b/UI/Settings/Notifications/EditView.js index ebcb13ff0..312e48b88 100644 --- a/UI/Settings/Notifications/EditView.js +++ b/UI/Settings/Notifications/EditView.js @@ -39,7 +39,7 @@ define([ if (promise) { promise.done(function () { self.notificationCollection.add(self.model, { merge: true }); - App.modalRegion.closeModal(); + App.vent.trigger(App.Commands.CloseModalCommand); }); } }, diff --git a/UI/Settings/Quality/Profile/DeleteView.js b/UI/Settings/Quality/Profile/DeleteView.js index 33b6c6df8..1805e66f9 100644 --- a/UI/Settings/Quality/Profile/DeleteView.js +++ b/UI/Settings/Quality/Profile/DeleteView.js @@ -17,7 +17,7 @@ define( this.model.destroy({ wait: true }).done(function () { - App.modalRegion.closeModal(); + App.vent.trigger(App.Commands.CloseModalCommand); }); } }); diff --git a/UI/Settings/Quality/Profile/EditQualityProfileView.js b/UI/Settings/Quality/Profile/EditQualityProfileView.js index cd951db90..9cfa23926 100644 --- a/UI/Settings/Quality/Profile/EditQualityProfileView.js +++ b/UI/Settings/Quality/Profile/EditQualityProfileView.js @@ -63,7 +63,7 @@ define(['app', 'marionette', 'Mixins/AsModelBoundView'], function (App, Marionet if (promise) { promise.done(function () { self.profileCollection.add(self.model, { merge: true }); - App.modalRegion.closeModal(); + App.vent.trigger(App.Commands.CloseModalCommand); }); } } diff --git a/UI/Shared/Modal/Controller.js b/UI/Shared/Modal/Controller.js new file mode 100644 index 000000000..8779dd529 --- /dev/null +++ b/UI/Shared/Modal/Controller.js @@ -0,0 +1,42 @@ +'use strict'; +define( + [ + 'app', + 'marionette', + 'Series/Edit/EditSeriesView', + 'Series/Delete/DeleteSeriesView', + 'Episode/Layout' + + ], function (App, Marionette, EditSeriesView, DeleteSeriesView, EpisodeLayout) { + + var router = Marionette.AppRouter.extend({ + + initialize: function () { + App.vent.on(App.Commands.CloseModalCommand, this._closeModal, this); + App.vent.on(App.Commands.EditSeriesCommand, this._editSeries, this); + App.vent.on(App.Commands.DeleteSeriesCommand, this._deleteSeries, this); + App.vent.on(App.Commands.ShowEpisodeDetails, this._showEpisode, this); + }, + + _closeModal: function () { + App.vent.trigger(App.Commands.CloseModalCommand); + }, + + _editSeries: function (options) { + var view = new EditSeriesView({ model: options.model }); + App.modalRegion.show(view); + }, + + _deleteSeries: function (options) { + var view = new DeleteSeriesView({ model: options.model }); + App.modalRegion.show(view); + }, + + _showEpisode: function (options) { + var view = new EpisodeLayout({ model: options.model }); + App.modalRegion.show(view); + } + }); + + return new router(); + }); diff --git a/UI/Shared/Modal/Region.js b/UI/Shared/Modal/Region.js index 9e89d3c37..a0cab051c 100644 --- a/UI/Shared/Modal/Region.js +++ b/UI/Shared/Modal/Region.js @@ -39,11 +39,17 @@ define( }); - app.addInitializer(function () { - app.addRegions({ - modalRegion : region + require( + [ + 'Shared/Modal/Controller' + ], function () { + + app.addInitializer(function () { + app.addRegions({ + modalRegion: region + }); + }); }); - }); return region; }); diff --git a/UI/app.js b/UI/app.js index 9652b433a..e33f7cd7c 100644 --- a/UI/app.js +++ b/UI/app.js @@ -170,12 +170,16 @@ define( var app = new Marionette.Application(); app.Events = { - SeriesAdded: 'series:added', + SeriesAdded : 'series:added', SeriesDeleted: 'series:deleted' }; app.Commands = { - SaveSettings: 'saveSettings' + EditSeriesCommand : 'EditSeriesCommand', + DeleteSeriesCommand: 'DeleteSeriesCommand', + CloseModalCommand : 'CloseModalCommand', + ShowEpisodeDetails : 'ShowEpisodeDetails', + SaveSettings : 'saveSettings' }; app.addInitializer(function () { @@ -183,8 +187,8 @@ define( }); app.addRegions({ - mainRegion : '#main-region', - footerRegion : '#footer-region' + mainRegion : '#main-region', + footerRegion: '#footer-region' }); app.start();