1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2024-12-23 02:05:27 +02:00
Sonarr/NzbDrone.Web/Scripts/backbone/views/qualityProfiles.js

124 lines
4.4 KiB
JavaScript
Raw Normal View History

2012-11-09 19:28:59 +03:00
QualityProfileView = Backbone.Marionette.ItemView.extend({
tagName: "div",
className: "quality-profile",
2012-11-24 11:03:38 +03:00
template: "#QualityProfileTemplate",
2012-12-05 19:34:43 +03:00
initialize: function() {
this.model.on('destroy', this.remove, this)
},
2012-11-24 11:03:38 +03:00
events: {
2012-12-03 06:08:26 +03:00
'click .quality-selectee': 'toggleAllowed',
'change .cutoff': 'changeCutoff',
2012-12-05 19:34:43 +03:00
'change .name': 'changeName',
'click .remove-profile': 'destroy'
2012-11-24 11:03:38 +03:00
},
toggleAllowed: function (e) {
//Add to cutoff
//Update model
2012-12-03 06:08:26 +03:00
var target = $(e.target);
2012-12-11 07:39:35 +03:00
var el = $(this.el);
2012-11-24 11:03:38 +03:00
2012-12-03 06:08:26 +03:00
var checked = $(target).attr('checked') != undefined;
var id = this.model.get("Id");
var qualities = _.clone(this.model.get("Qualities"));
_.each(qualities, function (qualityType) {
var qualityId = parseInt($(target).attr('data-quality-id'));
if (qualityType.Id == qualityId) {
qualityType.Allowed = checked;
2012-12-11 07:39:35 +03:00
2012-12-03 06:08:26 +03:00
//Find cutoff dropdown
2012-12-11 07:39:35 +03:00
var cutoff = $(el).find('.cutoff');
2012-12-03 06:08:26 +03:00
if (checked) {
$('<option>' + qualityType.Name + '</option>').val(qualityId).appendTo(cutoff);
}
else {
$(cutoff).find('option[value="' + qualityId + '"]').remove();
}
2012-12-06 04:19:17 +03:00
//Todo: auto-sort by weight (which is not the value)
//$(cutoff).html($($(cutoff).children("option")).sort(function(a, b) {
// return a.value == b.value ? 0 : a.value < b.value ? -1 : 1;
//}));
2012-12-03 06:08:26 +03:00
}
});
this.model.set({ "Qualities": qualities });
this.model.save();
},
changeCutoff: function(e) {
var cutoff = $(e.target).val();
this.model.set({ "Cutoff": cutoff });
this.model.save();
},
changeName: function(e) {
var name = $(e.target).val();
this.model.set({ "Name": name });
this.model.save(this.model, {
success: function (model) {
var id = model.get('Id');
var name = model.get('Name');
var exists = $('#DefaultQualityProfileId option[value="' + id + '"]');
if (exists.length == 0)
$('#DefaultQualityProfileId').append($('\<option\> \</option\>').val(id).html(name));
else
$('#DefaultQualityProfileId option[value="' + id + '"]').html(name);
}
});
2012-12-05 19:34:43 +03:00
},
destroy: function (e) {
e.preventDefault();
$("#DefaultQualityProfileId option[value='" + this.model.get('Id') + "']").remove();
2012-12-05 19:34:43 +03:00
this.model.destroy();
e.stopPropagation();
},
remove: function (e) {
$(this.el).remove();
2012-11-24 11:03:38 +03:00
}
2012-11-07 03:41:34 +03:00
});
2012-11-09 19:28:59 +03:00
QualityProfileCollectionView = Backbone.Marionette.CompositeView.extend({
tagName: "div",
id: "quality-profile-collection",
itemView: QualityProfileView,
template: QualityProfileApp.Constants.Templates.QualityProfileCollection,
2012-11-07 03:41:34 +03:00
initialize: function () {
2012-11-09 19:28:59 +03:00
_.bindAll(this, 'render');
this.collection = new QualityProfileCollection();
this.collection.fetch();
this.collection.bind('reset', this.render);
2012-12-05 04:21:54 +03:00
},
events: {
'click #add-profile': 'addProfile'
},
addProfile: function (e) {
2012-12-11 07:39:35 +03:00
e.preventDefault();
//Todo: Need to get the default profile from the server, instead of creating it manually...
2012-12-11 07:39:35 +03:00
var newProfile = new QualityProfile({
2013-01-02 06:24:03 +03:00
Name: 'New Profile', Cutoff: 0, Qualities: [
2012-12-11 07:39:35 +03:00
{ "Id": 1, "Weight": 1, "Name": "SDTV", "Allowed": false },
2012-12-31 11:14:01 +03:00
{ "Id": 8, "Weight": 2, "Name": "WEBDL-480p", "Allowed": false },
{ "Id": 2, "Weight": 3, "Name": "DVD", "Allowed": false },
{ "Id": 4, "Weight": 4, "Name": "HDTV-720p", "Allowed": false },
{ "Id": 9, "Weight": 5, "Name": "HDTV-1080p", "Allowed": false },
{ "Id": 5, "Weight": 6, "Name": "WEBDL-720p", "Allowed": false },
2012-12-31 11:14:01 +03:00
{ "Id": 3, "Weight": 6, "Name": "WEBDL-1080p", "Allowed": false },
{ "Id": 6, "Weight": 8, "Name": "Bluray720p", "Allowed": false },
{ "Id": 7, "Weight": 9, "Name": "Bluray1080p", "Allowed": false }
2012-12-11 07:39:35 +03:00
]
});
2012-12-31 11:18:39 +03:00
//Todo: It would be nice to not have to save this on add (via create)
2012-12-31 11:14:01 +03:00
this.collection.create(newProfile);
2012-11-07 03:41:34 +03:00
}
});