Downloading of single releases and more
This commit is contained in:
1 parent
4617750277
commit
cb5fc694ab
31 files changed
+457
-112
No files matched your search
@@ -1,4 +1,7 @@
|
||||
/* @override http://localhost:5000/static/movie_plugin/movie.css */
|
||||
/* @override
|
||||
http://localhost:5000/static/movie_plugin/movie.css
|
||||
http://192.168.1.20:5000/static/movie_plugin/movie.css
|
||||
*/
|
||||
|
||||
.movies {
|
||||
padding: 20px 0;
|
||||
@@ -79,13 +82,21 @@
|
||||
float: left;
|
||||
width: 5%;
|
||||
padding: 0 0 0 3%;
|
||||
background: url('../images/rating.png') no-repeat left center;
|
||||
}
|
||||
|
||||
.movies .info .description {
|
||||
clear: both;
|
||||
width: 95%;
|
||||
}
|
||||
|
||||
.movies .data .quality span {
|
||||
padding: 5px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.movies .data .quality .available { color: orange; }
|
||||
.movies .data .quality .snatched { color: lightgreen; }
|
||||
|
||||
.movies .data .actions {
|
||||
position: absolute;
|
||||
right: 15px;
|
||||
@@ -96,17 +107,14 @@
|
||||
.movies .data:hover .action:hover { opacity: 1; }
|
||||
|
||||
.movies .data .action {
|
||||
background: no-repeat center;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
display: inline-block;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
padding: 3px;
|
||||
opacity: 0;
|
||||
}
|
||||
.movies .data .action.refresh { background-image: url('../images/reload.png'); }
|
||||
.movies .data .action.delete { background-image: url('../images/delete.png'); }
|
||||
.movies .data .action.edit { background-image: url('../images/edit.png'); }
|
||||
.movies .data .action.imdb { background-image: url('../images/imdb.png'); }
|
||||
|
||||
.movies .delete_container {
|
||||
clear: both;
|
||||
@@ -142,6 +150,65 @@
|
||||
padding: 2%;
|
||||
}
|
||||
|
||||
.movies .options .releases {
|
||||
height: 157px;
|
||||
overflow: auto;
|
||||
margin: -20px -20px -20px 110px;
|
||||
padding: 15px 0 5px;
|
||||
}
|
||||
.movies .options .releases .item {
|
||||
border-bottom: 1px solid rgba(255,255,255,0.1);
|
||||
}
|
||||
.movies .options .releases .item:last-child { border: 0; }
|
||||
.movies .options .releases .item:nth-child(even) {
|
||||
background: rgba(255,255,255,0.05);
|
||||
}
|
||||
.movies .options .releases .item:not(.head):hover {
|
||||
background: rgba(255,255,255,0.03);
|
||||
}
|
||||
|
||||
.movies .options .releases .item > * {
|
||||
display: inline-block;
|
||||
padding: 0 5px;
|
||||
width: 50px;
|
||||
min-height: 24px;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
-moz-text-overflow: ellipsis;
|
||||
text-align: center;
|
||||
vertical-align: top;
|
||||
border-left: 1px solid rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.movies .options .releases .item > *:first-child {
|
||||
border: 0;
|
||||
}
|
||||
.movies .options .releases .provider {
|
||||
width: 120px;
|
||||
}
|
||||
.movies .options .releases .name {
|
||||
width: 420px;
|
||||
overflow: hidden;
|
||||
text-align: left;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.movies .options .releases a {
|
||||
width: 16px !important;
|
||||
height: 16px;
|
||||
opacity: 0.8;
|
||||
}
|
||||
.movies .options .releases a:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.movies .options .releases .head > * {
|
||||
font-weight: bold;
|
||||
font-size: 14px;
|
||||
padding-top: 4px;
|
||||
padding-bottom: 4px;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.movies .alph_nav ul {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
|
||||
@@ -32,7 +32,7 @@ var Movie = new Class({
|
||||
self.year = new Element('div.year', {
|
||||
'text': self.data.library.year || 'Unknown'
|
||||
}),
|
||||
self.rating = new Element('div.rating', {
|
||||
self.rating = new Element('div.rating.icon', {
|
||||
'text': self.data.library.rating
|
||||
}),
|
||||
self.description = new Element('div.description', {
|
||||
@@ -47,11 +47,18 @@ var Movie = new Class({
|
||||
);
|
||||
|
||||
self.profile.get('types').each(function(type){
|
||||
|
||||
// Check if quality is snatched
|
||||
var is_snatched = self.data.releases.filter(function(release){
|
||||
return release.quality_id == type.quality_id && release.status.identifier == 'snatched'
|
||||
}).pick();
|
||||
|
||||
var q = Quality.getQuality(type.quality_id);
|
||||
new Element('span', {
|
||||
'text': ' '+q.label
|
||||
'text': q.label,
|
||||
'class': is_snatched ? 'snatched' : ''
|
||||
}).inject(self.quality);
|
||||
})
|
||||
});
|
||||
|
||||
Object.each(self.options.actions, function(action, key){
|
||||
self.actions.adopt(
|
||||
@@ -127,7 +134,7 @@ var Movie = new Class({
|
||||
|
||||
var MovieAction = new Class({
|
||||
|
||||
class_name: 'action',
|
||||
class_name: 'action icon',
|
||||
|
||||
initialize: function(movie){
|
||||
var self = this;
|
||||
@@ -193,7 +200,7 @@ var ReleaseAction = new Class({
|
||||
|
||||
self.id = self.movie.get('identifier');
|
||||
|
||||
self.el = new Element('a.releases', {
|
||||
self.el = new Element('a.releases.icon.download', {
|
||||
'title': 'Show the releases that are available for ' + self.movie.getTitle(),
|
||||
'events': {
|
||||
'click': self.show.bind(self)
|
||||
@@ -211,16 +218,77 @@ var ReleaseAction = new Class({
|
||||
$(self.movie.thumbnail).clone(),
|
||||
self.release_container = new Element('div.releases')
|
||||
).inject(self.movie, 'top');
|
||||
|
||||
// Header
|
||||
new Element('div.item.head').adopt(
|
||||
new Element('span.name', {'text': 'Release name'}),
|
||||
new Element('span.quality', {'text': 'Quality'}),
|
||||
new Element('span.age', {'text': 'Age'}),
|
||||
new Element('span.score', {'text': 'Score'}),
|
||||
new Element('span.provider', {'text': 'Provider'})
|
||||
).inject(self.release_container)
|
||||
|
||||
Array.each(self.movie.data.releases, function(release){
|
||||
p(release);
|
||||
new Element('div', {
|
||||
'text': release.title
|
||||
}).inject(self.release_container)
|
||||
'class': 'item ' + release.status.identifier
|
||||
}).adopt(
|
||||
new Element('span.name', {'text': self.get(release, 'name'), 'title': self.get(release, 'name')}),
|
||||
new Element('span.quality', {'text': release.quality.label}),
|
||||
new Element('span.age', {'text': self.get(release, 'age')}),
|
||||
new Element('span.score', {'text': self.get(release, 'score')}),
|
||||
new Element('span.provider', {'text': self.get(release, 'provider')}),
|
||||
new Element('a.download.icon', {
|
||||
'events': {
|
||||
'click': function(e){
|
||||
(e).stop();
|
||||
self.download(release);
|
||||
}
|
||||
}
|
||||
}),
|
||||
new Element('a.delete.icon', {
|
||||
'events': {
|
||||
'click': function(e){
|
||||
(e).stop();
|
||||
self.delete(release);
|
||||
}
|
||||
}
|
||||
})
|
||||
).inject(self.release_container)
|
||||
});
|
||||
|
||||
}
|
||||
self.movie.slide('in');
|
||||
},
|
||||
|
||||
download: function(release){
|
||||
var self = this;
|
||||
|
||||
p(release)
|
||||
|
||||
Api.request('release.download', {
|
||||
'data': {
|
||||
'id': release.id
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
delete: function(release){
|
||||
var self = this;
|
||||
|
||||
Api.request('release.delete', {
|
||||
'data': {
|
||||
'id': release.id
|
||||
}
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
get: function(release, type){
|
||||
var self = this;
|
||||
|
||||
return (release.info.filter(function(info){
|
||||
return type == info.identifier
|
||||
}).pick() || {}).value
|
||||
}
|
||||
|
||||
});
|
||||
@@ -29,7 +29,7 @@ Block.Search = new Class({
|
||||
}).adopt(
|
||||
new Element('div.pointer'),
|
||||
self.results = new Element('div.results')
|
||||
).fade('hide')
|
||||
).hide()
|
||||
);
|
||||
|
||||
self.spinner = new Spinner(self.result_container);
|
||||
@@ -52,7 +52,7 @@ Block.Search = new Class({
|
||||
|
||||
if(self.hidden == bool) return;
|
||||
|
||||
self.result_container.fade(bool ? 0 : 1)
|
||||
self.result_container[bool ? 'hide' : 'show']();
|
||||
|
||||
if(bool){
|
||||
History.removeEvent('change', self.hideResults.bind(self, !bool));
|
||||
|
||||
Reference in new issue
Block a user