Month.js
2.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/**
* @class Ext.calendar.template.Month
* @extends Ext.XTemplate
* <p>This is the template used to render the {@link Ext.calendar.template.Month MonthView}. Internally this class defers to an
* instance of {@link Ext.calerndar.BoxLayoutTemplate} to handle the inner layout rendering and adds containing elements around
* that to form the month view.</p>
* <p>This template is automatically bound to the underlying event store by the
* calendar components and expects records of type {@link Ext.calendar.EventRecord}.</p>
* @constructor
* @param {Object} config The config object
*/
Ext.define('Ext.calendar.template.Month', {
extend: 'Ext.XTemplate',
requires: ['Ext.calendar.template.BoxLayout'],
constructor: function(config){
Ext.apply(this, config);
this.weekTpl = new Ext.calendar.template.BoxLayout(config);
this.weekTpl.compile();
var weekLinkTpl = this.showWeekLinks ? '<div class="ext-cal-week-link-hd"> </div>' : '';
this.callParent([
'<div class="ext-cal-inner-ct {extraClasses}">',
'<div class="ext-cal-hd-ct ext-cal-month-hd">',
weekLinkTpl,
'<table class="ext-cal-hd-days-tbl" cellpadding="0" cellspacing="0">',
'<tbody>',
'<tr>',
'<tpl for="days">',
'<th class="ext-cal-hd-day{[xindex==1 ? " ext-cal-day-first" : ""]}" title="{.:date("l, F j, Y")}">{.:date("D")}</th>',
'</tpl>',
'</tr>',
'</tbody>',
'</table>',
'</div>',
'<div class="ext-cal-body-ct">{weeks}</div>',
'</div>'
]);
},
// private
applyTemplate : function(o){
var days = [],
weeks = this.weekTpl.apply(o),
dt = o.viewStart,
D = Ext.calendar.util.Date;
for(var i = 0; i < 7; i++){
days.push(D.add(dt, {days: i}));
}
var extraClasses = this.showHeader === true ? '' : 'ext-cal-noheader';
if(this.showWeekLinks){
extraClasses += ' ext-cal-week-links';
}
return this.applyOut({
days: days,
weeks: weeks,
extraClasses: extraClasses
}, []).join('');
},
apply: function(values) {
return this.applyTemplate.apply(this, arguments);
}
});