You've already forked Sonarr
							
							
				mirror of
				https://github.com/Sonarr/Sonarr.git
				synced 2025-10-31 00:07:55 +02:00 
			
		
		
		
	making modals event driven,
This commit is contained in:
		| @@ -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})); | ||||
|             }, | ||||
|  | ||||
|   | ||||
| @@ -98,7 +98,7 @@ define( | ||||
|             }, | ||||
|  | ||||
|             _setRootFolder: function (options) { | ||||
|                 App.modalRegion.closeModal(); | ||||
|                 App.vent.trigger(App.Commands.CloseModalCommand); | ||||
|                 this.ui.rootFolder.val(options.model.id); | ||||
|             }, | ||||
|  | ||||
|   | ||||
| @@ -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) { | ||||
|  | ||||
|   | ||||
| @@ -1,4 +0,0 @@ | ||||
| 'use strict'; | ||||
| define({ | ||||
|     ApiRoot  : '/api' | ||||
| }); | ||||
| @@ -49,7 +49,7 @@ define( | ||||
|                     message: 'Search started for: ' + message | ||||
|                 }); | ||||
|  | ||||
|                 App.modalRegion.closeModal(); | ||||
|                 App.vent.trigger(App.Commands.CloseModalCommand); | ||||
|             }, | ||||
|  | ||||
|             _searchManual: function (e) { | ||||
|   | ||||
| @@ -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, | ||||
|   | ||||
| @@ -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); | ||||
|                     }); | ||||
|             } | ||||
|         }); | ||||
|   | ||||
| @@ -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,15 +116,14 @@ 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') | ||||
|                     properties: { | ||||
|                         seriesId: this.model.get('id') | ||||
|                     }, | ||||
|                     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', | ||||
|   | ||||
| @@ -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); | ||||
|             } | ||||
|   | ||||
| @@ -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); | ||||
|                 } | ||||
|             }); | ||||
|         } | ||||
|   | ||||
| @@ -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', ''); | ||||
|                         }); | ||||
|                     }); | ||||
|                 } | ||||
|   | ||||
| @@ -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); | ||||
|                 } | ||||
|             }); | ||||
|         } | ||||
|   | ||||
| @@ -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); | ||||
|                 }); | ||||
|             } | ||||
|         }, | ||||
|   | ||||
| @@ -17,7 +17,7 @@ define( | ||||
|                 this.model.destroy({ | ||||
|                     wait: true | ||||
|                 }).done(function () { | ||||
|                         App.modalRegion.closeModal(); | ||||
|                         App.vent.trigger(App.Commands.CloseModalCommand); | ||||
|                     }); | ||||
|             } | ||||
|         }); | ||||
|   | ||||
| @@ -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); | ||||
|                 }); | ||||
|             } | ||||
|         } | ||||
|   | ||||
							
								
								
									
										42
									
								
								UI/Shared/Modal/Controller.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								UI/Shared/Modal/Controller.js
									
									
									
									
									
										Normal file
									
								
							| @@ -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(); | ||||
|     }); | ||||
| @@ -39,9 +39,15 @@ define( | ||||
|  | ||||
|         }); | ||||
|  | ||||
|         require( | ||||
|             [ | ||||
|                 'Shared/Modal/Controller' | ||||
|             ], function () { | ||||
|  | ||||
|                 app.addInitializer(function () { | ||||
|                     app.addRegions({ | ||||
|                 modalRegion       : region | ||||
|                         modalRegion: region | ||||
|                     }); | ||||
|                 }); | ||||
|             }); | ||||
|  | ||||
|   | ||||
							
								
								
									
										10
									
								
								UI/app.js
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								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 () { | ||||
| @@ -184,7 +188,7 @@ define( | ||||
|  | ||||
|         app.addRegions({ | ||||
|             mainRegion  : '#main-region', | ||||
|             footerRegion      : '#footer-region' | ||||
|             footerRegion: '#footer-region' | ||||
|         }); | ||||
|  | ||||
|         app.start(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user