major doc changes
[roojs1] / Roo / bootstrap / Calendar.js
index 1d75ded..e82ac32 100644 (file)
@@ -65,6 +65,11 @@ Roo.bootstrap.Calendar = function(config){
 
 Roo.extend(Roo.bootstrap.Calendar, Roo.bootstrap.Component,  {
     
+         /**
+     * @cfg {Roo.data.Store} store
+     * The data source for the calendar
+     */
+       store : false,
      /**
      * @cfg {Number} startDay
      * Day index at which the week should begin, 0-based (defaults to 0, which is Sunday)
@@ -198,7 +203,7 @@ Roo.extend(Roo.bootstrap.Calendar, Roo.bootstrap.Component,  {
         };
         var cal_rows = function() {
             
-            var ret = []
+            var ret = [];
             for (var r = 0; r < 6; r++) {
                 var row= {
                     tag : 'tr',
@@ -298,7 +303,7 @@ Roo.extend(Roo.bootstrap.Calendar, Roo.bootstrap.Component,  {
                     cn: [
                         {
                             tag: "img",
-                            src: rootURL + '/roojs1/images/ux/lightbox/loading.gif'
+                            src: Roo.rootURL + '/images/ux/lightbox/loading.gif' 
                         },
                         {
                             tag: "span",
@@ -308,7 +313,7 @@ Roo.extend(Roo.bootstrap.Calendar, Roo.bootstrap.Component,  {
                     ]
                 }
             ]
-        }
+        };
         this.maskEl = Roo.DomHelper.append(this.el.select('.fc-content', true).first(), mark, true);
         
         var size = this.el.select('.fc-content', true).first().getSize();
@@ -440,7 +445,9 @@ Roo.extend(Roo.bootstrap.Calendar, Roo.bootstrap.Component,  {
         var format = this.format;
         
         var setCellClass = function(cal, cell){
-            
+            cell.row = 0;
+            cell.events = [];
+            cell.more = [];
             //Roo.log('set Cell Class');
             cell.title = "";
             var t = d.getTime();
@@ -615,6 +622,13 @@ Roo.extend(Roo.bootstrap.Calendar, Roo.bootstrap.Component,  {
         var crow = false;
         var rows = [];
         for(var i =0; i < cells.length; i++) {
+            
+            cells[i].row = cells[0].row;
+            
+            if(i == 0){
+                cells[i].row = cells[i].row + 1;
+            }
+            
             if (!crow) {
                 crow = {
                     start : cells[i],
@@ -640,11 +654,8 @@ Roo.extend(Roo.bootstrap.Calendar, Roo.bootstrap.Component,  {
         ev.els = [];
         ev.rows = rows;
         ev.cells = cells;
-//        ev.rendered = false;
-//        for (var i = 0; i < cells.length;i++) {
-//            cells[i].rows = Math.max(cells[i].rows || 0 , ev.row + 1 );
-//            
-//        }
+        
+        cells[0].events.push(ev);
         
         this.calevents.push(ev);
     },
@@ -656,7 +667,8 @@ Roo.extend(Roo.bootstrap.Calendar, Roo.bootstrap.Component,  {
         }
         
         Roo.each(this.cells.elements, function(c){
-            c.rows = [];
+            c.row = 0;
+            c.events = [];
             c.more = [];
         });
         
@@ -676,50 +688,39 @@ Roo.extend(Roo.bootstrap.Calendar, Roo.bootstrap.Component,  {
     
     renderEvents: function()
     {   
-        // first make sure there is enough space..
-        this.cells.each(function(c) {
-            c.rows = [];
-            c.more = [];
-        });
+        var _this = this;
         
-        for (var e = 0; e < this.calevents.length; e++) {
+        this.cells.each(function(c) {
             
-            var ev = this.calevents[e];
-            var cells = ev.cells;
-            var rows = ev.rows;
+            if(c.row < 5){
+                return;
+            }
             
-            for(var i = 0; i < cells.length; i++){
-                
-                var cbox = this.cells.item(this.cells.indexOf(cells[i]));
-                
-                if(cells.length < 2 && cbox.rows.length > 3){
-                    cbox.more.push(ev);
-                    continue;
-                }
-                
-                cbox.rows.push(ev);
+            var ev = c.events;
+            
+            var r = 4;
+            if(c.row != c.events.length){
+                r = 4 - (4 - (c.row - c.events.length));
             }
-        }
-        
-        var _this = this;
-        
-        this.cells.each(function(c) {
+            
+            c.events = ev.slice(0, r);
+            c.more = ev.slice(r);
+            
             if(c.more.length && c.more.length == 1){
-                c.rows.push(c.more.pop());
+                c.events.push(c.more.pop());
             }
             
-            var r = (c.more.length) ? c.rows.length + 1 : c.rows.length;
-            c.select('.fc-day-content div',true).first().setHeight(Math.max(34, r * 20));
+            c.row = (c.row - ev.length) + c.events.length + ((c.more.length) ? 1 : 0);
             
+        });
             
-            for (var e = 0; e < c.rows.length; e++){
-                var ev = c.rows[e];
-                
-                if(ev.rendered){
-                    continue;
-                }
-                
-                var cells = ev.cells;
+        this.cells.each(function(c) {
+            
+            c.select('.fc-day-content div',true).first().setHeight(Math.max(34, c.row * 20));
+            
+            
+            for (var e = 0; e < c.events.length; e++){
+                var ev = c.events[e];
                 var rows = ev.rows;
                 
                 for(var i = 0; i < rows.length; i++) {
@@ -770,7 +771,8 @@ Roo.extend(Roo.bootstrap.Calendar, Roo.bootstrap.Component,  {
                     var sbox = rows[i].start.select('.fc-day-content',true).first().getBox();
                     var ebox = rows[i].end.select('.fc-day-content',true).first().getBox();
 
-                    cg.setXY([sbox.x +2, sbox.y +(e * 20)]);    
+                    var r = (c.more.length) ? 1 : 0;
+                    cg.setXY([sbox.x +2, sbox.y + ((c.row - c.events.length - r + e) * 20)]);    
                     cg.setWidth(ebox.right - sbox.x -2);
 
                     cg.on('mouseenter' ,_this.onEventEnter, _this, ev);
@@ -779,7 +781,6 @@ Roo.extend(Roo.bootstrap.Calendar, Roo.bootstrap.Component,  {
 
                     ev.els.push(cg);
                     
-                    ev.rendered = true;
                 }
                 
             }
@@ -817,7 +818,7 @@ Roo.extend(Roo.bootstrap.Calendar, Roo.bootstrap.Component,  {
                 var sbox = c.select('.fc-day-content',true).first().getBox();
                 var ebox = c.select('.fc-day-content',true).first().getBox();
                 //Roo.log(cg);
-                cg.setXY([sbox.x +2, sbox.y +(c.rows.length * 20)]);    
+                cg.setXY([sbox.x +2, sbox.y +((c.row - 1) * 20)]);    
                 cg.setWidth(ebox.right - sbox.x -2);
 
                 cg.on('click', _this.onMoreEventClick, _this, c.more);
@@ -861,7 +862,7 @@ Roo.extend(Roo.bootstrap.Calendar, Roo.bootstrap.Component,  {
             var cfg = {
                 cls : 'fc-event-hori fc-event-draggable',
                 html : m.title
-            }
+            };
             var cg = ctr.createChild(cfg);
             
             cg.on('click', _this.onEventClick, _this, m);