1 (function($, rf) { 2 rf.ui = rf.ui || {}; 3 var defaultOptions = { 4 }; 5 rf.ui.Poll = function(componentId, options) { 6 $super.constructor.call(this, componentId, options); 7 this.id = componentId; 8 this.attachToDom(); 9 this.interval = options.interval || 1000; 10 this.ontimer = options.ontimer; 11 12 this.pollElement = rf.getDomElement(this.id); 13 14 rf.ui.pollTracker = rf.ui.pollTracker || {}; 15 16 if (options.enabled) { 17 this.startPoll(); 18 } 19 } 20 21 rf.BaseComponent.extend(rf.ui.Poll); 22 var $super = rf.ui.Poll.$super; 23 $.extend(rf.ui.Poll.prototype, (function() { 24 return { 25 name: "Poll", 26 27 startPoll: function() { 28 this.stopPoll(); 29 var poll = this; 30 rf.ui.pollTracker[poll.id] = window.setTimeout(function() { 31 try { 32 poll.ontimer.call(poll.pollElement || window); 33 poll.startPoll(); 34 } catch (e) { 35 // TODO: handle exception 36 } 37 }, poll.interval); 38 }, 39 40 stopPoll : function() { 41 if (rf.ui.pollTracker && rf.ui.pollTracker[this.id]) { 42 window.clearTimeout(rf.ui.pollTracker[this.id]); 43 delete rf.ui.pollTracker[this.id]; 44 } 45 }, 46 47 setZeroRequestDelay : function(options) { 48 if (typeof options.requestDelay == "undefined") { 49 options.requestDelay = 0; 50 } 51 }, 52 53 destroy : function() { 54 this.stopPoll(); 55 this.detach(this.id); 56 // call parent's destroy method 57 $super.destroy.call(this); 58 } 59 60 }; 61 })()); 62 63 })(RichFaces.jQuery, RichFaces);