major doc changes
[roojs1] / Roo / grid / Calendar.js
index 598536c..1c6211e 100644 (file)
@@ -6,7 +6,7 @@
  
 /**
  * @class Roo.grid.Calendar
- * @extends Roo.util.Grid
+ * @extends Roo.grid.Grid
  * This class extends the Grid to provide a calendar widget
  * <br><br>Usage:<pre><code>
  var grid = new Roo.grid.Calendar("my-container-id", {
@@ -403,7 +403,15 @@ Roo.grid.Calendar = function(container, config){
             * @param {Calendar} this
             * @param {event}
             */
-        'eventclick': true
+        'eventclick': true,
+        /**
+            * @event eventrender
+            * Fires before each cell is rendered, so you can modify the contents, like cls / title / qtip
+            * @param {Calendar} this
+            * @param {data} data to be modified
+            */
+        'eventrender': true
+        
     });
 
     Roo.grid.Grid.superclass.constructor.call(this);
@@ -771,18 +779,72 @@ Roo.extend(Roo.grid.Calendar, Roo.grid.Grid, {
         });
         
         this.eventStore.each(function(e) {
-            Roo.each(e.els, function(el) {
+            this.clearEvent(e);
+        },this);
+        
+    },
+    
+    clearEvent : function(ev)
+    {
+        if (ev.els) {
+            Roo.each(ev.els, function(el) {
                 el.un('mouseenter' ,this.onEventEnter, this);
                 el.un('mouseleave' ,this.onEventLeave, this);
                 el.remove();
             },this);
-            e.els = [];
-        },this);
-        
+            ev.els = [];
+        }
     },
     
     
-    
+    renderEvent : function(ev,ctr) {
+        if (!ctr) {
+             ctr = this.view.el.select('.fc-event-container',true).first();
+        }
+        
+         
+        this.clearEvent(ev);
+            //code
+       
+        
+        
+        ev.els = [];
+        var cells = ev.cells;
+        var rows = ev.rows;
+        this.fireEvent('eventrender', this, ev);
+        
+        for(var i =0; i < rows.length; i++) {
+            
+            cls = '';
+            if (i == 0) {
+                cls += ' fc-event-start';
+            }
+            if ((i+1) == rows.length) {
+                cls += ' fc-event-end';
+            }
+            
+            //Roo.log(ev.data);
+            // how many rows should it span..
+            var cg = this.eventTmpl.append(ctr,Roo.apply({
+                fccls : cls
+                
+            }, ev.data) , true);
+            
+            
+            cg.on('mouseenter' ,this.onEventEnter, this, ev);
+            cg.on('mouseleave' ,this.onEventLeave, this, ev);
+            cg.on('click', this.onEventClick, this, ev);
+            
+            ev.els.push(cg);
+            
+            var sbox = rows[i].start.select('.fc-day-content',true).first().getBox();
+            var ebox = rows[i].end.select('.fc-day-content',true).first().getBox();
+            //Roo.log(cg);
+             
+            cg.setXY([sbox.x +2, sbox.y +(ev.row * 20)]);    
+            cg.setWidth(ebox.right - sbox.x -2);
+        }
+    },
     
     renderEvents: function()
     {   
@@ -792,8 +854,8 @@ Roo.extend(Roo.grid.Calendar, Roo.grid.Grid, {
             this.eventTmpl = new Roo.Template(
                 '<div class="roo-dynamic fc-event fc-event-hori fc-event-draggable ui-draggable {fccls} {cls}"  style="position: absolute" unselectable="on">' +
                     '<div class="fc-event-inner">' +
-                        '<span class="fc-event-time">{time}</span>', +
-                        '<span class="fc-event-title" qtip="{qtip}">{title}</span>', +
+                        '<span class="fc-event-time">{time}</span>' +
+                        '<span class="fc-event-title" qtip="{qtip}">{title}</span>' +
                     '</div>' +
                     '<div class="ui-resizable-heandle ui-resizable-e">&nbsp;&nbsp;&nbsp;</div>' +
                 '</div>'
@@ -804,7 +866,7 @@ Roo.extend(Roo.grid.Calendar, Roo.grid.Grid, {
         
         
         this.cells.each(function(c) {
-            Roo.log(c.select('.fc-day-content div',true).first());
+            //Roo.log(c.select('.fc-day-content div',true).first());
             c.select('.fc-day-content div',true).first().setHeight(Math.max(34, (c.rows || 1) * 20));
         });
         
@@ -813,44 +875,9 @@ Roo.extend(Roo.grid.Calendar, Roo.grid.Grid, {
         var cls;
         this.eventStore.each(function(ev){
             
-            ev.els = [];
-            var cells = ev.cells;
-            var rows = ev.rows;
-            var rec = ev.rec;
-            
-            for(var i =0; i < rows.length; i++) {
-                
-                cls = '';
-                if (i == 0) {
-                    cls += ' fc-event-start';
-                }
-                if ((i+1) == rows.length) {
-                    cls += ' fc-event-end';
-                }
-                
-                
-                // how many rows should it span..
-                var cg = this.eventTmpl.append(ctr,Roo.apply({
-                    fccls : cls
-                    
-                }, rec.data) , true);
-                
-                
-                cg.on('mouseenter' ,this.onEventEnter, this, ev);
-                cg.on('mouseleave' ,this.onEventLeave, this, ev);
-                cg.on('click', this.onEventClick, this, ev);
-                
-                ev.els.push(cg);
-                
-                var sbox = rows[i].start.select('.fc-day-content',true).first().getBox();
-                var ebox = rows[i].end.select('.fc-day-content',true).first().getBox();
-                //Roo.log(cg);
-                 
-                cg.setXY([sbox.x +2, sbox.y +(ev.row * 20)]);    
-                cg.setWidth(ebox.right - sbox.x -2);
-            }
-            
-            
+            this.renderEvent(ev);
+             
+             
         }, this);
         this.view.layout();
         
@@ -874,7 +901,6 @@ Roo.extend(Roo.grid.Calendar, Roo.grid.Grid, {
     
     onLoad: function () {
         
-        this.clearEvents();
         //Roo.log('calendar onload');
 //         
         if(this.eventStore.getCount() > 0){