'use strict'; define( [ 'app', 'marionette', 'Settings/Quality/Profile/EditQualityProfileView', 'Settings/Quality/Profile/DeleteView', 'Series/SeriesCollection', 'Mixins/AsModelBoundView', 'Settings/Quality/Profile/AllowedLabeler', 'bootstrap', ], function (App, Marionette, EditProfileView, DeleteProfileView, SeriesCollection, AsModelBoundView) { var view = Marionette.ItemView.extend({ template: 'Settings/Quality/Profile/QualityProfileTemplate', tagName : 'li', ui: { 'progressbar' : '.progress .bar', 'deleteButton': '.x-delete' }, events: { 'click .x-edit' : '_editProfile', 'click .x-delete': '_deleteProfile' }, initialize: function () { this.listenTo(this.model, 'sync', this.render); this.listenTo(SeriesCollection, 'all', this._updateDisableStatus) }, _editProfile: function () { var view = new EditProfileView({ model: this.model, profileCollection: this.model.collection }); App.modalRegion.show(view); }, _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; } }); return AsModelBoundView.call(view); });