Dashboard split
Do more with snatched and other statusses
This commit is contained in:
@@ -8,8 +8,14 @@ Page.Home = new Class({
|
||||
indexAction: function(param){
|
||||
var self = this;
|
||||
|
||||
if(self.soon_list)
|
||||
if(self.soon_list){
|
||||
|
||||
// Reset lists
|
||||
self.available_list.update();
|
||||
self.late_list.update();
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Snatched
|
||||
self.available_list = new MovieList({
|
||||
@@ -17,48 +23,54 @@ Page.Home = new Class({
|
||||
'identifier': 'snatched',
|
||||
'load_more': false,
|
||||
'view': 'list',
|
||||
'actions': MovieActions,
|
||||
'actions': [MA.IMDB, MA.Trailer, MA.Files, MA.Release, MA.Edit, MA.Readd, MA.Refresh, MA.Delete],
|
||||
'title': 'Snatched & Available',
|
||||
'on_empty_element': new Element('div'),
|
||||
'filter': {
|
||||
'release_status': 'snatched,available'
|
||||
}
|
||||
});
|
||||
|
||||
// Downloaded
|
||||
// self.downloaded_list = new MovieList({
|
||||
// 'navigation': false,
|
||||
// 'identifier': 'downloaded',
|
||||
// 'load_more': false,
|
||||
// 'view': 'titles',
|
||||
// 'filter': {
|
||||
// 'release_status': 'done',
|
||||
// 'order': 'release_order'
|
||||
// }
|
||||
// });
|
||||
// self.el.adopt(
|
||||
// new Element('h2', {
|
||||
// 'text': 'Just downloaded'
|
||||
// }),
|
||||
// $(self.downloaded_list)
|
||||
// );
|
||||
|
||||
// Comming Soon
|
||||
// Coming Soon
|
||||
self.soon_list = new MovieList({
|
||||
'navigation': false,
|
||||
'identifier': 'soon',
|
||||
'limit': 24,
|
||||
'title': 'Soon',
|
||||
'limit': 18,
|
||||
'title': 'Available soon',
|
||||
'description': 'These are being searches for and should be available soon as they will be released on DVD in the next few weeks.',
|
||||
'on_empty_element': new Element('div').grab(
|
||||
new Element('span', {'text': 'There are no movies available soon'})
|
||||
),
|
||||
'filter': {
|
||||
'random': true
|
||||
},
|
||||
'actions': [MA.IMDB, MA.Refresh],
|
||||
'load_more': false,
|
||||
'view': 'thumbs',
|
||||
'api_call': 'dashboard.soon'
|
||||
});
|
||||
|
||||
// Still not available
|
||||
self.late_list = new MovieList({
|
||||
'navigation': false,
|
||||
'identifier': 'late',
|
||||
'limit': 50,
|
||||
'title': 'Still not available',
|
||||
'description': 'Try another quality profile or maybe add more providers in <a href="'+App.createUrl('settings/searcher/providers/')+'">Settings</a>.',
|
||||
'on_empty_element': new Element('div'),
|
||||
'filter': {
|
||||
'late': true
|
||||
},
|
||||
'load_more': false,
|
||||
'view': 'list',
|
||||
'actions': [MA.IMDB, MA.Trailer, MA.Edit, MA.Refresh, MA.Delete],
|
||||
'api_call': 'dashboard.soon'
|
||||
});
|
||||
|
||||
self.el.adopt(
|
||||
$(self.available_list),
|
||||
$(self.soon_list)
|
||||
$(self.soon_list),
|
||||
$(self.late_list)
|
||||
);
|
||||
|
||||
// Suggest
|
||||
|
||||
@@ -30,7 +30,7 @@ Page.Manage = new Class({
|
||||
'filter': {
|
||||
'release_status': 'done'
|
||||
},
|
||||
'actions': MovieActions,
|
||||
'actions': [MA.IMDB, MA.Trailer, MA.Files, MA.Readd, MA.Edit, MA.Delete],
|
||||
'menu': [self.refresh_button, self.refresh_quick],
|
||||
'on_empty_element': new Element('div.empty_manage').adopt(
|
||||
new Element('div', {
|
||||
|
||||
@@ -22,7 +22,7 @@ Page.Wanted = new Class({
|
||||
self.wanted = new MovieList({
|
||||
'identifier': 'wanted',
|
||||
'status': 'active',
|
||||
'actions': MovieActions,
|
||||
'actions': [MA.IMDB, MA.Trailer, MA.Release, MA.Edit, MA.Refresh, MA.Readd, MA.Delete],
|
||||
'add_new': true,
|
||||
'menu': [self.manual_search],
|
||||
'on_empty_element': App.createUserscriptButtons().addClass('empty_wanted')
|
||||
@@ -71,283 +71,4 @@ Page.Wanted = new Class({
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
var MovieActions = {};
|
||||
window.addEvent('domready', function(){
|
||||
|
||||
MovieActions.Wanted = {
|
||||
'IMDB': IMDBAction
|
||||
,'Trailer': TrailerAction
|
||||
,'Releases': ReleaseAction
|
||||
,'Edit': new Class({
|
||||
|
||||
Extends: MovieAction,
|
||||
|
||||
create: function(){
|
||||
var self = this;
|
||||
|
||||
self.el = new Element('a.edit', {
|
||||
'title': 'Change movie information, like title and quality.',
|
||||
'events': {
|
||||
'click': self.editMovie.bind(self)
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
editMovie: function(e){
|
||||
var self = this;
|
||||
(e).preventDefault();
|
||||
|
||||
if(!self.options_container){
|
||||
self.options_container = new Element('div.options').adopt(
|
||||
new Element('div.form').adopt(
|
||||
self.title_select = new Element('select', {
|
||||
'name': 'title'
|
||||
}),
|
||||
self.profile_select = new Element('select', {
|
||||
'name': 'profile'
|
||||
}),
|
||||
new Element('a.button.edit', {
|
||||
'text': 'Save & Search',
|
||||
'events': {
|
||||
'click': self.save.bind(self)
|
||||
}
|
||||
})
|
||||
)
|
||||
).inject(self.movie, 'top');
|
||||
|
||||
Array.each(self.movie.data.library.titles, function(alt){
|
||||
new Element('option', {
|
||||
'text': alt.title
|
||||
}).inject(self.title_select);
|
||||
|
||||
if(alt['default'])
|
||||
self.title_select.set('value', alt.title);
|
||||
});
|
||||
|
||||
|
||||
Quality.getActiveProfiles().each(function(profile){
|
||||
|
||||
var profile_id = profile.id ? profile.id : profile.data.id;
|
||||
|
||||
new Element('option', {
|
||||
'value': profile_id,
|
||||
'text': profile.label ? profile.label : profile.data.label
|
||||
}).inject(self.profile_select);
|
||||
|
||||
if(self.movie.profile && self.movie.profile.data && self.movie.profile.data.id == profile_id)
|
||||
self.profile_select.set('value', profile_id);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
self.movie.slide('in', self.options_container);
|
||||
},
|
||||
|
||||
save: function(e){
|
||||
(e).preventDefault();
|
||||
var self = this;
|
||||
|
||||
Api.request('movie.edit', {
|
||||
'data': {
|
||||
'id': self.movie.get('id'),
|
||||
'default_title': self.title_select.get('value'),
|
||||
'profile_id': self.profile_select.get('value')
|
||||
},
|
||||
'useSpinner': true,
|
||||
'spinnerTarget': $(self.movie),
|
||||
'onComplete': function(){
|
||||
self.movie.quality.set('text', self.profile_select.getSelected()[0].get('text'));
|
||||
self.movie.title.set('text', self.title_select.getSelected()[0].get('text'));
|
||||
}
|
||||
});
|
||||
|
||||
self.movie.slide('out');
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
,'Refresh': new Class({
|
||||
|
||||
Extends: MovieAction,
|
||||
|
||||
create: function(){
|
||||
var self = this;
|
||||
|
||||
self.el = new Element('a.refresh', {
|
||||
'title': 'Refresh the movie info and do a forced search',
|
||||
'events': {
|
||||
'click': self.doRefresh.bind(self)
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
doRefresh: function(e){
|
||||
var self = this;
|
||||
(e).preventDefault();
|
||||
|
||||
Api.request('movie.refresh', {
|
||||
'data': {
|
||||
'id': self.movie.get('id')
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
,'Delete': new Class({
|
||||
|
||||
Extends: MovieAction,
|
||||
|
||||
Implements: [Chain],
|
||||
|
||||
create: function(){
|
||||
var self = this;
|
||||
|
||||
self.el = new Element('a.delete', {
|
||||
'title': 'Remove the movie from this CP list',
|
||||
'events': {
|
||||
'click': self.showConfirm.bind(self)
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
showConfirm: function(e){
|
||||
var self = this;
|
||||
(e).preventDefault();
|
||||
|
||||
if(!self.delete_container){
|
||||
self.delete_container = new Element('div.buttons.delete_container').adopt(
|
||||
new Element('a.cancel', {
|
||||
'text': 'Cancel',
|
||||
'events': {
|
||||
'click': self.hideConfirm.bind(self)
|
||||
}
|
||||
}),
|
||||
new Element('span.or', {
|
||||
'text': 'or'
|
||||
}),
|
||||
new Element('a.button.delete', {
|
||||
'text': 'Delete ' + self.movie.title.get('text'),
|
||||
'events': {
|
||||
'click': self.del.bind(self)
|
||||
}
|
||||
})
|
||||
).inject(self.movie, 'top');
|
||||
}
|
||||
|
||||
self.movie.slide('in', self.delete_container);
|
||||
|
||||
},
|
||||
|
||||
hideConfirm: function(e){
|
||||
var self = this;
|
||||
(e).preventDefault();
|
||||
|
||||
self.movie.slide('out');
|
||||
},
|
||||
|
||||
del: function(e){
|
||||
(e).preventDefault();
|
||||
var self = this;
|
||||
|
||||
var movie = $(self.movie);
|
||||
|
||||
self.chain(
|
||||
function(){
|
||||
self.callChain();
|
||||
},
|
||||
function(){
|
||||
Api.request('movie.delete', {
|
||||
'data': {
|
||||
'id': self.movie.get('id'),
|
||||
'delete_from': self.movie.list.options.identifier
|
||||
},
|
||||
'onComplete': function(){
|
||||
movie.set('tween', {
|
||||
'duration': 300,
|
||||
'onComplete': function(){
|
||||
self.movie.destroy()
|
||||
}
|
||||
});
|
||||
movie.tween('height', 0);
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
self.callChain();
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
};
|
||||
|
||||
MovieActions.Snatched = {
|
||||
'IMDB': IMDBAction
|
||||
,'Delete': MovieActions.Wanted.Delete
|
||||
};
|
||||
|
||||
MovieActions.Done = {
|
||||
'IMDB': IMDBAction
|
||||
,'Edit': MovieActions.Wanted.Edit
|
||||
,'Trailer': TrailerAction
|
||||
,'Files': new Class({
|
||||
|
||||
Extends: MovieAction,
|
||||
|
||||
create: function(){
|
||||
var self = this;
|
||||
|
||||
self.el = new Element('a.directory', {
|
||||
'title': 'Available files',
|
||||
'events': {
|
||||
'click': self.showFiles.bind(self)
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
showFiles: function(e){
|
||||
var self = this;
|
||||
(e).preventDefault();
|
||||
|
||||
if(!self.options_container){
|
||||
self.options_container = new Element('div.options').adopt(
|
||||
self.files_container = new Element('div.files.table')
|
||||
).inject(self.movie, 'top');
|
||||
|
||||
// Header
|
||||
new Element('div.item.head').adopt(
|
||||
new Element('span.name', {'text': 'File'}),
|
||||
new Element('span.type', {'text': 'Type'}),
|
||||
new Element('span.is_available', {'text': 'Available'})
|
||||
).inject(self.files_container)
|
||||
|
||||
Array.each(self.movie.data.releases, function(release){
|
||||
|
||||
var rel = new Element('div.release').inject(self.files_container);
|
||||
|
||||
Array.each(release.files, function(file){
|
||||
new Element('div.file.item').adopt(
|
||||
new Element('span.name', {'text': file.path}),
|
||||
new Element('span.type', {'text': File.Type.get(file.type_id).name}),
|
||||
new Element('span.available', {'text': file.available})
|
||||
).inject(rel)
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
self.movie.slide('in', self.options_container);
|
||||
},
|
||||
|
||||
})
|
||||
,'Delete': MovieActions.Wanted.Delete
|
||||
};
|
||||
|
||||
})
|
||||
});
|
||||
Reference in New Issue
Block a user