2013-06-22 06:24:24 +00:00
|
|
|
|
'use strict';
|
2013-06-08 22:23:17 +00:00
|
|
|
|
define(['app', 'Quality/QualityProfileCollection'], function (app, qualityProfiles) {
|
2013-02-14 02:28:56 +00:00
|
|
|
|
NzbDrone.Series.SeriesModel = Backbone.Model.extend({
|
2013-02-13 06:32:17 +00:00
|
|
|
|
|
2013-03-03 19:59:04 +00:00
|
|
|
|
urlRoot: NzbDrone.Constants.ApiRoot + '/series',
|
|
|
|
|
|
2013-02-14 02:28:56 +00:00
|
|
|
|
mutators: {
|
|
|
|
|
percentOfEpisodes: function () {
|
|
|
|
|
var episodeCount = this.get('episodeCount');
|
|
|
|
|
var episodeFileCount = this.get('episodeFileCount');
|
2013-02-13 06:32:17 +00:00
|
|
|
|
|
2013-02-14 02:28:56 +00:00
|
|
|
|
var percent = 100;
|
2013-02-13 06:32:17 +00:00
|
|
|
|
|
2013-03-29 23:28:58 +00:00
|
|
|
|
if (episodeCount > 0) {
|
2013-02-14 02:28:56 +00:00
|
|
|
|
percent = episodeFileCount / episodeCount * 100;
|
2013-03-29 23:28:58 +00:00
|
|
|
|
}
|
2013-02-14 02:28:56 +00:00
|
|
|
|
|
|
|
|
|
return percent;
|
2013-03-31 21:45:16 +00:00
|
|
|
|
},
|
2013-04-04 04:38:51 +00:00
|
|
|
|
poster : function () {
|
2013-06-13 01:37:05 +00:00
|
|
|
|
var poster = _.find(this.get('images'), function (image) {
|
|
|
|
|
return image.coverType === 'poster';
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (poster) {
|
|
|
|
|
return poster.url;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return undefined;
|
2013-04-04 04:38:51 +00:00
|
|
|
|
},
|
2013-04-23 02:07:21 +00:00
|
|
|
|
fanArt : function () {
|
2013-06-13 01:37:05 +00:00
|
|
|
|
var poster = _.find(this.get('images'), function (image) {
|
2013-06-14 00:39:53 +00:00
|
|
|
|
return image.coverType === 'fanart';
|
2013-06-13 01:37:05 +00:00
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (poster) {
|
|
|
|
|
return poster.url;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return undefined;
|
2013-04-23 02:07:21 +00:00
|
|
|
|
},
|
2013-03-31 21:45:16 +00:00
|
|
|
|
traktUrl : function () {
|
2013-06-22 06:24:24 +00:00
|
|
|
|
return 'http://trakt.tv/show/' + this.get('titleSlug');
|
2013-04-10 03:17:41 +00:00
|
|
|
|
},
|
2013-06-08 22:23:17 +00:00
|
|
|
|
imdbUrl : function () {
|
2013-06-22 06:24:24 +00:00
|
|
|
|
return 'http://imdb.com/title/' + this.get('imdbId');
|
2013-06-07 15:42:28 +00:00
|
|
|
|
},
|
2013-04-10 03:17:41 +00:00
|
|
|
|
isContinuing : function () {
|
2013-05-06 01:16:38 +00:00
|
|
|
|
return this.get('status') === 'continuing';
|
2013-04-25 00:23:07 +00:00
|
|
|
|
},
|
2013-04-26 04:45:45 +00:00
|
|
|
|
shortDate : function () {
|
2013-04-25 00:23:07 +00:00
|
|
|
|
var date = this.get('nextAiring');
|
|
|
|
|
|
|
|
|
|
if (!date) {
|
|
|
|
|
return '';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return Date.create(date).short();
|
2013-06-05 05:22:07 +00:00
|
|
|
|
},
|
2013-06-08 22:23:17 +00:00
|
|
|
|
route : function () {
|
2013-06-05 05:22:07 +00:00
|
|
|
|
return '/series/details/' + this.get('titleSlug');
|
2013-06-08 22:23:17 +00:00
|
|
|
|
//return '/series/details/' + this.get('id');
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
qualityProfile: function () {
|
2013-06-09 06:21:32 +00:00
|
|
|
|
|
|
|
|
|
var profile = qualityProfiles.get(this.get('qualityProfileId'));
|
|
|
|
|
|
2013-06-14 23:18:37 +00:00
|
|
|
|
if (profile) {
|
2013-06-09 06:21:32 +00:00
|
|
|
|
return profile.toJSON();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return undefined;
|
2013-02-14 02:28:56 +00:00
|
|
|
|
}
|
|
|
|
|
},
|
2013-02-13 06:32:17 +00:00
|
|
|
|
|
2013-02-14 02:28:56 +00:00
|
|
|
|
defaults: {
|
|
|
|
|
episodeFileCount: 0,
|
2013-03-29 23:28:58 +00:00
|
|
|
|
episodeCount : 0,
|
2013-04-22 01:21:24 +00:00
|
|
|
|
isExisting : false,
|
2013-04-23 02:07:21 +00:00
|
|
|
|
status : 0
|
2013-02-13 06:32:17 +00:00
|
|
|
|
}
|
2013-02-14 02:28:56 +00:00
|
|
|
|
});
|
2013-02-13 06:32:17 +00:00
|
|
|
|
|
2013-06-14 23:18:37 +00:00
|
|
|
|
return NzbDrone.Series.SeriesModel;
|
|
|
|
|
|
2013-02-14 02:28:56 +00:00
|
|
|
|
});
|