]>
Commit | Line | Data |
---|---|---|
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 | |
7 | Ext.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 |