[TV] Added season actions/releases
This commit is contained in:
1 parent
3d6ce1c2e2
commit
b9c6d983e1
5 files changed
+189
-21
No files matched your search
@@ -2,7 +2,7 @@ var EpisodeAction = new Class({
|
|||||||
|
|
||||||
Implements: [Options],
|
Implements: [Options],
|
||||||
|
|
||||||
class_name: 'action icon2',
|
class_name: 'item-action icon2',
|
||||||
|
|
||||||
initialize: function(episode, options){
|
initialize: function(episode, options){
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ var Episode = new Class({
|
|||||||
|
|
||||||
self.profile = self.show.profile;
|
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')
|
self.detail = new Element('div.item.data')
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -34,14 +34,14 @@ var Episode = new Class({
|
|||||||
self.quality = new Element('span.quality', {
|
self.quality = new Element('span.quality', {
|
||||||
'events': {
|
'events': {
|
||||||
'click': function(e){
|
'click': function(e){
|
||||||
var releases = self.detail.getElement('.episode-actions .releases');
|
var releases = self.detail.getElement('.item-actions .releases');
|
||||||
|
|
||||||
if(releases.isVisible())
|
if(releases.isVisible())
|
||||||
releases.fireEvent('click', [e])
|
releases.fireEvent('click', [e])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
self.actions = new Element('div.episode-actions')
|
self.actions = new Element('div.item-actions')
|
||||||
);
|
);
|
||||||
|
|
||||||
// Add profile
|
// 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;
|
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 {
|
.shows .list .episodes .episode-options {
|
||||||
display: block;
|
display: block;
|
||||||
|
|
||||||
@@ -765,16 +790,44 @@
|
|||||||
width: 85px;
|
width: 85px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.shows .list .episodes .episode-actions {
|
.shows .list .episodes .item-actions {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
width: auto;
|
width: auto;
|
||||||
right: 0;
|
right: 0;
|
||||||
top: 0;
|
|
||||||
|
display: none;
|
||||||
|
opacity: 0;
|
||||||
|
|
||||||
border-left: none;
|
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;
|
color: #cbeecc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -47,21 +47,9 @@ var Episodes = new Class({
|
|||||||
|
|
||||||
createSeason: function(season) {
|
createSeason: function(season) {
|
||||||
var self = this,
|
var self = this,
|
||||||
title = '';
|
s = new Season(self.show, self.options, season);
|
||||||
|
|
||||||
if(season.info.number) {
|
$(s).inject(self.episodes_container);
|
||||||
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);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
createEpisode: function(episode){
|
createEpisode: function(episode){
|
||||||
|
|||||||
Reference in new issue
Block a user