Prowlarr/src/UI/Activity/Queue/QueueCollection.js
2018-03-28 18:54:50 +02:00

71 lines
1.9 KiB
JavaScript

var _ = require('underscore');
var PageableCollection = require('backbone.pageable');
//var PageableCollection = require('../../Shared/Grid/SonarrPageableCollection');
var QueueModel = require('./QueueModel');
var FormatHelpers = require('../../Shared/FormatHelpers');
var AsSortedCollection = require('../../Mixins/AsSortedCollection');
var AsPageableCollection = require('../../Mixins/AsPageableCollection');
var moment = require('moment');
require('../../Mixins/backbone.signalr.mixin');
var QueueCollection = PageableCollection.extend({
url : window.NzbDrone.ApiRoot + '/queue',
model : QueueModel,
state : {
pageSize : 15,
sortKey: 'timeleft'
},
mode : 'client',
findMovie : function(movieId) {
return _.find(this.fullCollection.models, function(queueModel) {
return queueModel.get('movie').id === movieId;
});
},
sortMappings : {
movie : {
sortValue : function(model, attr) {
var movie = model.get(attr);
return movie.get('sortTitle');
}
},
timeleft : {
sortValue : function(model, attr) {
var eta = model.get('estimatedCompletionTime');
if (eta) {
return moment(eta).unix();
}
return Number.MAX_VALUE;
}
},
sizeleft : {
sortValue : function(model, attr) {
var size = model.get('size');
var sizeleft = model.get('sizeleft');
if (size && sizeleft) {
return sizeleft / size;
}
return 0;
}
}
}
});
QueueCollection = AsSortedCollection.call(QueueCollection);
QueueCollection = AsPageableCollection.call(QueueCollection);
var collection = new QueueCollection().bindSignalR();
collection.fetch();
module.exports = collection;