diff --git a/UI/Cells/Edit/QualityCellEditor.js b/UI/Cells/Edit/QualityCellEditor.js
new file mode 100644
index 000000000..a9bb9c856
--- /dev/null
+++ b/UI/Cells/Edit/QualityCellEditor.js
@@ -0,0 +1,69 @@
+'use strict';
+define(
+ [
+ 'backgrid',
+ 'Settings/Quality/Profile/QualityProfileSchemaCollection'
+ ], function (Backgrid, QualityProfileSchemaCollection) {
+ return Backgrid.CellEditor.extend({
+
+ className: 'quality-cell-editor',
+ template : 'Cells/Edit/QualityCellEditorTemplate',
+ tagName : 'select',
+
+ events: {
+ 'change': 'save',
+ 'blur': 'close',
+ 'keydown': 'close'
+ },
+
+ render: function () {
+ var self = this;
+
+ var qualityProfileSchemaCollection = new QualityProfileSchemaCollection();
+ var promise = qualityProfileSchemaCollection.fetch();
+
+ promise.done(function () {
+ var templateName = self.template;
+ self.schema = qualityProfileSchemaCollection.first();
+
+ var selected = _.find(self.schema.get('available'), { 'id': self.cell.cellValue.get('quality').id });
+ selected.selected = true;
+
+ self.templateFunction = Marionette.TemplateCache.get(templateName);
+ var data = self.schema.toJSON();
+ var html = self.templateFunction(data);
+ self.$el.html(html);
+ });
+
+ return this;
+ },
+
+ save: function (e) {
+ var model = this.model;
+ var column = this.column;
+ var selected = parseInt(this.$el.val());
+
+ var quality = _.find(this.schema.get('available'), { 'id': selected });
+
+ var newQuality = {
+ proper: false,
+ quality: quality
+ };
+
+ model.set(column.get("name"), newQuality);
+ model.trigger("backgrid:edited", model, column, new Backgrid.Command(e));
+ },
+
+ close: function (e) {
+ var model = this.model;
+ var column = this.column;
+ var command = new Backgrid.Command(e);
+
+ model.trigger("backgrid:edited", model, column, command);
+ },
+
+ _setOptions: function (options) {
+ this.cell = options.cell
+ }
+ });
+ });
diff --git a/UI/Cells/Edit/QualityCellEditorTemplate.html b/UI/Cells/Edit/QualityCellEditorTemplate.html
new file mode 100644
index 000000000..92d3bea99
--- /dev/null
+++ b/UI/Cells/Edit/QualityCellEditorTemplate.html
@@ -0,0 +1,7 @@
+{{#each available}}
+ {{#if selected}}
+
+ {{else}}
+
+ {{/if}}
+{{/each}}
\ No newline at end of file
diff --git a/UI/Cells/NzbDroneCell.js b/UI/Cells/NzbDroneCell.js
index 4f23f251a..706eb058e 100644
--- a/UI/Cells/NzbDroneCell.js
+++ b/UI/Cells/NzbDroneCell.js
@@ -14,6 +14,12 @@ define(
this.cellValue = this._getValue();
this.listenTo(this.model, 'change', this._refresh);
+
+ this.listenTo(this.model, "backgrid:edit", function (model, column, cell, editor) {
+ if (column.get("name") == this.column.get("name")) {
+ this._startEditing(model, column, cell, editor);
+ }
+ });
},
_refresh: function () {
diff --git a/UI/Cells/QualityCell.js b/UI/Cells/QualityCell.js
index 65d5b28cc..0dba839aa 100644
--- a/UI/Cells/QualityCell.js
+++ b/UI/Cells/QualityCell.js
@@ -1,12 +1,17 @@
'use strict';
define(
[
- 'Cells/TemplatedCell'
- ], function (TemplatedCell) {
+ 'Cells/TemplatedCell',
+ 'Cells/Edit/QualityCellEditor'
+ ], function (TemplatedCell, QualityCellEditor) {
return TemplatedCell.extend({
className: 'quality-cell',
- template : 'Cells/QualityCellTemplate'
+ template : 'Cells/QualityCellTemplate',
+ editor : QualityCellEditor,
+ _startEditing: function (model, column, cell, editor) {
+ editor._setOptions({ cell: cell });
+ }
});
});
diff --git a/UI/Cells/TemplatedCell.js b/UI/Cells/TemplatedCell.js
index 1c82ef9d6..1da28d5ed 100644
--- a/UI/Cells/TemplatedCell.js
+++ b/UI/Cells/TemplatedCell.js
@@ -7,7 +7,6 @@ define(
], function (Marionette, NzbDroneCell) {
return NzbDroneCell.extend({
-
render: function () {
var templateName = this.column.get('template') || this.template;
@@ -17,6 +16,7 @@ define(
var html = this.templateFunction(data);
this.$el.html(html);
+ this.delegateEvents();
return this;
}
});
diff --git a/UI/Episode/Summary/Layout.js b/UI/Episode/Summary/Layout.js
index 72f0c08b0..f47d3ae15 100644
--- a/UI/Episode/Summary/Layout.js
+++ b/UI/Episode/Summary/Layout.js
@@ -34,7 +34,8 @@ define(
name : 'quality',
label : 'Quality',
cell : QualityCell,
- sortable: false
+ sortable: false,
+ editable: true
}
],
diff --git a/UI/Settings/Quality/Profile/QualityProfileCollectionView.js b/UI/Settings/Quality/Profile/QualityProfileCollectionView.js
index 2e504d1b4..7ea2e822c 100644
--- a/UI/Settings/Quality/Profile/QualityProfileCollectionView.js
+++ b/UI/Settings/Quality/Profile/QualityProfileCollectionView.js
@@ -4,8 +4,8 @@ define(['app',
'marionette',
'Settings/Quality/Profile/QualityProfileView',
'Settings/Quality/Profile/EditQualityProfileView',
- 'Settings/Quality/Profile/QualityProfileSchemaCollection'],
- function (App, Marionette, QualityProfileView, EditProfileView, ProfileCollection) {
+ 'Settings/Quality/Profile/QualityProfileSchemaCollection'
+], function (App, Marionette, QualityProfileView, EditProfileView, ProfileCollection) {
return Marionette.CompositeView.extend({
itemView : QualityProfileView,
@@ -24,7 +24,6 @@ define(['app',
collectionView.ui.addCard.parent('li').before(itemView.el);
},
-
_addProfile: function () {
var self = this;
var schemaCollection = new ProfileCollection();