|
|
@ -7,92 +7,121 @@ var FormatHelpers = require('../Shared/FormatHelpers');
|
|
|
|
|
|
|
|
|
|
|
|
module.exports = NzbDroneCell.extend({
|
|
|
|
module.exports = NzbDroneCell.extend({
|
|
|
|
className : 'episode-status-cell',
|
|
|
|
className : 'episode-status-cell',
|
|
|
|
|
|
|
|
|
|
|
|
render : function() {
|
|
|
|
render : function() {
|
|
|
|
this.listenTo(QueueCollection, 'sync', this._renderCell);
|
|
|
|
this.listenTo(QueueCollection, 'sync', this._renderCell);
|
|
|
|
|
|
|
|
|
|
|
|
this._renderCell();
|
|
|
|
this._renderCell();
|
|
|
|
|
|
|
|
|
|
|
|
return this;
|
|
|
|
return this;
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
_renderCell : function() {
|
|
|
|
_renderCell : function() {
|
|
|
|
|
|
|
|
|
|
|
|
if (this.episodeFile) {
|
|
|
|
if (this.episodeFile) {
|
|
|
|
this.stopListening(this.episodeFile, 'change', this._refresh);
|
|
|
|
this.stopListening(this.episodeFile, 'change', this._refresh);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
this.$el.empty();
|
|
|
|
this.$el.empty();
|
|
|
|
|
|
|
|
|
|
|
|
if (this.model) {
|
|
|
|
if (this.model) {
|
|
|
|
|
|
|
|
|
|
|
|
var icon;
|
|
|
|
var icon;
|
|
|
|
var tooltip;
|
|
|
|
var tooltip;
|
|
|
|
|
|
|
|
|
|
|
|
var hasAired = moment(this.model.get('airDateUtc')).isBefore(moment());
|
|
|
|
var hasAired = moment(this.model.get('airDateUtc')).isBefore(moment());
|
|
|
|
this.episodeFile = this._getFile();
|
|
|
|
this.episodeFile = this._getFile();
|
|
|
|
|
|
|
|
|
|
|
|
if (this.episodeFile) {
|
|
|
|
if (this.episodeFile) {
|
|
|
|
this.listenTo(this.episodeFile, 'change', this._refresh);
|
|
|
|
this.listenTo(this.episodeFile, 'change', this._refresh);
|
|
|
|
|
|
|
|
|
|
|
|
var quality = this.episodeFile.get('quality');
|
|
|
|
var quality = this.episodeFile.get('quality');
|
|
|
|
var revision = quality.revision;
|
|
|
|
var revision = quality.revision;
|
|
|
|
var size = FormatHelpers.bytes(this.episodeFile.get('size'));
|
|
|
|
var size = FormatHelpers.bytes(this.episodeFile.get('size'));
|
|
|
|
var title = 'Episode downloaded';
|
|
|
|
var title = 'Episode downloaded';
|
|
|
|
|
|
|
|
|
|
|
|
if (revision.real && revision.real > 0) {
|
|
|
|
if (revision.real && revision.real > 0) {
|
|
|
|
title += '[REAL]';
|
|
|
|
title += '[REAL]';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (revision.version && revision.version > 1) {
|
|
|
|
if (revision.version && revision.version > 1) {
|
|
|
|
title += ' [PROPER]';
|
|
|
|
title += ' [PROPER]';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (size !== '') {
|
|
|
|
if (size !== '') {
|
|
|
|
title += ' - {0}'.format(size);
|
|
|
|
title += ' - {0}'.format(size);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (this.episodeFile.get('qualityCutoffNotMet')) {
|
|
|
|
if (this.episodeFile.get('qualityCutoffNotMet')) {
|
|
|
|
this.$el.html('<span class="badge badge-inverse" title="{0}">{1}</span>'.format(title, quality.quality.name));
|
|
|
|
this.$el.html('<span class="badge badge-inverse" title="{0}">{1}</span>'.format(title, quality.quality.name));
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
else {
|
|
|
|
|
|
|
|
this.$el.html('<span class="badge" title="{0}">{1}</span>'.format(title, quality.quality.name));
|
|
|
|
this.$el.html('<span class="badge" title="{0}">{1}</span>'.format(title, quality.quality.name));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
var model = this.model;
|
|
|
|
var model = this.model;
|
|
|
|
var downloading = QueueCollection.findEpisode(model.get('id'));
|
|
|
|
var downloading = QueueCollection.findEpisode(model.get('id'));
|
|
|
|
|
|
|
|
|
|
|
|
if (downloading) {
|
|
|
|
if (downloading) {
|
|
|
|
var progress = 100 - downloading.get('sizeleft') / downloading.get('size') * 100;
|
|
|
|
var progress = 100 - (downloading.get('sizeleft') / downloading.get('size') * 100);
|
|
|
|
|
|
|
|
|
|
|
|
if (progress === 0) {
|
|
|
|
if (progress === 0) {
|
|
|
|
icon = 'icon-nd-downloading';
|
|
|
|
icon = 'icon-nd-downloading';
|
|
|
|
tooltip = 'Episode is downloading';
|
|
|
|
tooltip = 'Episode is downloading';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
this.$el.html('<div class="progress" title="Episode is downloading - {0}% {1}">'.format(progress.toFixed(1), downloading.get('title')) + '<div class="progress-bar progress-bar-purple" style="width: {0}%;"></div></div>'.format(progress));
|
|
|
|
this.$el.html('<div class="progress" title="Episode is downloading - {0}% {1}">'.format(progress.toFixed(1), downloading.get('title')) +
|
|
|
|
|
|
|
|
'<div class="progress-bar progress-bar-purple" style="width: {0}%;"></div></div>'.format(progress));
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
else if (this.model.get('grabbed')) {
|
|
|
|
else if (this.model.get('grabbed')) {
|
|
|
|
icon = 'icon-nd-downloading';
|
|
|
|
icon = 'icon-nd-downloading';
|
|
|
|
tooltip = 'Episode is downloading';
|
|
|
|
tooltip = 'Episode is downloading';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
else if (!this.model.get('airDateUtc')) {
|
|
|
|
else if (!this.model.get('airDateUtc')) {
|
|
|
|
icon = 'icon-nd-tba';
|
|
|
|
icon = 'icon-nd-tba';
|
|
|
|
tooltip = 'TBA';
|
|
|
|
tooltip = 'TBA';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
else if (hasAired) {
|
|
|
|
else if (hasAired) {
|
|
|
|
icon = 'icon-nd-missing';
|
|
|
|
icon = 'icon-nd-missing';
|
|
|
|
tooltip = 'Episode missing from disk';
|
|
|
|
tooltip = 'Episode missing from disk';
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
else {
|
|
|
|
|
|
|
|
icon = 'icon-nd-not-aired';
|
|
|
|
icon = 'icon-nd-not-aired';
|
|
|
|
tooltip = 'Episode has not aired';
|
|
|
|
tooltip = 'Episode has not aired';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
this.$el.html('<i class="{0}" title="{1}"/>'.format(icon, tooltip));
|
|
|
|
this.$el.html('<i class="{0}" title="{1}"/>'.format(icon, tooltip));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
_getFile : function() {
|
|
|
|
_getFile : function() {
|
|
|
|
var hasFile = this.model.get('hasFile');
|
|
|
|
var hasFile = this.model.get('hasFile');
|
|
|
|
|
|
|
|
|
|
|
|
if (hasFile) {
|
|
|
|
if (hasFile) {
|
|
|
|
var episodeFile;
|
|
|
|
var episodeFile;
|
|
|
|
|
|
|
|
|
|
|
|
if (reqres.hasHandler(reqres.Requests.GetEpisodeFileById)) {
|
|
|
|
if (reqres.hasHandler(reqres.Requests.GetEpisodeFileById)) {
|
|
|
|
episodeFile = reqres.request(reqres.Requests.GetEpisodeFileById, this.model.get('episodeFileId'));
|
|
|
|
episodeFile = reqres.request(reqres.Requests.GetEpisodeFileById, this.model.get('episodeFileId'));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
else if (this.model.has('episodeFile')) {
|
|
|
|
else if (this.model.has('episodeFile')) {
|
|
|
|
episodeFile = new Backbone.Model(this.model.get('episodeFile'));
|
|
|
|
episodeFile = new Backbone.Model(this.model.get('episodeFile'));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (episodeFile) {
|
|
|
|
if (episodeFile) {
|
|
|
|
return episodeFile;
|
|
|
|
return episodeFile;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return undefined;
|
|
|
|
return undefined;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|