Merge branch 'refs/heads/master' into desktop
Conflicts: version.py
This commit is contained in:
@@ -57,6 +57,19 @@ Page.Home = new Class({
|
||||
'limit': null,
|
||||
'onLoaded': function(){
|
||||
self.chain.callChain();
|
||||
},
|
||||
'onMovieAdded': function(notification){
|
||||
|
||||
// Track movie added
|
||||
var after_search = function(data){
|
||||
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);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
@@ -171,4 +184,4 @@ Page.Home = new Class({
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
@@ -102,6 +102,8 @@ Page.Manage = new Class({
|
||||
}
|
||||
}
|
||||
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)
|
||||
@@ -112,10 +114,15 @@ Page.Manage = new Class({
|
||||
|
||||
self.progress_container.empty();
|
||||
|
||||
Object.each(json.progress, function(progress, folder){
|
||||
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}),
|
||||
new Element('span.percentage', {'text': progress.total ? (((progress.total-progress.to_go)/progress.total)*100).round() + '%' : '0%'})
|
||||
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)
|
||||
});
|
||||
|
||||
@@ -124,7 +131,17 @@ Page.Manage = new Class({
|
||||
})
|
||||
|
||||
}, 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()
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
@@ -111,23 +111,25 @@ Page.Settings = new Class({
|
||||
Cookie.write('advanced_toggle_checked', +self.advanced_toggle.checked, {'duration': 365});
|
||||
},
|
||||
|
||||
sortByOrder: function(a, b){
|
||||
return (a.order || 100) - (b.order || 100)
|
||||
},
|
||||
|
||||
create: function(json){
|
||||
var self = this;
|
||||
|
||||
self.el.adopt(
|
||||
self.tabs_container = new Element('ul.tabs'),
|
||||
self.containers = new Element('form.uniForm.containers').adopt(
|
||||
new Element('label.advanced_toggle').adopt(
|
||||
new Element('span', {
|
||||
'text': 'Show advanced settings'
|
||||
}),
|
||||
self.advanced_toggle = new Element('input[type=checkbox].inlay', {
|
||||
'checked': +Cookie.read('advanced_toggle_checked'),
|
||||
'events': {
|
||||
'change': self.showAdvanced.bind(self)
|
||||
}
|
||||
})
|
||||
)
|
||||
self.tabs_container = new Element('ul.tabs');
|
||||
self.containers = new Element('form.uniForm.containers').adopt(
|
||||
new Element('label.advanced_toggle').adopt(
|
||||
new Element('span', {
|
||||
'text': 'Show advanced settings'
|
||||
}),
|
||||
self.advanced_toggle = new Element('input[type=checkbox].inlay', {
|
||||
'checked': +Cookie.read('advanced_toggle_checked'),
|
||||
'events': {
|
||||
'change': self.showAdvanced.bind(self)
|
||||
}
|
||||
})
|
||||
)
|
||||
);
|
||||
self.showAdvanced();
|
||||
@@ -141,13 +143,11 @@ Page.Settings = new Class({
|
||||
options.include(section);
|
||||
});
|
||||
|
||||
options.sort(function(a, b){
|
||||
return (a.order || 100) - (b.order || 100)
|
||||
}).each(function(section){
|
||||
options.stableSort(self.sortByOrder).each(function(section){
|
||||
var section_name = section.section_name;
|
||||
|
||||
// Add groups to content
|
||||
section.groups.sortBy('order').each(function(group){
|
||||
section.groups.stableSort(self.sortByOrder).each(function(group){
|
||||
if(group.hidden) return;
|
||||
|
||||
if(self.wizard_only && !group.wizard)
|
||||
@@ -184,9 +184,7 @@ Page.Settings = new Class({
|
||||
}
|
||||
|
||||
// Add options to group
|
||||
group.options.sort(function(a, b){
|
||||
return (a.order || 100) - (b.order || 100)
|
||||
}).each(function(option){
|
||||
group.options.stableSort(self.sortByOrder).each(function(option){
|
||||
if(option.hidden) return;
|
||||
var class_name = (option.type || 'string').capitalize();
|
||||
var input = new Option[class_name](section_name, option.name, self.getValue(section_name, option.name), option);
|
||||
@@ -197,8 +195,15 @@ Page.Settings = new Class({
|
||||
});
|
||||
});
|
||||
|
||||
self.fireEvent('create');
|
||||
self.openTab();
|
||||
setTimeout(function(){
|
||||
self.el.adopt(
|
||||
self.tabs_container,
|
||||
self.containers
|
||||
);
|
||||
|
||||
self.fireEvent('create');
|
||||
self.openTab();
|
||||
}, 0);
|
||||
|
||||
},
|
||||
|
||||
@@ -265,16 +270,27 @@ Page.Settings = new Class({
|
||||
},
|
||||
|
||||
createGroup: function(group){
|
||||
|
||||
if((typeOf(group.description) == 'array')){
|
||||
var hint = new Element('span.hint.more_hint', {
|
||||
'html': group.description[0]
|
||||
});
|
||||
|
||||
createTooltip(group.description[1]).inject(hint, 'top');
|
||||
}
|
||||
else {
|
||||
var hint = new Element('span.hint', {
|
||||
'html': group.description || ''
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
return new Element('fieldset', {
|
||||
'class': (group.advanced ? 'inlineLabels advanced' : 'inlineLabels') + ' group_' + (group.name || '') + ' subtab_' + (group.subtab || '')
|
||||
}).adopt(
|
||||
}).grab(
|
||||
new Element('h2', {
|
||||
'text': group.label || (group.name).capitalize()
|
||||
}).adopt(
|
||||
new Element('span.hint', {
|
||||
'html': group.description || ''
|
||||
})
|
||||
)
|
||||
}).grab(hint)
|
||||
);
|
||||
},
|
||||
|
||||
@@ -343,10 +359,22 @@ var OptionBase = new Class({
|
||||
|
||||
createHint: function(){
|
||||
var self = this;
|
||||
if(self.options.description)
|
||||
new Element('p.formHint', {
|
||||
'html': self.options.description
|
||||
}).inject(self.el);
|
||||
if(self.options.description){
|
||||
|
||||
|
||||
if((typeOf(self.options.description) == 'array')){
|
||||
var hint = new Element('p.formHint.more_hint', {
|
||||
'html': self.options.description[0]
|
||||
}).inject(self.el);
|
||||
|
||||
createTooltip(self.options.description[1]).inject(hint, 'top');
|
||||
}
|
||||
else {
|
||||
var hint = new Element('p.formHint', {
|
||||
'html': self.options.description || ''
|
||||
}).inject(self.el)
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
afterInject: function(){
|
||||
@@ -1264,6 +1292,7 @@ Option.Combined = new Class({
|
||||
self.inputs = {};
|
||||
self.items = [];
|
||||
self.labels = {};
|
||||
self.descriptions = {};
|
||||
|
||||
self.options.combine.each(function(name){
|
||||
|
||||
@@ -1284,9 +1313,12 @@ Option.Combined = new Class({
|
||||
|
||||
Object.each(self.inputs, function(input, name){
|
||||
self.labels[name] = input.getPrevious().get('text');
|
||||
self.descriptions[name] = (_in = input.getNext()) ? _in.get('text') : '';
|
||||
|
||||
new Element('abbr', {
|
||||
'class': name,
|
||||
'text': self.labels[name]
|
||||
'text': self.labels[name],
|
||||
'title': self.descriptions[name]
|
||||
}).inject(head)
|
||||
});
|
||||
|
||||
@@ -1412,4 +1444,25 @@ Option.Combined = new Class({
|
||||
self.saveCombined();
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
var createTooltip = function(description){
|
||||
|
||||
var tip = new Element('div.tooltip', {
|
||||
'events': {
|
||||
'mouseenter': function(){
|
||||
tip.addClass('shown')
|
||||
},
|
||||
'mouseleave': function(){
|
||||
tip.removeClass('shown')
|
||||
}
|
||||
}
|
||||
}).adopt(
|
||||
new Element('a.icon2.info'),
|
||||
new Element('div.tip', {
|
||||
'html': description
|
||||
})
|
||||
);
|
||||
|
||||
return tip;
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ Page.Wanted = new Class({
|
||||
|
||||
name: 'wanted',
|
||||
title: 'Gimmy gimmy gimmy!',
|
||||
folder_browser: null,
|
||||
|
||||
indexAction: function(){
|
||||
var self = this;
|
||||
@@ -18,13 +19,22 @@ Page.Wanted = new Class({
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
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],
|
||||
'menu': [self.manual_search, self.scan_folder],
|
||||
'on_empty_element': App.createUserscriptButtons().addClass('empty_wanted')
|
||||
});
|
||||
$(self.wanted).inject(self.el);
|
||||
@@ -69,6 +79,45 @@ Page.Wanted = new Class({
|
||||
});
|
||||
}, 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();
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user