[TV] Added season actions/releases
This commit is contained in:
@@ -2,7 +2,7 @@ var EpisodeAction = new Class({
|
||||
|
||||
Implements: [Options],
|
||||
|
||||
class_name: 'action icon2',
|
||||
class_name: 'item-action icon2',
|
||||
|
||||
initialize: function(episode, options){
|
||||
var self = this;
|
||||
|
||||
@@ -14,7 +14,7 @@ var Episode = new Class({
|
||||
|
||||
self.profile = self.show.profile;
|
||||
|
||||
self.el = new Element('div.item').adopt(
|
||||
self.el = new Element('div.item.episode').adopt(
|
||||
self.detail = new Element('div.item.data')
|
||||
);
|
||||
|
||||
@@ -34,14 +34,14 @@ var Episode = new Class({
|
||||
self.quality = new Element('span.quality', {
|
||||
'events': {
|
||||
'click': function(e){
|
||||
var releases = self.detail.getElement('.episode-actions .releases');
|
||||
var releases = self.detail.getElement('.item-actions .releases');
|
||||
|
||||
if(releases.isVisible())
|
||||
releases.fireEvent('click', [e])
|
||||
}
|
||||
}
|
||||
}),
|
||||
self.actions = new Element('div.episode-actions')
|
||||
self.actions = new Element('div.item-actions')
|
||||
);
|
||||
|
||||
// Add profile
|
||||
|
||||
+127
@@ -0,0 +1,127 @@
|
||||
var Season = new Class({
|
||||
|
||||
Extends: BlockBase,
|
||||
|
||||
action: {},
|
||||
|
||||
initialize: function(show, options, data){
|
||||
var self = this;
|
||||
self.setOptions(options);
|
||||
|
||||
self.show = show;
|
||||
self.options = options;
|
||||
self.data = data;
|
||||
|
||||
self.profile = self.show.profile;
|
||||
|
||||
self.el = new Element('div.item.season').adopt(
|
||||
self.detail = new Element('div.item.data')
|
||||
);
|
||||
|
||||
self.create();
|
||||
},
|
||||
|
||||
create: function(){
|
||||
var self = this;
|
||||
|
||||
self.detail.set('id', 'season_'+self.data._id);
|
||||
|
||||
self.detail.adopt(
|
||||
new Element('span.name', {'text': self.getTitle()}),
|
||||
|
||||
self.quality = new Element('span.quality', {
|
||||
'events': {
|
||||
'click': function(e){
|
||||
var releases = self.detail.getElement('.item-actions .releases');
|
||||
|
||||
if(releases.isVisible())
|
||||
releases.fireEvent('click', [e])
|
||||
}
|
||||
}
|
||||
}),
|
||||
self.actions = new Element('div.item-actions')
|
||||
);
|
||||
|
||||
// Add profile
|
||||
if(self.profile.data) {
|
||||
self.profile.getTypes().each(function(type){
|
||||
var q = self.addQuality(type.get('quality'), type.get('3d'));
|
||||
|
||||
if((type.finish == true || type.get('finish')) && !q.hasClass('finish')){
|
||||
q.addClass('finish');
|
||||
q.set('title', q.get('title') + ' Will finish searching for this movie if this quality is found.')
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Add releases
|
||||
self.updateReleases();
|
||||
|
||||
Object.each(self.options.actions, function(action, key){
|
||||
self.action[key.toLowerCase()] = action = new self.options.actions[key](self);
|
||||
if(action.el)
|
||||
self.actions.adopt(action)
|
||||
});
|
||||
},
|
||||
|
||||
updateReleases: function(){
|
||||
var self = this;
|
||||
if(!self.data.releases || self.data.releases.length == 0) return;
|
||||
|
||||
self.data.releases.each(function(release){
|
||||
|
||||
var q = self.quality.getElement('.q_'+ release.quality+(release.is_3d ? '.is_3d' : ':not(.is_3d)')),
|
||||
status = release.status;
|
||||
|
||||
if(!q && (status == 'snatched' || status == 'seeding' || status == 'done'))
|
||||
q = self.addQuality(release.quality, release.is_3d || false);
|
||||
|
||||
if (q && !q.hasClass(status)){
|
||||
q.addClass(status);
|
||||
q.set('title', (q.get('title') ? q.get('title') : '') + ' status: '+ status)
|
||||
}
|
||||
|
||||
});
|
||||
},
|
||||
|
||||
addQuality: function(quality, is_3d){
|
||||
var self = this,
|
||||
q = Quality.getQuality(quality);
|
||||
|
||||
return new Element('span', {
|
||||
'text': q.label + (is_3d ? ' 3D' : ''),
|
||||
'class': 'q_'+q.identifier + (is_3d ? ' is_3d' : ''),
|
||||
'title': ''
|
||||
}).inject(self.quality);
|
||||
},
|
||||
|
||||
getTitle: function(){
|
||||
var self = this;
|
||||
|
||||
var title = '';
|
||||
|
||||
if(self.data.info.number) {
|
||||
title = 'Season ' + self.data.info.number;
|
||||
} else {
|
||||
// Season 0 / Specials
|
||||
title = 'Specials';
|
||||
}
|
||||
|
||||
return title;
|
||||
},
|
||||
|
||||
getIdentifier: function(){
|
||||
var self = this;
|
||||
|
||||
try {
|
||||
return self.get('identifiers').imdb;
|
||||
}
|
||||
catch (e){ }
|
||||
|
||||
return self.get('imdb');
|
||||
},
|
||||
|
||||
get: function(attr){
|
||||
return this.data[attr] || this.data.info[attr]
|
||||
}
|
||||
});
|
||||
@@ -734,6 +734,31 @@
|
||||
bottom: auto;
|
||||
}
|
||||
|
||||
.shows .list .episodes .item.season .data {
|
||||
padding-top: 4px;
|
||||
padding-bottom: 4px;
|
||||
height: auto;
|
||||
|
||||
font-weight: bold;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.shows .list .episodes .item.season .data span.name {
|
||||
width: 400px;
|
||||
}
|
||||
|
||||
.shows .list .episodes .item.season .data span.quality {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.shows .list .episodes .item.season:hover .data span.quality {
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.shows .list .episodes .item.season .data span.quality:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.shows .list .episodes .episode-options {
|
||||
display: block;
|
||||
|
||||
@@ -765,16 +790,44 @@
|
||||
width: 85px;
|
||||
}
|
||||
|
||||
.shows .list .episodes .episode-actions {
|
||||
.shows .list .episodes .item-actions {
|
||||
position: absolute;
|
||||
width: auto;
|
||||
right: 0;
|
||||
top: 0;
|
||||
|
||||
display: none;
|
||||
opacity: 0;
|
||||
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
.shows .list .show .episodes .episode-actions .refresh {
|
||||
.shows .list .episodes .item:hover .item-actions {
|
||||
display: inline-block;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.shows .list .episodes .item:hover .item-action {
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.shows .list .episodes .item .item-action {
|
||||
display: inline-block;
|
||||
height: 22px;
|
||||
min-width: 33px;
|
||||
|
||||
line-height: 26px;
|
||||
text-align: center;
|
||||
font-size: 13px;
|
||||
|
||||
margin-left: 1px;
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
.shows .list .episodes .item .item-action:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.shows .list .show .episodes .refresh {
|
||||
color: #cbeecc;
|
||||
}
|
||||
|
||||
|
||||
@@ -47,21 +47,9 @@ var Episodes = new Class({
|
||||
|
||||
createSeason: function(season) {
|
||||
var self = this,
|
||||
title = '';
|
||||
s = new Season(self.show, self.options, season);
|
||||
|
||||
if(season.info.number) {
|
||||
title = 'Season ' + season.info.number;
|
||||
} else {
|
||||
// Season 0 / Specials
|
||||
title = 'Specials';
|
||||
}
|
||||
|
||||
season['el'] = new Element('div', {
|
||||
'class': 'item head',
|
||||
'id': 'season_'+season._id
|
||||
}).adopt(
|
||||
new Element('span.name', {'text': title})
|
||||
).inject(self.episodes_container);
|
||||
$(s).inject(self.episodes_container);
|
||||
},
|
||||
|
||||
createEpisode: function(episode){
|
||||
|
||||
Reference in New Issue
Block a user