Roo/CalendarPanel.js
[roojs1] / Roo / CalendarPanel.js
1 /*
2  * - LGPL
3  *
4  * based on jquery fullcalendar
5  * 
6  */
7
8
9 /**
10  * @class Roo.Calendar
11  * @extends Roo.Component
12  * Bootstrap Calendar class
13     
14  * @constructor
15  * Create a new Container
16  * @param {Object} config The config object
17  */
18
19 Roo.CalendarPanel = function(config){
20     
21     Roo.log("cal panel ctr");
22   
23     this.wrapper = Roo.DomHelper.append(document.body, // wrapper for IE7 strict & safari scroll issue
24         {tag: "div", cls: "x-layout-grid-wrapper x-layout-inactive-content"}, true);
25         
26     //this.wrapper.dom.appendChild(grid.getGridEl().dom);
27     
28     Roo.CalendarPanel.superclass.constructor.call(this, this.wrapper, config);
29     
30     Roo.log(this.el);
31     
32     if(this.toolbar){
33         this.toolbar.el.insertBefore(this.wrapper.dom.firstChild);
34     }
35     // xtype created footer. - not sure if will work as we normally have to render first..
36     if (this.footer && !this.footer.el && this.footer.xtype) {
37         
38         //this.footer.container = this.grid.getView().getFooterPanel(true);
39         //this.footer.dataSource = this.grid.dataSource;
40         //this.footer = Roo.factory(this.footer, Roo);
41         
42     }
43     
44     this.on('activate', function()
45     {
46         Roo.log('activate');
47          
48         //console.log('render tree');
49         this.render();
50     },this);
51     
52     this.addEvents({
53         /**
54              * @event select
55              * Fires when a date is selected
56              * @param {DatePicker} this
57              * @param {Date} date The selected date
58              */
59         'select': true,
60         /**
61              * @event monthchange
62              * Fires when the displayed month changes 
63              * @param {DatePicker} this
64              * @param {Date} date The selected month
65              */
66         'monthchange': true,
67         /**
68              * @event evententer
69              * Fires when mouse over an event
70              * @param {Calendar} this
71              * @param {event} Event
72              */
73         'evententer': true,
74         /**
75              * @event eventleave
76              * Fires when the mouse leaves an
77              * @param {Calendar} this
78              * @param {event}
79              */
80         'eventleave': true,
81         /**
82              * @event eventclick
83              * Fires when the mouse click an
84              * @param {Calendar} this
85              * @param {event}
86              */
87         'eventclick': true,
88         /**
89              * @event rendered
90              * Fires when the grid is rendered
91              * @param {Calendar} this
92             
93              */
94         'rendered': true
95         
96         
97     });
98     
99     //this.grid = grid;
100     //this.grid.getGridEl().replaceClass("x-layout-inactive-content", "x-layout-component-panel");
101 };
102
103
104 Roo.extend(Roo.CalendarPanel, Roo.ContentPanel, {
105     
106     startDay : 0,
107     
108     getId : function(){
109         return this.id;
110     },
111     /*
112     setSize : function(width, height){
113         if(!this.ignoreResize(width, height)){
114             var grid = this.grid;
115             var size = this.adjustForComponents(width, height);
116             grid.getGridEl().setSize(size.width, size.height);
117             grid.autoSize();
118         }
119     },
120     
121     beforeSlide : function(){
122         this.grid.getView().scroller.clip();
123     },
124     
125     afterSlide : function(){
126         this.grid.getView().scroller.unclip();
127     },
128     */
129     destroy : function(){
130       //  this.grid.destroy();
131        // delete this.grid;
132         Roo.GridPanel.superclass.destroy.call(this);
133          
134     },
135     render : function()
136     {
137         this.onRender(this.el, false)
138     },
139     
140     onRender : function(ct, position)
141     {
142         if (this.rendered) {
143             return;
144         }
145         this.rendered = true;
146         
147         Roo.log("render calendar");
148         
149         //Roo.bootstrap.Component.superclass.onRender.call(this, ct, position);
150         
151         
152         var cfg = Roo.apply({},  this.getAutoCreate());
153         cfg.id = Roo.id();
154         
155         // fill in the extra attributes 
156         if (this.xattr && typeof(this.xattr) =='object') {
157             for (var i in this.xattr) {
158                 cfg[i] = this.xattr[i];
159             }
160         }
161         
162         if(this.dataId){
163             cfg.dataId = this.dataId;
164         }
165         
166         if (this.cls) {
167             cfg.cls = (typeof(cfg.cls) == 'undefined') ? this.cls : cfg.cls + ' ' + this.cls;
168         }
169         
170         if (this.style) { // fixme needs to support more complex style data.
171             cfg.style = this.style;
172         }
173         
174         if(this.name){
175             cfg.name = this.name;
176         }
177         
178         this.el = ct.createChild(cfg, position);
179         
180         if(this.tabIndex !== undefined){
181             this.el.dom.setAttribute('tabIndex', this.tabIndex);
182         }
183         
184         
185         this.initEvents();
186         this.fireEvent('rendered');
187     }
188     
189     
190     
191     
192 });
193
194
195
196 Roo.each([
197     'getAutoCreate',
198     'initEvents',
199     'resize',
200     'showPrevMonth',
201     'showToday',
202     'showNextMonth',
203     'showPrevYear',
204     'showNextYear',
205     'update',
206     'findCell',
207     'findCells',
208     'findBestRow',
209     'addItem',
210     'clearEvents',
211     'renderEvents',
212     'onEventEnter',
213     'onEventLeave',
214     'onEventClick',
215     'onMonthChange',
216     'onLoad'
217
218     
219 ], function(p) {
220     Roo.log('add' + p);
221     Roo.CalendarPanel.prototype[p] = Roo.bootstrap.Calendar.prototype[p];
222  
223 });