Remove from queue improvements

New: option to blacklist a release when removing it from download client
This commit is contained in:
Mark McDowall
2015-01-31 23:35:56 -08:00
parent 5d41ebd322
commit 3c641cab33
9 changed files with 153 additions and 48 deletions

View File

@@ -4,10 +4,13 @@ define(
[
'jquery',
'marionette',
'Cells/NzbDroneCell'
], function ($, Marionette, NzbDroneCell) {
return NzbDroneCell.extend({
'Cells/TemplatedCell',
'Activity/Queue/RemoveFromQueueView',
'vent'
], function ($, Marionette, TemplatedCell, RemoveFromQueueView, vent) {
return TemplatedCell.extend({
template : 'Activity/Queue/QueueActionsCellTemplate',
className : 'queue-actions-cell',
events: {
@@ -21,48 +24,11 @@ define(
grab : '.x-grab'
},
render: function () {
this.$el.empty();
if (this.cellValue) {
var status = this.cellValue.get('status').toLowerCase();
var trackedDownloadStatus = this.cellValue.has('trackedDownloadStatus') ? this.cellValue.get('trackedDownloadStatus').toLowerCase() : 'ok';
var icon = '';
var title = '';
if (status === 'completed' && trackedDownloadStatus === 'warning') {
icon = 'icon-inbox x-import';
title = 'Force import';
}
if (status === 'pending') {
icon = 'icon-download-alt x-grab';
title = 'Add to download queue (Override Delay Profile)';
}
//TODO: Show manual import if its completed or option to blacklist
//if (trackedDownloadStatus === 'error') {
// if (status === 'completed') {
// icon = 'icon-nd-import-failed';
// title = 'Import failed: ' + itemTitle;
// }
//TODO: What do we show when waiting for retry to take place?
// else {
// icon = 'icon-nd-download-failed';
// title = 'Download failed';
// }
//}
this.$el.html('<i class="{0}" title="{1}"></i>'.format(icon, title) +
'<i class="icon-nd-delete x-remove" title="Remove from Download Client"></i>');
}
return this;
},
_remove : function () {
this.model.destroy();
var showBlacklist = this.model.get('status') !== 'Pending';
vent.trigger(vent.Commands.OpenModalCommand, new RemoveFromQueueView({ model: this.model, showBlacklist: showBlacklist }));
},
_import : function () {

View File

@@ -0,0 +1,12 @@
{{#if_eq status compare="Completed"}}
{{#if_eq trackedDownloadStatus compare="Warning"}}
<i class="icon-inbox x-import" title="Force import"></i>
{{/if_eq}}
{{/if_eq}}
{{#if_eq status compare="Pending"}}
<i class="icon-download-alt x-grab" title="Add to download queue (Override Delay Profile)"></i>
<i class="icon-nd-delete x-remove" title="Remove pending release"></i>
{{else}}
<i class="icon-nd-delete x-remove" title="Remove from download client"></i>
{{/if_eq}}

View File

@@ -0,0 +1,39 @@
'use strict';
define(
[
'vent',
'marionette'
], function (vent, Marionette) {
return Marionette.ItemView.extend({
template: 'Activity/Queue/RemoveFromQueueViewTemplate',
events: {
'click .x-confirm-remove' : 'removeItem'
},
ui: {
blacklist : '.x-blacklist',
indicator : '.x-indicator'
},
initialize: function (options) {
this.templateHelpers = {
showBlacklist: options.showBlacklist
};
},
removeItem: function () {
var blacklist = this.ui.blacklist.prop('checked');
this.ui.indicator.show();
this.model.destroy({
data: { 'blacklist': blacklist },
wait: true
}).done(function () {
vent.trigger(vent.Commands.CloseModalCommand);
});
}
});
});

View File

@@ -0,0 +1,49 @@
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h3>{{title}}</h3>
</div>
<div class="modal-body remove-from-queue-modal">
<div class="row">
<div class="col-sm-12">
Are you sure you want to remove '{{title}}'?
</div>
</div>
{{#if showBlacklist}}
<div class="row">
<div class="col-sm-12">
<div class="form-horizontal">
<div class="form-group">
<label class="col-sm-4 control-label">Blacklist release</label>
<div class="col-sm-8">
<div class="input-group">
<label class="checkbox toggle well">
<input type="checkbox" class="x-blacklist"/>
<p>
<span>Yes</span>
<span>No</span>
</p>
<div class="btn slide-button btn-danger"/>
</label>
<span class="help-inline-checkbox">
<i class="icon-nd-form-info" title="Do you want to blacklist this release?"/>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
{{/if}}
</div>
<div class="modal-footer">
<span class="indicator x-indicator"><i class="icon-spinner icon-spin"></i></span>
<button class="btn" data-dismiss="modal">cancel</button>
<button class="btn btn-danger x-confirm-remove">remove</button>
</div>
</div>