Merge branch 'refs/heads/develop' into desktop

This commit is contained in:
Ruud committed 2014-06-23 19:01:58 +02:00
commit 1e7fa82e11
750 files changed
+28672 -101971

No files matched your search

+2 -2
View File
@@ -6,7 +6,7 @@ var AboutSettingTab = new Class({
initialize: function(){
var self = this;
App.addEvent('load', self.addSettings.bind(self))
App.addEvent('loadSettings', self.addSettings.bind(self))
},
@@ -124,4 +124,4 @@ var AboutSettingTab = new Class({
window.addEvent('domready', function(){
new AboutSettingTab();
});
});
+83 -12
View File
@@ -21,7 +21,9 @@ Page.Home = new Class({
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)
);
@@ -52,7 +54,8 @@ Page.Home = new Class({
})
),
'filter': {
'release_status': 'snatched,seeding,missing,available,downloaded'
'release_status': 'snatched,missing,available,downloaded,done,seeding',
'with_tags': 'recent'
},
'limit': null,
'onLoaded': function(){
@@ -62,12 +65,12 @@ Page.Home = new Class({
// Track movie added
var after_search = function(data){
if(notification.data.id != data.data.id) return;
if(notification.data._id != data.data._id) return;
// Force update after search
self.available_list.update();
App.off('movie.searcher.ended', after_search);
}
};
App.on('movie.searcher.ended', after_search);
}
@@ -102,14 +105,13 @@ Page.Home = new Class({
// Make all thumbnails the same size
self.soon_list.addEvent('loaded', function(){
var images = $(self.soon_list).getElements('.poster'),
var images = $(self.soon_list).getElements('.poster, .no_thumbnail'),
timer,
highest = 100;
images.each(function(img_container){
img_container.getElements('img').addEvent('load', function(){
var img = this,
height = img.getSize().y;
images.each(function(img){
img.addEvent('load', function(){
var height = img.getSize().y;
if(!highest || highest < height){
highest = height;
if(timer) clearTimeout(timer);
@@ -124,10 +126,8 @@ Page.Home = new Class({
if(timer) clearTimeout(timer);
timer = (function(){
var highest = 100;
images.each(function(img_container){
var img = img_container.getElement('img');
if(!img) return
images.each(function(img){
img.setStyle('height', null);
var height = img.getSize().y;
if(!highest || highest < height)
highest = height;
@@ -154,7 +154,78 @@ Page.Home = new Class({
$(self.suggestion_list).inject(self.el);
},
createCharts: function(){
var self = this;
// Charts
self.charts = new Charts({
'onCreated': function(){
self.chain.callChain();
}
});
$(self.charts).inject(self.el);
},
createSuggestionsChartsMenu: function(){
var self = this;
self.el_toggle_menu_suggestions = new Element('a.toggle_suggestions.active', {
'href': '#',
'events': { 'click': function(e) {
e.preventDefault();
self.toggleSuggestionsCharts('suggestions');
}
}
}).grab( new Element('h2', {'text': 'Suggestions'}));
self.el_toggle_menu_charts = new Element('a.toggle_charts', {
'href': '#',
'events': { 'click': function(e) {
e.preventDefault();
self.toggleSuggestionsCharts('charts');
}
}
}).grab( new Element('h2', {'text': 'Charts'}));
self.el_toggle_menu = new Element('div.toggle_menu').grab(
self.el_toggle_menu_suggestions
).grab(
self.el_toggle_menu_charts
);
var menu_selected = Cookie.read('suggestions_charts_menu_selected');
if( menu_selected === null ) menu_selected = 'suggestions';
self.toggleSuggestionsCharts( menu_selected );
self.el_toggle_menu.inject(self.el);
self.chain.callChain();
},
toggleSuggestionsCharts: function(menu_id){
var self = this;
switch(menu_id) {
case 'suggestions':
if($(self.suggestion_list)) $(self.suggestion_list).show();
self.el_toggle_menu_suggestions.addClass('active');
if($(self.charts)) $(self.charts).hide();
self.el_toggle_menu_charts.removeClass('active');
break;
case 'charts':
if($(self.charts)) $(self.charts).show();
self.el_toggle_menu_charts.addClass('active');
if($(self.suggestion_list)) $(self.suggestion_list).hide();
self.el_toggle_menu_suggestions.removeClass('active');
break;
}
Cookie.write('suggestions_charts_menu_selected', menu_id, {'duration': 365});
},
createLate: function(){
-147
View File
@@ -1,147 +0,0 @@
Page.Manage = new Class({
Extends: PageBase,
name: 'manage',
title: 'Do stuff to your existing movies!',
indexAction: function(){
var self = this;
if(!self.list){
self.refresh_button = new Element('a', {
'title': 'Rescan your library for new movies',
'text': 'Full library refresh',
'events':{
'click': self.refresh.bind(self, true)
}
});
self.refresh_quick = new Element('a', {
'title': 'Just scan for recently changed',
'text': 'Quick library scan',
'events':{
'click': self.refresh.bind(self, false)
}
});
self.list = new MovieList({
'identifier': 'manage',
'filter': {
'release_status': 'done'
},
'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', {
'text': 'Seems like you don\'t have anything in your library yet.'
}),
new Element('div', {
'text': 'Add your existing movie folders in '
}).adopt(
new Element('a', {
'text': 'Settings > Manage',
'href': App.createUrl('settings/manage')
})
),
new Element('div.after_manage', {
'text': 'When you\'ve done that, hit this button → '
}).adopt(
new Element('a.button.green', {
'text': 'Hit me, but not too hard',
'events':{
'click': self.refresh.bind(self, true)
}
})
)
)
});
$(self.list).inject(self.el);
// Check if search is in progress
self.startProgressInterval();
}
},
refresh: function(full){
var self = this;
if(!self.update_in_progress){
Api.request('manage.update', {
'data': {
'full': +full
}
});
self.startProgressInterval();
}
},
startProgressInterval: function(){
var self = this;
self.progress_interval = setInterval(function(){
if(self.progress_request && self.progress_request.running)
return;
self.update_in_progress = true;
self.progress_request = Api.request('manage.progress', {
'onComplete': function(json){
if(!json || !json.progress){
clearInterval(self.progress_interval);
self.update_in_progress = false;
if(self.progress_container){
self.progress_container.destroy();
self.list.update();
}
}
else {
// Capture progress so we can use it in our *each* closure
var progress = json.progress
// Don't add loader when page is loading still
if(!self.list.navigation)
return;
if(!self.progress_container)
self.progress_container = new Element('div.progress').inject(self.list.navigation, 'after');
self.progress_container.empty();
var sorted_table = self.parseProgress(json.progress)
sorted_table.each(function(folder){
var folder_progress = progress[folder]
new Element('div').adopt(
new Element('span.folder', {'text': folder +
(folder_progress.eta > 0 ? ', ' + new Date ().increment('second', folder_progress.eta).timeDiffInWords().replace('from now', 'to go') : '')
}),
new Element('span.percentage', {'text': folder_progress.total ? (((folder_progress.total-folder_progress.to_go)/folder_progress.total)*100).round() + '%' : '0%'})
).inject(self.progress_container)
});
}
}
})
}, 1000);
},
parseProgress: function (progress_object) {
var folder, temp_array = [];
for (folder in progress_object) {
if (progress_object.hasOwnProperty(folder)) {
temp_array.push(folder)
}
}
return temp_array.stableSort()
}
});
+28 -11
View File
@@ -2,6 +2,7 @@ Page.Settings = new Class({
Extends: PageBase,
order: 50,
name: 'settings',
title: 'Change settings.',
wizard_only: false,
@@ -26,8 +27,8 @@ Page.Settings = new Class({
},
openTab: function(action){
var self = this;
var action = (action == 'index' ? 'about' : action) || self.action;
var self = this,
action = (action == 'index' ? 'about' : action) || self.action;
if(self.current)
self.toggleTab(self.current, true);
@@ -112,14 +113,20 @@ Page.Settings = new Class({
},
sortByOrder: function(a, b){
return (a.order || 100) - (b.order || 100)
return (a.order || 100) - (b.order || 100)
},
create: function(json){
var self = this;
self.tabs_container = new Element('ul.tabs');
self.containers = new Element('form.uniForm.containers').adopt(
self.containers = new Element('form.uniForm.containers', {
'events': {
'click:relay(.enabler.disabled h2)': function(e, el){
el.getPrevious().getElements('.check').fireEvent('click');
}
}
}).adopt(
new Element('label.advanced_toggle').adopt(
new Element('span', {
'text': 'Show advanced settings'
@@ -284,14 +291,23 @@ Page.Settings = new Class({
})
}
var icon;
if(group.icon){
icon = new Element('span.icon').grab(new Element('img', {
'src': 'data:image/png;base64,' + group.icon
}));
}
var label = new Element('span.group_label', {
'text': group.label || (group.name).capitalize()
})
return new Element('fieldset', {
'class': (group.advanced ? 'inlineLabels advanced' : 'inlineLabels') + ' group_' + (group.name || '') + ' subtab_' + (group.subtab || '')
}).grab(
new Element('h2', {
'text': group.label || (group.name).capitalize()
}).grab(hint)
);
new Element('h2').adopt(icon, label, hint)
);
},
createList: function(content_container){
@@ -370,7 +386,7 @@ var OptionBase = new Class({
createTooltip(self.options.description[1]).inject(hint, 'top');
}
else {
var hint = new Element('p.formHint', {
new Element('p.formHint', {
'html': self.options.description || ''
}).inject(self.el)
}
@@ -1312,8 +1328,9 @@ Option.Combined = new Class({
var head = new Element('div.head').inject(self.combined_list);
Object.each(self.inputs, function(input, name){
var _in = input.getNext();
self.labels[name] = input.getPrevious().get('text');
self.descriptions[name] = (_in = input.getNext()) ? _in.get('text') : '';
self.descriptions[name] = _in ? _in.get('text') : '';
new Element('abbr', {
'class': name,
@@ -1465,4 +1482,4 @@ var createTooltip = function(description){
);
return tip;
}
};
-123
View File
@@ -1,123 +0,0 @@
Page.Wanted = new Class({
Extends: PageBase,
name: 'wanted',
title: 'Gimmy gimmy gimmy!',
folder_browser: null,
indexAction: function(){
var self = this;
if(!self.wanted){
self.manual_search = new Element('a', {
'title': 'Force a search for the full wanted list',
'text': 'Search all wanted',
'events':{
'click': self.doFullSearch.bind(self, true)
}
});
self.scan_folder = new Element('a', {
'title': 'Scan a folder and rename all movies in it',
'text': 'Manual folder scan',
'events':{
'click': self.scanFolder.bind(self)
}
});
// Wanted movies
self.wanted = new MovieList({
'identifier': 'wanted',
'status': 'active',
'actions': [MA.IMDB, MA.Trailer, MA.Release, MA.Edit, MA.Refresh, MA.Readd, MA.Delete],
'add_new': true,
'menu': [self.manual_search, self.scan_folder],
'on_empty_element': App.createUserscriptButtons().addClass('empty_wanted')
});
$(self.wanted).inject(self.el);
// Check if search is in progress
self.startProgressInterval.delay(4000, self);
}
},
doFullSearch: function(){
var self = this;
if(!self.search_in_progress){
Api.request('movie.searcher.full_search');
self.startProgressInterval();
}
},
startProgressInterval: function(){
var self = this;
var start_text = self.manual_search.get('text');
self.progress_interval = setInterval(function(){
if(self.search_progress && self.search_progress.running) return;
self.search_progress = Api.request('movie.searcher.progress', {
'onComplete': function(json){
self.search_in_progress = true;
if(!json.movie){
clearInterval(self.progress_interval);
self.search_in_progress = false;
self.manual_search.set('text', start_text);
}
else {
var progress = json.movie;
self.manual_search.set('text', 'Searching.. (' + (((progress.total-progress.to_go)/progress.total)*100).round() + '%)');
}
}
});
}, 1000);
},
scanFolder: function(e) {
(e).stop();
var self = this;
var options = {
'name': 'Scan_folder'
}
if(!self.folder_browser){
self.folder_browser = new Option['Directory']("Scan", "folder", "", options);
self.folder_browser.save = function() {
var folder = self.folder_browser.getValue();
Api.request('renamer.scan', {
'data': {
'base_folder': folder,
},
});
};
self.folder_browser.inject(self.el, 'top');
self.folder_browser.fireEvent('injected');
// Hide the settings box
self.folder_browser.directory_inlay.hide();
self.folder_browser.el.removeChild(self.folder_browser.el.firstChild);
self.folder_browser.showBrowser();
// Make adjustments to the browser
self.folder_browser.browser.getElements('.clear.button').hide();
self.folder_browser.save_button.text = "Select";
self.folder_browser.browser.style.zIndex=1000;
}
else{
self.folder_browser.showBrowser();
}
}
});