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.
 
 
 
 
 

120 lines
2.7 KiB

Page.Manage = new Class({
Extends: PageBase,
name: 'manage',
title: 'Do stuff to your existing movies!',
indexAction: function(param){
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',
'status': 'done',
'actions': MovieActions,
'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 to 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(){
Api.request('manage.progress', {
'onComplete': function(json){
self.update_in_progress = true;
if(!json.progress){
clearInterval(self.progress_interval);
self.update_in_progress = false;
if(self.progress_container){
self.progress_container.destroy();
self.list.update();
}
}
else {
if(!self.progress_container)
self.progress_container = new Element('div.progress').inject(self.list.navigation, 'after')
self.progress_container.empty();
Object.each(json.progress, function(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%'})
).inject(self.progress_container)
});
}
}
})
}, 1000);
}
});