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     });
90     
91     //this.grid = grid;
92     //this.grid.getGridEl().replaceClass("x-layout-inactive-content", "x-layout-component-panel");
93 };
94
95
96 Roo.extend(Roo.CalendarPanel, Roo.ContentPanel, {
97     getId : function(){
98         return this.id;
99     },
100     /*
101     setSize : function(width, height){
102         if(!this.ignoreResize(width, height)){
103             var grid = this.grid;
104             var size = this.adjustForComponents(width, height);
105             grid.getGridEl().setSize(size.width, size.height);
106             grid.autoSize();
107         }
108     },
109     
110     beforeSlide : function(){
111         this.grid.getView().scroller.clip();
112     },
113     
114     afterSlide : function(){
115         this.grid.getView().scroller.unclip();
116     },
117     */
118     destroy : function(){
119       //  this.grid.destroy();
120        // delete this.grid;
121         Roo.GridPanel.superclass.destroy.call(this);
122          
123     },
124     render : function()
125     {
126         this.onRender(this.el, false)
127     },
128     
129     onRender : function(ct, position)
130     {
131         if (this.rendered) {
132             return;
133         }
134         this.rendered = true;
135         
136         Roo.log("render calendar");
137         
138         //Roo.bootstrap.Component.superclass.onRender.call(this, ct, position);
139         
140         
141         var cfg = Roo.apply({},  this.getAutoCreate());
142         cfg.id = Roo.id();
143         
144         // fill in the extra attributes 
145         if (this.xattr && typeof(this.xattr) =='object') {
146             for (var i in this.xattr) {
147                 cfg[i] = this.xattr[i];
148             }
149         }
150         
151         if(this.dataId){
152             cfg.dataId = this.dataId;
153         }
154         
155         if (this.cls) {
156             cfg.cls = (typeof(cfg.cls) == 'undefined') ? this.cls : cfg.cls + ' ' + this.cls;
157         }
158         
159         if (this.style) { // fixme needs to support more complex style data.
160             cfg.style = this.style;
161         }
162         
163         if(this.name){
164             cfg.name = this.name;
165         }
166         
167         this.el = ct.createChild(cfg, position);
168         
169         if(this.tabIndex !== undefined){
170             this.el.dom.setAttribute('tabIndex', this.tabIndex);
171         }
172         this.initEvents();
173     },
174     
175     
176     getAutoCreate : Roo.bootstrap.Calendar.prototype.getAutoCreate,
177     
178     initEvents : Roo.bootstrap.Calendar.prototype.initEvents 
179     
180     
181 });
182
183
184 Roo.each([
185     'getAutoCreate',
186     'initEvents',
187     'resize',
188     'showPrevMonth',
189     'showToday',
190     'showNextMonth',
191     'showPrevYear',
192     'showNextYear',
193     'update',
194     'findCell',
195     'findCells',
196     'findBestRow',
197     'addItem',
198     'clearEvents',
199     'renderEvents',
200     'onEventEnter',
201     'onEventLeave',
202     'onEventClick',
203     'onMonthChange',
204     'onLoad'
205
206     
207 ], function(p) {
208     Roo.log('add' + p);
209     Roo.CalendarPanel.prototype[p] = Roo.boostrap.Calendar.prototype[p];
210  
211 });
212