From 1be62b374a1dd18df797cd66cd02e20a13f4c15f Mon Sep 17 00:00:00 2001 From: Keivan Beigi Date: Fri, 5 Jul 2013 17:29:29 -0700 Subject: [PATCH] disable delete profile button, show tooltip if profile is in use. --- .../Quality/Profile/QualityProfileView.js | 34 +++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/UI/Settings/Quality/Profile/QualityProfileView.js b/UI/Settings/Quality/Profile/QualityProfileView.js index 9dd7d429f..854520a24 100644 --- a/UI/Settings/Quality/Profile/QualityProfileView.js +++ b/UI/Settings/Quality/Profile/QualityProfileView.js @@ -6,17 +6,20 @@ define( 'marionette', 'Settings/Quality/Profile/EditQualityProfileView', 'Settings/Quality/Profile/DeleteView', + 'Series/SeriesCollection', 'Mixins/AsModelBoundView', - 'Settings/Quality/Profile/AllowedLabeler' + 'Settings/Quality/Profile/AllowedLabeler', + 'bootstrap', - ], function (App, Marionette, EditProfileView, DeleteProfileView, AsModelBoundView) { + ], function (App, Marionette, EditProfileView, DeleteProfileView, SeriesCollection, AsModelBoundView) { var view = Marionette.ItemView.extend({ template: 'Settings/Quality/Profile/QualityProfileTemplate', tagName : 'li', ui: { - 'progressbar': '.progress .bar' + 'progressbar' : '.progress .bar', + 'deleteButton': '.x-delete' }, events: { @@ -26,6 +29,7 @@ define( initialize: function () { this.listenTo(this.model, 'sync', this.render); + this.listenTo(SeriesCollection, 'all', this._updateDisableStatus) }, _editProfile: function () { @@ -34,8 +38,32 @@ define( }, _deleteProfile: function () { + if (this._isQualityInUse()) { + return; + } + var view = new DeleteProfileView({ model: this.model }); App.modalRegion.show(view); + }, + + onRender: function () { + this._updateDisableStatus(); + }, + + _updateDisableStatus: function () { + if (this._isQualityInUse()) { + this.ui.deleteButton.addClass('disabled'); + this.ui.deleteButton.attr('title', 'Can\'t delete quality profiles attached to a series.'); + } + else { + this.ui.deleteButton.removeClass('disabled'); + this.ui.deleteButton.attr('title', 'Delete Quality Profile'); + } + }, + + _isQualityInUse: function () { + return SeriesCollection.where({'qualityProfileId': this.model.id}).length !== 0; + } });