Simple growl-like notifications

This commit is contained in:
Ruud
2012-06-30 21:25:36 +02:00
parent 3b441d2942
commit cf3041c848
6 changed files with 80 additions and 15 deletions
+5 -4
View File
@@ -136,23 +136,24 @@ class CoreNotifier(Notification):
#db.close()
return True
def frontend(self, type = 'notification', data = {}):
def frontend(self, type = 'notification', data = {}, message = None):
self.m_lock.acquire()
message = {
notification = {
'message_id': str(uuid.uuid4()),
'time': time.time(),
'type': type,
'data': data,
'message': message,
}
self.messages.append(message)
self.messages.append(notification)
while len(self.listeners) > 0 and not self.shuttingDown():
try:
listener, last_id = self.listeners.pop()
listener({
'success': True,
'result': [message],
'result': [notification],
})
except:
break
@@ -126,11 +126,12 @@ var NotificationBase = new Class({
processData: function(json){
var self = this;
// Process data
if(json){
Array.each(json.result, function(result){
App.fireEvent(result.type, result)
App.fireEvent(result.type, result);
if(result.message && result.read === undefined)
self.showMessage(result.message);
})
if(json.result.length > 0)
@@ -140,7 +141,31 @@ var NotificationBase = new Class({
// Restart poll
self.startPoll()
},
showMessage: function(message){
var self = this;
if(!self.message_container)
self.message_container = new Element('div.messages').inject(document.body);
var new_message = new Element('div.message', {
'text': message
}).inject(self.message_container);
setTimeout(function(){
new_message.addClass('show')
}, 10);
setTimeout(function(){
new_message.addClass('hide')
setTimeout(function(){
new_message.destroy();
}, 1000);
}, 4000);
},
// Notification setting tests
addTestButtons: function(){
var self = this;