mirror of
https://github.com/Sonarr/Sonarr.git
synced 2024-12-16 11:37:58 +02:00
removed mutators from series.
This commit is contained in:
parent
50718ae94e
commit
83fe07524a
@ -16,7 +16,9 @@ define(
|
|||||||
var icon;
|
var icon;
|
||||||
var tooltip;
|
var tooltip;
|
||||||
|
|
||||||
if (this.model.get('episodeFile')) {
|
var hasAired = Date.create(this.model.get('airDate')).isBefore(Date.create());
|
||||||
|
|
||||||
|
if (hasAired) {
|
||||||
icon = 'icon-ok';
|
icon = 'icon-ok';
|
||||||
tooltip = 'Episode downloaded';
|
tooltip = 'Episode downloaded';
|
||||||
}
|
}
|
||||||
|
21
UI/Handlebars/Helpers/Quality.js
Normal file
21
UI/Handlebars/Helpers/Quality.js
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
'use strict';
|
||||||
|
define(
|
||||||
|
[
|
||||||
|
'handlebars',
|
||||||
|
'Quality/QualityProfileCollection',
|
||||||
|
'underscore'
|
||||||
|
], function (Handlebars, QualityProfileCollection, _) {
|
||||||
|
|
||||||
|
Handlebars.registerHelper('qualityProfile', function (profileId) {
|
||||||
|
|
||||||
|
var profile = QualityProfileCollection.get(profileId);
|
||||||
|
|
||||||
|
if (profile) {
|
||||||
|
return new Handlebars.SafeString('<span class="label quality-profile-lable">' + profile.get("name") + '</span>');
|
||||||
|
}
|
||||||
|
|
||||||
|
return undefined;
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
44
UI/Handlebars/Helpers/Series.js
Normal file
44
UI/Handlebars/Helpers/Series.js
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
'use strict';
|
||||||
|
define(
|
||||||
|
[
|
||||||
|
'handlebars',
|
||||||
|
'underscore'
|
||||||
|
], function (Handlebars, _) {
|
||||||
|
Handlebars.registerHelper('poster', function () {
|
||||||
|
|
||||||
|
var poster = _.where(this.images, {coverType: 'poster'});
|
||||||
|
|
||||||
|
if (poster[0]) {
|
||||||
|
return poster[0].url;
|
||||||
|
}
|
||||||
|
|
||||||
|
return undefined;
|
||||||
|
});
|
||||||
|
|
||||||
|
Handlebars.registerHelper('traktUrl', function () {
|
||||||
|
return 'http://trakt.tv/show/' + this.titleSlug;
|
||||||
|
});
|
||||||
|
|
||||||
|
Handlebars.registerHelper('imdbUrl', function () {
|
||||||
|
return 'http://imdb.com/title/' + this.imdbId;
|
||||||
|
});
|
||||||
|
|
||||||
|
Handlebars.registerHelper('route', function () {
|
||||||
|
return '/series/' + this.titleSlug;
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
Handlebars.registerHelper('percentOfEpisodes', function () {
|
||||||
|
var episodeCount = this.episodeCount;
|
||||||
|
var episodeFileCount = this.episodeFileCount;
|
||||||
|
|
||||||
|
var percent = 100;
|
||||||
|
|
||||||
|
if (episodeCount > 0) {
|
||||||
|
percent = episodeFileCount / episodeCount * 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
return percent;
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
@ -6,7 +6,9 @@ define(
|
|||||||
'Handlebars/Helpers/DateTime',
|
'Handlebars/Helpers/DateTime',
|
||||||
'Handlebars/Helpers/Html',
|
'Handlebars/Helpers/Html',
|
||||||
'Handlebars/Helpers/Numbers',
|
'Handlebars/Helpers/Numbers',
|
||||||
'Handlebars/Helpers/EpisodeNumber',
|
'Handlebars/Helpers/Episode',
|
||||||
|
'Handlebars/Helpers/Series',
|
||||||
|
'Handlebars/Helpers/Quality',
|
||||||
'Handlebars/Debug'
|
'Handlebars/Debug'
|
||||||
], function (Templates) {
|
], function (Templates) {
|
||||||
return function () {
|
return function () {
|
||||||
|
@ -1 +0,0 @@
|
|||||||
<span class="label quality-profile-lable">{{name}}</span>
|
|
@ -44,8 +44,10 @@ define(
|
|||||||
onShow: function () {
|
onShow: function () {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
if (this.model.has('fanArt')) {
|
var fanArt = this._getFanArt();
|
||||||
$.backstretch(this.model.get('fanArt'));
|
|
||||||
|
if (fanArt) {
|
||||||
|
$.backstretch(fanArt);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$('body').removeClass('backdrop');
|
$('body').removeClass('backdrop');
|
||||||
@ -67,6 +69,16 @@ define(
|
|||||||
this._setMonitoredState();
|
this._setMonitoredState();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_getFanArt: function () {
|
||||||
|
var fanArt = _.where(this.model.get('images'), {coverType: 'fanart'});
|
||||||
|
|
||||||
|
if(fanArt && fanArt[0]){
|
||||||
|
return fanArt[0].url;
|
||||||
|
}
|
||||||
|
|
||||||
|
return undefined;
|
||||||
|
},
|
||||||
|
|
||||||
onClose: function () {
|
onClose: function () {
|
||||||
$('.backstretch').remove();
|
$('.backstretch').remove();
|
||||||
$('body').removeClass('backdrop');
|
$('body').removeClass('backdrop');
|
||||||
@ -81,7 +93,7 @@ define(
|
|||||||
|
|
||||||
var promise = this.model.save();
|
var promise = this.model.save();
|
||||||
|
|
||||||
promise.always(function (){
|
promise.always(function () {
|
||||||
self._setMonitoredState();
|
self._setMonitoredState();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
{{overview}}
|
{{overview}}
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
{{> QualityProfilePartial qualityProfile}}
|
{{qualityProfile qualityProfileId}}
|
||||||
<span class="label label-info">{{network}}</span>
|
<span class="label label-info">{{network}}</span>
|
||||||
<span class="label label-info">{{runtime}} minutes</span>
|
<span class="label label-info">{{runtime}} minutes</span>
|
||||||
<span class="label label-info">{{path}}</span>
|
<span class="label label-info">{{path}}</span>
|
||||||
|
@ -29,17 +29,15 @@ define(
|
|||||||
|
|
||||||
|
|
||||||
saveSeries: function () {
|
saveSeries: function () {
|
||||||
//Todo: Get qualityProfile
|
|
||||||
var qualityProfile = this.ui.qualityProfile.val();
|
|
||||||
var qualityProfileText = this.ui.qualityProfile.children('option:selected').text();
|
|
||||||
|
|
||||||
this.model.set({ qualityProfileId: qualityProfile, qualityProfileName: qualityProfileText });
|
var qualityProfileId = this.ui.qualityProfile.val();
|
||||||
|
this.model.set({ qualityProfileId: qualityProfileId});
|
||||||
|
|
||||||
this.model.save();
|
this.model.save();
|
||||||
this.trigger('saved');
|
this.trigger('saved');
|
||||||
App.modalRegion.closeModal();
|
App.modalRegion.closeModal();
|
||||||
},
|
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
onRender: function () {
|
onRender: function () {
|
||||||
this.ui.path.autoComplete('/directories');
|
this.ui.path.autoComplete('/directories');
|
||||||
|
@ -55,9 +55,6 @@ define(
|
|||||||
}
|
}
|
||||||
|
|
||||||
return 'primary';
|
return 'primary';
|
||||||
},
|
|
||||||
hasAired : function () {
|
|
||||||
return Date.create(this.get('airDate')).isBefore(Date.create());
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
<div class="row"> </div>
|
<div class="row"> </div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="span8">
|
<div class="span8">
|
||||||
{{#if isContinuing}}
|
{{#if_eq status compare="continuing"}}
|
||||||
{{#if nextAiring}}
|
{{#if nextAiring}}
|
||||||
<span class="label">{{ShortDate nextAiring}}</span>
|
<span class="label">{{ShortDate nextAiring}}</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
@ -37,9 +37,9 @@
|
|||||||
{{else}}
|
{{else}}
|
||||||
<span class="label label-important">Ended</span>
|
<span class="label label-important">Ended</span>
|
||||||
<span class="label label-info">{{seasonCount}} Seasons</span>
|
<span class="label label-info">{{seasonCount}} Seasons</span>
|
||||||
{{/if}}
|
{{/if_eq}}
|
||||||
|
|
||||||
{{> QualityProfilePartial qualityProfile}}
|
{{qualityProfile qualityProfileId}}
|
||||||
</div>
|
</div>
|
||||||
<div class="span2">
|
<div class="span2">
|
||||||
<div class="progress">
|
<div class="progress">
|
||||||
|
@ -7,9 +7,9 @@
|
|||||||
<i class="icon-cog x-edit" title="Edit Series"/>
|
<i class="icon-cog x-edit" title="Edit Series"/>
|
||||||
<i class="icon-remove x-remove" title="Delete Series"/>
|
<i class="icon-remove x-remove" title="Delete Series"/>
|
||||||
</div>
|
</div>
|
||||||
{{#unless isContinuing}}
|
{{#unless_eq status compare="continuing"}}
|
||||||
<div class="ended-banner">Ended</div>
|
<div class="ended-banner">Ended</div>
|
||||||
{{/unless}}
|
{{/unless_eq}}
|
||||||
<a href="{{route}}">
|
<a href="{{route}}">
|
||||||
<img class="series-poster" src="{{poster}}" {{defaultImg}}>
|
<img class="series-poster" src="{{poster}}" {{defaultImg}}>
|
||||||
</a>
|
</a>
|
||||||
|
@ -2,71 +2,13 @@
|
|||||||
define(
|
define(
|
||||||
[
|
[
|
||||||
'backbone',
|
'backbone',
|
||||||
'Quality/QualityProfileCollection',
|
|
||||||
'underscore'
|
'underscore'
|
||||||
], function (Backbone, QualityProfileCollection,_) {
|
], function (Backbone, _) {
|
||||||
return Backbone.Model.extend({
|
return Backbone.Model.extend({
|
||||||
|
|
||||||
urlRoot: ApiRoot + '/series',
|
urlRoot: ApiRoot + '/series',
|
||||||
|
|
||||||
mutators: {
|
|
||||||
percentOfEpisodes: function () {
|
|
||||||
var episodeCount = this.get('episodeCount');
|
|
||||||
var episodeFileCount = this.get('episodeFileCount');
|
|
||||||
|
|
||||||
var percent = 100;
|
|
||||||
|
|
||||||
if (episodeCount > 0) {
|
|
||||||
percent = episodeFileCount / episodeCount * 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
return percent;
|
|
||||||
},
|
|
||||||
poster : function () {
|
|
||||||
var poster = _.find(this.get('images'), function (image) {
|
|
||||||
return image.coverType === 'poster';
|
|
||||||
});
|
|
||||||
|
|
||||||
if (poster) {
|
|
||||||
return poster.url;
|
|
||||||
}
|
|
||||||
|
|
||||||
return undefined;
|
|
||||||
},
|
|
||||||
fanArt : function () {
|
|
||||||
var poster = _.find(this.get('images'), function (image) {
|
|
||||||
return image.coverType === 'fanart';
|
|
||||||
});
|
|
||||||
|
|
||||||
if (poster) {
|
|
||||||
return poster.url;
|
|
||||||
}
|
|
||||||
|
|
||||||
return undefined;
|
|
||||||
},
|
|
||||||
traktUrl : function () {
|
|
||||||
return 'http://trakt.tv/show/' + this.get('titleSlug');
|
|
||||||
},
|
|
||||||
imdbUrl : function () {
|
|
||||||
return 'http://imdb.com/title/' + this.get('imdbId');
|
|
||||||
},
|
|
||||||
isContinuing : function () {
|
|
||||||
return this.get('status') === 'continuing';
|
|
||||||
},
|
|
||||||
route : function () {
|
|
||||||
return '/series/' + this.get('titleSlug');
|
|
||||||
},
|
|
||||||
|
|
||||||
qualityProfile: function () {
|
|
||||||
var profile = QualityProfileCollection.get(this.get('qualityProfileId'));
|
|
||||||
if (profile) {
|
|
||||||
return profile.toJSON();
|
|
||||||
}
|
|
||||||
|
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
defaults: {
|
defaults: {
|
||||||
episodeFileCount: 0,
|
episodeFileCount: 0,
|
||||||
episodeCount : 0,
|
episodeCount : 0,
|
||||||
|
Loading…
Reference in New Issue
Block a user