]> git.proxmox.com Git - extjs.git/blame - extjs/examples/classic/calendar/src/view/MonthDayDetail.js
add extjs 6.0.1 sources
[extjs.git] / extjs / examples / classic / calendar / src / view / MonthDayDetail.js
CommitLineData
6527f429
DM
1/*\r
2 * This is the view used internally by the panel that displays overflow events in the\r
3 * month view. Anytime a day cell cannot display all of its events, it automatically displays\r
4 * a link at the bottom to view all events for that day. When clicked, a panel pops up that\r
5 * uses this view to display the events for that day.\r
6 */\r
7Ext.define('Ext.calendar.view.MonthDayDetail', {\r
8 extend: 'Ext.Component',\r
9 alias: 'widget.monthdaydetailview',\r
10\r
11 requires: [\r
12 'Ext.XTemplate',\r
13 'Ext.calendar.util.Date',\r
14 'Ext.calendar.view.AbstractCalendar'\r
15 ],\r
16\r
17 afterRender: function() {\r
18 this.tpl = this.getTemplate();\r
19\r
20 this.callParent(arguments);\r
21\r
22 this.el.on({\r
23 click: this.view.onClick,\r
24 mouseover: this.view.onMouseOver,\r
25 mouseout: this.view.onMouseOut,\r
26 scope: this.view\r
27 });\r
28 },\r
29\r
30 getTemplate: function() {\r
31 if (!this.tpl) {\r
32 this.tpl = new Ext.XTemplate(\r
33 '<div class="ext-cal-mdv x-unselectable">',\r
34 '<table class="ext-cal-mvd-tbl" cellpadding="0" cellspacing="0">',\r
35 '<tbody>',\r
36 '<tpl for=".">',\r
37 '<tr><td class="ext-cal-ev">{markup}</td></tr>',\r
38 '</tpl>',\r
39 '</tbody>',\r
40 '</table>',\r
41 '</div>'\r
42 );\r
43 }\r
44 this.tpl.compile();\r
45 return this.tpl;\r
46 },\r
47\r
48 update: function(dt) {\r
49 this.date = dt;\r
50 this.refresh();\r
51 },\r
52\r
53 refresh: function() {\r
54 if (!this.rendered) {\r
55 return;\r
56 }\r
57 var eventTpl = this.view.getEventTemplate(),\r
58\r
59 templateData = [],\r
60\r
61 evts = this.store.queryBy(function(rec) {\r
62 var thisDt = Ext.Date.clearTime(this.date, true).getTime(),\r
63 recStart = Ext.Date.clearTime(rec.data[Ext.calendar.data.EventMappings.StartDate.name], true).getTime(),\r
64 startsOnDate = (thisDt == recStart),\r
65 spansDate = false;\r
66\r
67 if (!startsOnDate) {\r
68 var recEnd = Ext.Date.clearTime(rec.data[Ext.calendar.data.EventMappings.EndDate.name], true).getTime();\r
69 spansDate = recStart < thisDt && recEnd >= thisDt;\r
70 }\r
71 return startsOnDate || spansDate;\r
72 },\r
73 this);\r
74\r
75 evts.each(function(evt) {\r
76 var item = evt.data,\r
77 M = Ext.calendar.data.EventMappings;\r
78\r
79 item._renderAsAllDay = item[M.IsAllDay.name] || Ext.calendar.util.Date.diffDays(item[M.StartDate.name], item[M.EndDate.name]) > 0;\r
80 item.spanLeft = Ext.calendar.util.Date.diffDays(item[M.StartDate.name], this.date) > 0;\r
81 item.spanRight = Ext.calendar.util.Date.diffDays(this.date, item[M.EndDate.name]) > 0;\r
82 item.spanCls = (item.spanLeft ? (item.spanRight ? 'ext-cal-ev-spanboth':\r
83 'ext-cal-ev-spanleft') : (item.spanRight ? 'ext-cal-ev-spanright': ''));\r
84\r
85 templateData.push({\r
86 markup: eventTpl.apply(this.getTemplateEventData(item))\r
87 });\r
88 },\r
89 this);\r
90\r
91 this.tpl.overwrite(this.el, templateData);\r
92 this.fireEvent('eventsrendered', this, this.date, evts.getCount());\r
93 },\r
94\r
95 getTemplateEventData: function(evt) {\r
96 var data = this.view.getTemplateEventData(evt);\r
97 data._elId = 'dtl-' + data._elId;\r
98 return data;\r
99 }\r
100});\r