1 (function($, rf) { 2 3 rf.ui = rf.ui || {}; 4 5 var defaultOptions = { 6 position: "tr", 7 direction: "vertical", 8 method: "last", 9 notifications: [], 10 addNotification: function(pnotify) { 11 this.notifications.push(pnotify); 12 } 13 }; 14 15 rf.ui.NotifyStack = rf.BaseComponent.extendClass({ 16 17 name : "NotifyStack", 18 19 init : function(componentId, options) { 20 $super.constructor.call(this, componentId); 21 this.attachToDom(this.id); 22 this.__initializeStack(options); 23 }, 24 25 __initializeStack : function(options) { 26 var stack = $.extend({}, $.pnotify.defaults.pnotify_stack, defaultOptions, options); 27 28 var isVertical = (stack.direction == 'vertical'); 29 var isFirst = (stack.method == 'first'); 30 31 stack.push = isFirst ? 'top' : 'bottom'; 32 33 switch (stack.position) { 34 case "tl": // topLeft 35 stack.dir1 = isVertical ? 'down' : 'right'; 36 stack.dir2 = isVertical ? 'right' : 'down'; 37 break; 38 case "tr": // topRight 39 stack.dir1 = isVertical ? 'down' : 'left'; 40 stack.dir2 = isVertical ? 'left' : 'down'; 41 break; 42 case "bl": // bottomLeft 43 stack.dir1 = isVertical ? 'up' : 'right'; 44 stack.dir2 = isVertical ? 'right' : 'up'; 45 break; 46 case "br": // bottomRight 47 stack.dir1 = isVertical ? 'up' : 'left'; 48 stack.dir2 = isVertical ? 'left' : 'up'; 49 break; 50 default: 51 throw "wrong stack position: " + stack.position; 52 } 53 54 this.stack = stack; 55 }, 56 57 getStack : function() { 58 return this.stack; 59 }, 60 61 removeNotifications: function() { 62 var pnotify; 63 while (pnotify = this.stack.notifications.pop()) { 64 pnotify.pnotify_remove(); 65 } 66 }, 67 68 destroy : function() { 69 this.removeNotifications(); 70 this.stack = null; 71 $super.destroy.call(this); 72 } 73 }); 74 75 var $super = rf.ui.NotifyStack.$super; 76 77 })(RichFaces.jQuery, RichFaces);