You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

247 lines
5.8 KiB

12 years ago
Page.Home = new Class({
Extends: PageBase,
name: 'home',
title: 'Manage new stuff for things and such',
indexAction: function () {
12 years ago
var self = this;
if(self.soon_list){
// Reset lists
self.available_list.update();
self.late_list.update();
return;
}
12 years ago
self.chain = new Chain();
self.chain.chain(
self.createAvailable.bind(self),
self.createSoon.bind(self),
self.createSuggestionsChartsMenu.bind(self),
self.createSuggestions.bind(self),
self.createCharts.bind(self),
self.createLate.bind(self)
);
self.chain.callChain();
},
createAvailable: function(){
var self = this;
12 years ago
self.available_list = new MovieList({
'navigation': false,
'identifier': 'snatched',
'load_more': false,
'view': 'list',
'actions': [MA.IMDB, MA.Trailer, MA.Release, MA.Refresh, MA.Delete],
12 years ago
'title': 'Snatched & Available',
'description': 'These movies have been snatched or have finished downloading',
'on_empty_element': new Element('div').adopt(
new Element('h2', {'text': 'Snatched & Available'}),
new Element('span', {
'html': 'No snatched movies or anything!? Damn.. <a>Maybe add a movie.</a>',
'events': {
'click': function(){
$(document.body).getElement('.search_form input').focus();
}
}
})
),
12 years ago
'filter': {
'release_status': 'snatched,missing,available,downloaded,done,seeding',
'with_tags': 'recent'
},
'limit': null,
'onLoaded': function(){
self.chain.callChain();
},
'onMovieAdded': function(notification){
// Track movie added
var after_search = function(data){
11 years ago
if(notification.data._id != data.data._id) return;
// Force update after search
self.available_list.update();
App.off('movie.searcher.ended', after_search);
11 years ago
};
App.on('movie.searcher.ended', after_search);
}
12 years ago
});
$(self.available_list).inject(self.el);
},
createSoon: function(){
var self = this;
// Coming Soon
12 years ago
self.soon_list = new MovieList({
'navigation': false,
'identifier': 'soon',
'limit': 12,
'title': 'Available soon',
12 years ago
'description': 'These are being searched for and should be available soon as they will be released on DVD in the next few weeks.',
12 years ago
'filter': {
'random': true
},
'actions': [MA.IMDB, MA.Refresh],
12 years ago
'load_more': false,
'view': 'thumbs',
'force_view': true,
'api_call': 'dashboard.soon',
'onLoaded': function(){
self.chain.callChain();
}
12 years ago
});
// Make all thumbnails the same size
self.soon_list.addEvent('loaded', function(){
var images = $(self.soon_list).getElements('.poster, .no_thumbnail'),
timer,
highest = 100;
images.each(function(img){
img.addEvent('load', function(){
var height = img.getSize().y;
if(!highest || highest < height){
highest = height;
if(timer) clearTimeout(timer);
timer = (function(){
images.setStyle('height', highest);
12 years ago
}).delay(50);
}
});
});
$(window).addEvent('resize', function(){
if(timer) clearTimeout(timer);
timer = (function(){
var highest = 100;
images.each(function(img){
img.setStyle('height', null);
var height = img.getSize().y;
if(!highest || highest < height)
highest = height;
});
images.setStyle('height', highest);
}).delay(300);
});
});
$(self.soon_list).inject(self.el);
},
createSuggestions: function(){
var self = this;
// Suggest
self.suggestions_list = new SuggestList({
'onCreated': function(){
self.chain.callChain();
}
});
$(self.suggestions_list).inject(self.el);
},
createCharts: function(){
var self = this;
// Charts
self.charts_list = new Charts({
11 years ago
'onCreated': function(){
self.chain.callChain();
}
});
$(self.charts_list).inject(self.el);
},
createSuggestionsChartsMenu: function(){
var self = this,
suggestion_tab, charts_tab;
self.el_toggle_menu = new Element('div.toggle_menu', {
'events': {
'click:relay(a)': function(e, el) {
e.preventDefault();
self.toggleSuggestionsCharts(el.get('data-container'), el);
}
}
}).adopt(
suggestion_tab = new Element('a.toggle_suggestions', {
'data-container': 'suggestions'
}).grab(new Element('h2', {'text': 'Suggestions'})),
charts_tab = new Element('a.toggle_charts', {
'data-container': 'charts'
}).grab( new Element('h2', {'text': 'Charts'}))
);
var menu_selected = Cookie.read('suggestions_charts_menu_selected') || 'suggestions';
self.toggleSuggestionsCharts(menu_selected, menu_selected == 'suggestions' ? suggestion_tab : charts_tab);
self.el_toggle_menu.inject(self.el);
self.chain.callChain();
},
toggleSuggestionsCharts: function(menu_id, el){
var self = this;
// Toggle ta
self.el_toggle_menu.getElements('.active').removeClass('active');
if(el) el.addClass('active');
// Hide both
if(self.suggestions_list) self.suggestions_list.hide();
if(self.charts_list) self.charts_list.hide();
var toggle_to = self[menu_id + '_list'];
if(toggle_to) toggle_to.show();
Cookie.write('suggestions_charts_menu_selected', menu_id, {'duration': 365});
},
createLate: function(){
var self = this;
// 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>.',
'filter': {
'late': true
},
'loader': false,
'load_more': false,
'view': 'list',
'actions': [MA.IMDB, MA.Trailer, MA.Edit, MA.Refresh, MA.Delete],
'api_call': 'dashboard.soon',
'onLoaded': function(){
self.chain.callChain();
}
});
$(self.late_list).inject(self.el);
12 years ago
}
});