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