1 | define([ |
---|
2 | "dojo/_base/declare", |
---|
3 | "./_CalendarView", |
---|
4 | "dijit/_TemplatedMixin", |
---|
5 | "./_CalendarMonthYearView", |
---|
6 | "dojo/dom-class", |
---|
7 | "dojo/_base/event", |
---|
8 | "dojo/text!./Calendar/CalendarMonth.html" |
---|
9 | ], function(declare, _CalendarView, _TemplatedMixin, _CalendarMonthYearView, domClass, event, template){ |
---|
10 | return declare("dojox.widget._CalendarMonthView", [_CalendarView, _TemplatedMixin], { |
---|
11 | // summary: |
---|
12 | // A Calendar view listing the 12 months of the year |
---|
13 | |
---|
14 | // templateString: String |
---|
15 | // The template to be used to construct the widget. |
---|
16 | templateString: template, |
---|
17 | |
---|
18 | // datePart: String |
---|
19 | // Specifies how much to increment the displayed date when the user |
---|
20 | // clicks the array button to increment of decrement the view. |
---|
21 | datePart: "year", |
---|
22 | |
---|
23 | // headerClass: String |
---|
24 | // Specifies the CSS class to apply to the header node for this view. |
---|
25 | headerClass: "dojoxCalendarMonthHeader", |
---|
26 | |
---|
27 | // displayedYear: String |
---|
28 | // The current year being displayed |
---|
29 | displayedYear: "", |
---|
30 | |
---|
31 | postCreate: function(){ |
---|
32 | // summary: |
---|
33 | // Constructs the view |
---|
34 | this.cloneClass(".dojoxCalendarMonthTemplate", 3); |
---|
35 | this.cloneClass(".dojoxCalendarMonthGroupTemplate", 2); |
---|
36 | this._populateMonths(); |
---|
37 | |
---|
38 | // Add visual effects to the view, if any have been mixed in |
---|
39 | this.addFx(".dojoxCalendarMonthLabel", this.domNode); |
---|
40 | }, |
---|
41 | |
---|
42 | _setValueAttr: function(value){ |
---|
43 | var year = this.header.innerHTML = value.getFullYear(); |
---|
44 | // We should be keeping this info around, might as well expose it too. |
---|
45 | // Added while patching http://bugs.dojotoolkit.org/ticket/15520 |
---|
46 | this.set("displayedYear", year); |
---|
47 | this._populateMonths(); |
---|
48 | }, |
---|
49 | |
---|
50 | _getMonthNames: _CalendarMonthYearView.prototype._getMonthNames, |
---|
51 | |
---|
52 | _populateMonths: _CalendarMonthYearView.prototype._populateMonths, |
---|
53 | |
---|
54 | onClick: function(evt){ |
---|
55 | // summary: |
---|
56 | // Handles clicks on month names |
---|
57 | if(!domClass.contains(evt.target, "dojoxCalendarMonthLabel")){event.stop(evt); return;} |
---|
58 | var parentNode = evt.target.parentNode; |
---|
59 | var month = parentNode.cellIndex + (parentNode.parentNode.rowIndex * 4); |
---|
60 | var date = this.get("value"); |
---|
61 | // Seeing a really strange bug in FF3.6 where this has to be called twice |
---|
62 | // in order to take affect |
---|
63 | date.setMonth(month); |
---|
64 | date.setMonth(month); |
---|
65 | date.setYear(this.displayedYear); |
---|
66 | this.onValueSelected(date, month); |
---|
67 | } |
---|
68 | }); |
---|
69 | }); |
---|