major doc changes
[roojs1] / Roo / bootstrap / Calendar.js
index efa9b5a..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,7 +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 = (typeof(cells[i].row) == 'undefined') ? 1 : (cells[i].row + 1);
+            
+            cells[i].row = cells[0].row;
+            
+            if(i == 0){
+                cells[i].row = cells[i].row + 1;
+            }
+            
             if (!crow) {
                 crow = {
                     start : cells[i],
@@ -642,16 +655,7 @@ Roo.extend(Roo.bootstrap.Calendar, Roo.bootstrap.Component,  {
         ev.rows = rows;
         ev.cells = cells;
         
-//        if((typeof(cells[0].events) == 'undefined')){
-//            cells[0].events = [];
-//        }
-//        
-//        cells[0].events.push(ev);
-//        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);
     },
@@ -683,236 +687,145 @@ Roo.extend(Roo.bootstrap.Calendar, Roo.bootstrap.Component,  {
     },
     
     renderEvents: function()
-    {  
+    {   
+        var _this = this;
+        
         this.cells.each(function(c) {
-            c.row = 0;
-            c.events = [];
-            c.more = [];
+            
+            if(c.row < 5){
+                return;
+            }
+            
+            var ev = c.events;
+            
+            var r = 4;
+            if(c.row != c.events.length){
+                r = 4 - (4 - (c.row - c.events.length));
+            }
+            
+            c.events = ev.slice(0, r);
+            c.more = ev.slice(r);
+            
+            if(c.more.length && c.more.length == 1){
+                c.events.push(c.more.pop());
+            }
+            
+            c.row = (c.row - ev.length) + c.events.length + ((c.more.length) ? 1 : 0);
+            
         });
-        
-        for (var e = 0; e < this.calevents.length; e++) {
             
-            var ev = this.calevents[e];
-            var cells = ev.cells;
-            var rows = ev.rows;
+        this.cells.each(function(c) {
+            
+            c.select('.fc-day-content div',true).first().setHeight(Math.max(34, c.row * 20));
+            
             
-            for (var j = 0; j < cells.length; j++){
+            for (var e = 0; e < c.events.length; e++){
+                var ev = c.events[e];
+                var rows = ev.rows;
                 
-                if(!cells[j].more.length){
-                    cells[j].row++;
-                }
-                if(cells[j].row > 3){
-                    cells[j].more.push(ev);
-                    continue;
+                for(var i = 0; i < rows.length; i++) {
+                
+                    // how many rows should it span..
+
+                    var  cfg = {
+                        cls : 'roo-dynamic fc-event fc-event-hori fc-event-draggable ui-draggable',
+                        style : 'position: absolute', // left: 387px; width: 121px; top: 359px;
+
+                        unselectable : "on",
+                        cn : [
+                            {
+                                cls: 'fc-event-inner',
+                                cn : [
+    //                                {
+    //                                  tag:'span',
+    //                                  cls: 'fc-event-time',
+    //                                  html : cells.length > 1 ? '' : ev.time
+    //                                },
+                                    {
+                                      tag:'span',
+                                      cls: 'fc-event-title',
+                                      html : String.format('{0}', ev.title)
+                                    }
+
+
+                                ]
+                            },
+                            {
+                                cls: 'ui-resizable-handle ui-resizable-e',
+                                html : '&nbsp;&nbsp;&nbsp'
+                            }
+
+                        ]
+                    };
+
+                    if (i == 0) {
+                        cfg.cls += ' fc-event-start';
+                    }
+                    if ((i+1) == rows.length) {
+                        cfg.cls += ' fc-event-end';
+                    }
+
+                    var ctr = _this.el.select('.fc-event-container',true).first();
+                    var cg = ctr.createChild(cfg);
+
+                    var sbox = rows[i].start.select('.fc-day-content',true).first().getBox();
+                    var ebox = rows[i].end.select('.fc-day-content',true).first().getBox();
+
+                    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);
+                    cg.on('mouseleave' ,_this.onEventLeave, _this, ev);
+                    cg.on('click', _this.onEventClick, _this, ev);
+
+                    ev.els.push(cg);
+                    
                 }
                 
-                cells[j].events.push(ev);
             }
-        }
             
-//            for (var i = 0; i < rows.length; i++){
-//                // how many rows should it span..
-//
-//                var  cfg = {
-//                    cls : 'roo-dynamic fc-event fc-event-hori fc-event-draggable ui-draggable',
-//                    style : 'position: absolute', // left: 387px; width: 121px; top: 359px;
-//
-//                    unselectable : "on",
-//                    cn : [
-//                        {
-//                            cls: 'fc-event-inner',
-//                            cn : [
-////                                {
-////                                  tag:'span',
-////                                  cls: 'fc-event-time',
-////                                  html : cells.length > 1 ? '' : ev.time
-////                                },
-//                                {
-//                                  tag:'span',
-//                                  cls: 'fc-event-title',
-//                                  html : String.format('{0}', ev.title)
-//                                }
-//
-//
-//                            ]
-//                        },
-//                        {
-//                            cls: 'ui-resizable-handle ui-resizable-e',
-//                            html : '&nbsp;&nbsp;&nbsp'
-//                        }
-//
-//                    ]
-//                };
-//
-//                if (i == 0) {
-//                    cfg.cls += ' fc-event-start';
-//                }
-//                if ((i+1) == rows.length) {
-//                    cfg.cls += ' fc-event-end';
-//                }
-//
-//                var ctr = this.el.select('.fc-event-container',true).first();
-//                var cg = ctr.createChild(cfg);
-//
-//                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)]);    
-//                cg.setWidth(ebox.right - sbox.x -2);
-//
-//                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);
-//
-//                
-//            }
-//        }
-        
-//        for (var e = 0; e < this.calevents.length; e++) {
-//            
-//            var ev = this.calevents[e];
-//            var cells = ev.cells;
-//            var rows = ev.rows;
-//            
-//            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 _this = this;
-//        
-//        this.cells.each(function(c) {
-//            if(c.more.length && c.more.length == 1){
-//                c.rows.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));
-//            
-//            
-//            for (var e = 0; e < c.rows.length; e++){
-//                var ev = c.rows[e];
-//                
-//                if(ev.rendered){
-//                    continue;
-//                }
-//                
-//                var cells = ev.cells;
-//                var rows = ev.rows;
-//                
-//                for(var i = 0; i < rows.length; i++) {
-//                
-//                    // how many rows should it span..
-//
-//                    var  cfg = {
-//                        cls : 'roo-dynamic fc-event fc-event-hori fc-event-draggable ui-draggable',
-//                        style : 'position: absolute', // left: 387px; width: 121px; top: 359px;
-//
-//                        unselectable : "on",
-//                        cn : [
-//                            {
-//                                cls: 'fc-event-inner',
-//                                cn : [
-//    //                                {
-//    //                                  tag:'span',
-//    //                                  cls: 'fc-event-time',
-//    //                                  html : cells.length > 1 ? '' : ev.time
-//    //                                },
-//                                    {
-//                                      tag:'span',
-//                                      cls: 'fc-event-title',
-//                                      html : String.format('{0}', ev.title)
-//                                    }
-//
-//
-//                                ]
-//                            },
-//                            {
-//                                cls: 'ui-resizable-handle ui-resizable-e',
-//                                html : '&nbsp;&nbsp;&nbsp'
-//                            }
-//
-//                        ]
-//                    };
-//
-//                    if (i == 0) {
-//                        cfg.cls += ' fc-event-start';
-//                    }
-//                    if ((i+1) == rows.length) {
-//                        cfg.cls += ' fc-event-end';
-//                    }
-//
-//                    var ctr = _this.el.select('.fc-event-container',true).first();
-//                    var cg = ctr.createChild(cfg);
-//
-//                    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)]);    
-//                    cg.setWidth(ebox.right - sbox.x -2);
-//
-//                    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);
-//                    
-//                    ev.rendered = true;
-//                }
-//                
-//            }
-//            
-//            
-//            if(c.more.length){
-//                var  cfg = {
-//                    cls : 'fc-more-event roo-dynamic fc-event fc-event-hori fc-event-draggable ui-draggable fc-event-start fc-event-end',
-//                    style : 'position: absolute',
-//                    unselectable : "on",
-//                    cn : [
-//                        {
-//                            cls: 'fc-event-inner',
-//                            cn : [
-//                                {
-//                                  tag:'span',
-//                                  cls: 'fc-event-title',
-//                                  html : 'More'
-//                                }
-//
-//
-//                            ]
-//                        },
-//                        {
-//                            cls: 'ui-resizable-handle ui-resizable-e',
-//                            html : '&nbsp;&nbsp;&nbsp'
-//                        }
-//
-//                    ]
-//                };
-//
-//                var ctr = _this.el.select('.fc-event-container',true).first();
-//                var cg = ctr.createChild(cfg);
-//
-//                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.setWidth(ebox.right - sbox.x -2);
-//
-//                cg.on('click', _this.onMoreEventClick, _this, c.more);
-//                
-//            }
-//            
-//        });
+            
+            if(c.more.length){
+                var  cfg = {
+                    cls : 'fc-more-event roo-dynamic fc-event fc-event-hori fc-event-draggable ui-draggable fc-event-start fc-event-end',
+                    style : 'position: absolute',
+                    unselectable : "on",
+                    cn : [
+                        {
+                            cls: 'fc-event-inner',
+                            cn : [
+                                {
+                                  tag:'span',
+                                  cls: 'fc-event-title',
+                                  html : 'More'
+                                }
+
+
+                            ]
+                        },
+                        {
+                            cls: 'ui-resizable-handle ui-resizable-e',
+                            html : '&nbsp;&nbsp;&nbsp'
+                        }
+
+                    ]
+                };
+
+                var ctr = _this.el.select('.fc-event-container',true).first();
+                var cg = ctr.createChild(cfg);
+
+                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.row - 1) * 20)]);    
+                cg.setWidth(ebox.right - sbox.x -2);
+
+                cg.on('click', _this.onMoreEventClick, _this, c.more);
+                
+            }
+            
+        });
         
         
         
@@ -949,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);