From 9d94c4490f2de0a3a4845903303f1202ef6a5aa6 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Wed, 20 Nov 2013 17:44:32 -0800 Subject: [PATCH] Cleanup! --- .../029_add_formats_to_naming_config.cs | 39 +++++++++++++------ .../030_update_season_folder_format.cs | 4 +- src/NzbDrone.Core/Organizer/NamingConfig.cs | 4 +- .../MediaManagement/Naming/NamingView.js | 24 ++++++++---- .../Naming/Wizard/NamingWizardModel.js | 2 +- .../Naming/Wizard/NamingWizardView.js | 38 ++++++------------ .../Wizard/NamingWizardViewTemplate.html | 8 ++-- src/UI/Shared/Modal/Controller.js | 14 +++---- src/UI/vent.js | 1 + 9 files changed, 74 insertions(+), 60 deletions(-) diff --git a/src/NzbDrone.Core/Datastore/Migration/029_add_formats_to_naming_config.cs b/src/NzbDrone.Core/Datastore/Migration/029_add_formats_to_naming_config.cs index f3bbba37f..fbcd4cb2b 100644 --- a/src/NzbDrone.Core/Datastore/Migration/029_add_formats_to_naming_config.cs +++ b/src/NzbDrone.Core/Datastore/Migration/029_add_formats_to_naming_config.cs @@ -26,14 +26,21 @@ namespace NzbDrone.Core.Datastore.Migration namingConfigCmd.CommandText = @"SELECT * FROM NamingConfig LIMIT 1"; using (IDataReader namingConfigReader = namingConfigCmd.ExecuteReader()) { + var separatorIndex = namingConfigReader.GetOrdinal("Separator"); + var numberStyleIndex = namingConfigReader.GetOrdinal("NumberStyle"); + var includeSeriesTitleIndex = namingConfigReader.GetOrdinal("IncludeSeriesTitle"); + var includeEpisodeTitleIndex = namingConfigReader.GetOrdinal("IncludeEpisodeTitle"); + var includeQualityIndex = namingConfigReader.GetOrdinal("IncludeQuality"); + var replaceSpacesIndex = namingConfigReader.GetOrdinal("ReplaceSpaces"); + while (namingConfigReader.Read()) { - var separator = namingConfigReader.GetString(1); - var numberStyle = namingConfigReader.GetInt32(2); - var includeSeriesTitle = namingConfigReader.GetBoolean(3); - var includeEpisodeTitle = namingConfigReader.GetBoolean(5); - var includeQuality = namingConfigReader.GetBoolean(6); - var replaceSpaces = namingConfigReader.GetBoolean(7); + var separator = namingConfigReader.GetString(separatorIndex); + var numberStyle = namingConfigReader.GetInt32(numberStyleIndex); + var includeSeriesTitle = namingConfigReader.GetBoolean(includeSeriesTitleIndex); + var includeEpisodeTitle = namingConfigReader.GetBoolean(includeEpisodeTitleIndex); + var includeQuality = namingConfigReader.GetBoolean(includeQualityIndex); + var replaceSpaces = namingConfigReader.GetBoolean(replaceSpacesIndex); //Output settings var seriesTitlePattern = ""; @@ -43,21 +50,31 @@ namespace NzbDrone.Core.Datastore.Migration if (includeSeriesTitle) { - seriesTitlePattern = "{Series Title}" + separator; - if (replaceSpaces) { - seriesTitlePattern = "{Series.Title}" + separator; + seriesTitlePattern = "{Series.Title}"; + } + + else + { + seriesTitlePattern = "{Series Title}"; } + + seriesTitlePattern += separator; } if (includeEpisodeTitle) { - episodeTitlePattern = separator + "{Episode Title}"; + episodeTitlePattern = separator; if (replaceSpaces) { - episodeTitlePattern = separator + "{Episode.Title}"; + episodeTitlePattern += "{Episode.Title}"; + } + + else + { + episodeTitlePattern += "{Episode Title}"; } } diff --git a/src/NzbDrone.Core/Datastore/Migration/030_update_season_folder_format.cs b/src/NzbDrone.Core/Datastore/Migration/030_update_season_folder_format.cs index 133e5146a..b6ba5e686 100644 --- a/src/NzbDrone.Core/Datastore/Migration/030_update_season_folder_format.cs +++ b/src/NzbDrone.Core/Datastore/Migration/030_update_season_folder_format.cs @@ -21,9 +21,11 @@ namespace NzbDrone.Core.Datastore.Migration namingConfigCmd.CommandText = @"SELECT * FROM Config WHERE [Key] = 'seasonfolderformat'"; using (IDataReader namingConfigReader = namingConfigCmd.ExecuteReader()) { + var valueIndex = namingConfigReader.GetOrdinal("[Value]"); + while (namingConfigReader.Read()) { - var value = namingConfigReader.GetString(2); + var value = namingConfigReader.GetString(valueIndex); value = value.Replace("%sn", "{Series Title}") .Replace("%s.n", "{Series.Title}") diff --git a/src/NzbDrone.Core/Organizer/NamingConfig.cs b/src/NzbDrone.Core/Organizer/NamingConfig.cs index 5b28999c3..a7b7c6b8b 100644 --- a/src/NzbDrone.Core/Organizer/NamingConfig.cs +++ b/src/NzbDrone.Core/Organizer/NamingConfig.cs @@ -12,8 +12,8 @@ namespace NzbDrone.Core.Organizer { RenameEpisodes = false, MultiEpisodeStyle = 0, - StandardEpisodeFormat = "", - DailyEpisodeFormat = "" + StandardEpisodeFormat = "{Series Title} - S{season:00}E{episode:00} - {Episode Title} {Quality Title}", + DailyEpisodeFormat = "{Series Title} - {Air-Date} - {Episode Title} {Quality Title}" }; } } diff --git a/src/UI/Settings/MediaManagement/Naming/NamingView.js b/src/UI/Settings/MediaManagement/Naming/NamingView.js index f6355e24b..8592aa87e 100644 --- a/src/UI/Settings/MediaManagement/Naming/NamingView.js +++ b/src/UI/Settings/MediaManagement/Naming/NamingView.js @@ -1,13 +1,13 @@ 'use strict'; define( [ - 'jquery', 'vent', 'marionette', 'Settings/MediaManagement/Naming/NamingSampleModel', + 'Settings/MediaManagement/Naming/Wizard/NamingWizardView', 'Mixins/AsModelBoundView', 'Mixins/AsValidatedView' - ], function ($, vent, Marionette, NamingSampleModel, AsModelBoundView, AsValidatedView) { + ], function (vent, Marionette, NamingSampleModel, NamingWizardView, AsModelBoundView, AsValidatedView) { var view = Marionette.ItemView.extend({ template: 'Settings/MediaManagement/Naming/NamingViewTemplate', @@ -28,7 +28,7 @@ define( }, onRender: function () { - if (!this.model.get('renameEpisodes')) { + if (!this.model.has('renameEpisodes')) { this.ui.namingOptions.hide(); } @@ -61,6 +61,10 @@ define( }, _showWizard: function () { + var modalView = new NamingWizardView(); + vent.trigger(vent.Commands.OpenModalCommand, modalView); + this.listenTo(modalView, modalView.formatsUpdated, this._updateFormats); + vent.trigger(vent.Commands.ShowNamingWizard, { model: this.model }); }, @@ -70,20 +74,26 @@ define( var target = e.target; var token = ''; - var input = $(target).closest('.x-helper-input').children('input'); + var input = this.$(target).closest('.x-helper-input').children('input'); - if ($(target).attr('data-token')) { - token = '{{0}}'.format($(target).attr('data-token')); + if (this.$(target).attr('data-token')) { + token = '{{0}}'.format(this.$(target).attr('data-token')); } else { - token = $(target).attr('data-separator'); + token = this.$(target).attr('data-separator'); } input.val(input.val() + token); this.ui.namingTokenHelper.removeClass('open'); input.focus(); + }, + + _updateFormats: function (options) { + this.model.set('standardEpisodeFormat', options.standardEpisodeFormat); + this.model.set('dailyEpisodeFormat', options.dailyEpisodeFormat); + this.model.set('multiEpisodeStyle', options.multiEpisodeStyle); } }); diff --git a/src/UI/Settings/MediaManagement/Naming/Wizard/NamingWizardModel.js b/src/UI/Settings/MediaManagement/Naming/Wizard/NamingWizardModel.js index e102e5cc4..6d6806538 100644 --- a/src/UI/Settings/MediaManagement/Naming/Wizard/NamingWizardModel.js +++ b/src/UI/Settings/MediaManagement/Naming/Wizard/NamingWizardModel.js @@ -10,7 +10,7 @@ define( includeQuality : true, replaceSpaces : false, separator : ' - ', - numberStyle : '2', + numberStyle : 'S{season:00}E{episode:00}', multiEpisodeStyle : 0 } }); diff --git a/src/UI/Settings/MediaManagement/Naming/Wizard/NamingWizardView.js b/src/UI/Settings/MediaManagement/Naming/Wizard/NamingWizardView.js index d98bfb6db..eb48dd081 100644 --- a/src/UI/Settings/MediaManagement/Naming/Wizard/NamingWizardView.js +++ b/src/UI/Settings/MediaManagement/Naming/Wizard/NamingWizardView.js @@ -22,17 +22,14 @@ define( 'click .x-apply': '_applyNaming' }, - initialize: function (options) { + formatsUpdated: 'formatsUpdated', + + initialize: function () { this.model = new NamingWizardModel(); - this.namingModel = options.model; this.namingSampleModel = new NamingSampleModel(); }, onRender: function () { - if (!this.model.get('renameEpisodes')) { - this.ui.namingOptions.hide(); - } - this.listenTo(this.model, 'change', this._buildFormat); this.listenTo(this.namingSampleModel, 'sync', this._showSamples); this._buildFormat(); @@ -56,9 +53,14 @@ define( }, _applyNaming: function () { - this.namingModel.set('standardEpisodeFormat', this.standardEpisodeFormat); - this.namingModel.set('dailyEpisodeFormat', this.dailyEpisodeFormat); - this.namingModel.set('multiEpisodeStyle', this.model.get('multiEpisodeStyle')); + var options = { + standardEpisodeFormat: this.standardEpisodeFormat, + dailyEpisodeFormat: this.dailyEpisodeFormat, + multiEpisodeStyle: this.model.get('multiEpisodeStyle') + }; + + this.trigger(this.formatsUpdated, options); + vent.trigger(vent.Commands.CloseModalCommand); }, @@ -82,23 +84,7 @@ define( this.dailyEpisodeFormat += this.model.get('separator'); } - switch (this.model.get('numberStyle')) { - case '0': - this.standardEpisodeFormat += '{season}x{episode:00}'; - break; - case '1': - this.standardEpisodeFormat += '{season:00}x{episode:00}'; - break; - case '2': - this.standardEpisodeFormat += 'S{season:00}E{episode:00}'; - break; - case '3': - this.standardEpisodeFormat += 's{season:00}e{episode:00}'; - break; - default: - this.standardEpisodeFormat += 'Unknown Number Pattern'; - } - + this.standardEpisodeFormat += this.model.get('numberStyle'); this.dailyEpisodeFormat += '{Air-Date}'; if (this.model.get('includeEpisodeTitle')) { diff --git a/src/UI/Settings/MediaManagement/Naming/Wizard/NamingWizardViewTemplate.html b/src/UI/Settings/MediaManagement/Naming/Wizard/NamingWizardViewTemplate.html index 5857fb301..484ad6b5a 100644 --- a/src/UI/Settings/MediaManagement/Naming/Wizard/NamingWizardViewTemplate.html +++ b/src/UI/Settings/MediaManagement/Naming/Wizard/NamingWizardViewTemplate.html @@ -89,10 +89,10 @@
diff --git a/src/UI/Shared/Modal/Controller.js b/src/UI/Shared/Modal/Controller.js index 7295c6e1c..199aed4e6 100644 --- a/src/UI/Shared/Modal/Controller.js +++ b/src/UI/Shared/Modal/Controller.js @@ -9,19 +9,22 @@ define( 'Episode/EpisodeDetailsLayout', 'History/Details/HistoryDetailsView', 'System/Logs/Table/Details/LogDetailsView', - 'Settings/MediaManagement/Naming/Wizard/NamingWizardView' - ], function (vent, AppLayout, Marionette, EditSeriesView, DeleteSeriesView, EpisodeDetailsLayout, HistoryDetailsView, LogDetailsView, NamingWizardView) { + ], function (vent, AppLayout, Marionette, EditSeriesView, DeleteSeriesView, EpisodeDetailsLayout, HistoryDetailsView, LogDetailsView) { return Marionette.AppRouter.extend({ initialize: function () { + vent.on(vent.Commands.OpenModalCommand, this._openModal, this); vent.on(vent.Commands.CloseModalCommand, this._closeModal, this); vent.on(vent.Commands.EditSeriesCommand, this._editSeries, this); vent.on(vent.Commands.DeleteSeriesCommand, this._deleteSeries, this); vent.on(vent.Commands.ShowEpisodeDetails, this._showEpisode, this); vent.on(vent.Commands.ShowHistoryDetails, this._showHistory, this); vent.on(vent.Commands.ShowLogDetails, this._showLogDetails, this); - vent.on(vent.Commands.ShowNamingWizard, this._showNamingWizard, this); + }, + + _openModal: function (view) { + AppLayout.modalRegion.show(view); }, _closeModal: function () { @@ -51,11 +54,6 @@ define( _showLogDetails: function (options) { var view = new LogDetailsView({ model: options.model }); AppLayout.modalRegion.show(view); - }, - - _showNamingWizard: function (options) { - var view = new NamingWizardView({ model: options.model }); - AppLayout.modalRegion.show(view); } }); }); diff --git a/src/UI/vent.js b/src/UI/vent.js index d1405ccd4..348e9c461 100644 --- a/src/UI/vent.js +++ b/src/UI/vent.js @@ -18,6 +18,7 @@ define( vent.Commands = { EditSeriesCommand : 'EditSeriesCommand', DeleteSeriesCommand: 'DeleteSeriesCommand', + OpenModalCommand : 'OpenModalCommand', CloseModalCommand : 'CloseModalCommand', ShowEpisodeDetails : 'ShowEpisodeDetails', ShowHistoryDetails : 'ShowHistoryDetails',