Browse Source

[TV] Added season actions/releases

pull/3730/merge
Dean Gardiner 11 years ago
parent
commit
b9c6d983e1
  1. 2
      couchpotato/core/media/show/_base/static/episode.actions.js
  2. 6
      couchpotato/core/media/show/_base/static/episode.js
  3. 127
      couchpotato/core/media/show/_base/static/season.js
  4. 59
      couchpotato/core/media/show/_base/static/show.css
  5. 16
      couchpotato/core/media/show/_base/static/show.episodes.js

2
couchpotato/core/media/show/_base/static/episode.actions.js

@ -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;

6
couchpotato/core/media/show/_base/static/episode.js

@ -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
couchpotato/core/media/show/_base/static/season.js

@ -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]
}
});

59
couchpotato/core/media/show/_base/static/show.css

@ -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;
}

16
couchpotato/core/media/show/_base/static/show.episodes.js

@ -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){

Loading…
Cancel
Save