Mercurial > hg > NetworkVis
annotate query_builder/bootstrap/bootstrap-datepicker/js/bootstrap-datepicker.js @ 25:f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
author | alistair |
---|---|
date | Mon, 23 Nov 2015 02:03:51 -0500 |
parents | |
children |
rev | line source |
---|---|
25
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1 /* ========================================================= |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2 * bootstrap-datepicker.js |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
3 * Repo: https://github.com/eternicode/bootstrap-datepicker/ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
4 * Demo: http://eternicode.github.io/bootstrap-datepicker/ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
5 * Docs: http://bootstrap-datepicker.readthedocs.org/ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
6 * Forked from http://www.eyecon.ro/bootstrap-datepicker |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
7 * ========================================================= |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
8 * Started by Stefan Petre; improvements by Andrew Rowls + contributors |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
9 * |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
10 * Licensed under the Apache License, Version 2.0 (the "License"); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
11 * you may not use this file except in compliance with the License. |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
12 * You may obtain a copy of the License at |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
13 * |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
14 * http://www.apache.org/licenses/LICENSE-2.0 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
15 * |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
16 * Unless required by applicable law or agreed to in writing, software |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
17 * distributed under the License is distributed on an "AS IS" BASIS, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
19 * See the License for the specific language governing permissions and |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
20 * limitations under the License. |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
21 * ========================================================= */ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
22 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
23 (function(factory){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
24 if (typeof define === "function" && define.amd) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
25 define(["jquery"], factory); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
26 } else if (typeof exports === 'object') { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
27 factory(require('jquery')); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
28 } else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
29 factory(jQuery); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
30 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
31 }(function($, undefined){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
32 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
33 function UTCDate(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
34 return new Date(Date.UTC.apply(Date, arguments)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
35 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
36 function UTCToday(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
37 var today = new Date(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
38 return UTCDate(today.getFullYear(), today.getMonth(), today.getDate()); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
39 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
40 function isUTCEquals(date1, date2) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
41 return ( |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
42 date1.getUTCFullYear() === date2.getUTCFullYear() && |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
43 date1.getUTCMonth() === date2.getUTCMonth() && |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
44 date1.getUTCDate() === date2.getUTCDate() |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
45 ); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
46 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
47 function alias(method){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
48 return function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
49 return this[method].apply(this, arguments); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
50 }; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
51 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
52 function isValidDate(d) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
53 return d && !isNaN(d.getTime()); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
54 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
55 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
56 var DateArray = (function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
57 var extras = { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
58 get: function(i){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
59 return this.slice(i)[0]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
60 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
61 contains: function(d){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
62 // Array.indexOf is not cross-browser; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
63 // $.inArray doesn't work with Dates |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
64 var val = d && d.valueOf(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
65 for (var i=0, l=this.length; i < l; i++) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
66 if (this[i].valueOf() === val) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
67 return i; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
68 return -1; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
69 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
70 remove: function(i){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
71 this.splice(i,1); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
72 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
73 replace: function(new_array){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
74 if (!new_array) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
75 return; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
76 if (!$.isArray(new_array)) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
77 new_array = [new_array]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
78 this.clear(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
79 this.push.apply(this, new_array); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
80 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
81 clear: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
82 this.length = 0; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
83 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
84 copy: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
85 var a = new DateArray(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
86 a.replace(this); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
87 return a; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
88 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
89 }; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
90 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
91 return function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
92 var a = []; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
93 a.push.apply(a, arguments); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
94 $.extend(a, extras); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
95 return a; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
96 }; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
97 })(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
98 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
99 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
100 // Picker object |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
101 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
102 var Datepicker = function(element, options){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
103 $(element).data('datepicker', this); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
104 this._process_options(options); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
105 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
106 this.dates = new DateArray(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
107 this.viewDate = this.o.defaultViewDate; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
108 this.focusDate = null; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
109 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
110 this.element = $(element); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
111 this.isInline = false; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
112 this.isInput = this.element.is('input'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
113 this.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .btn') : false; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
114 this.hasInput = this.component && this.element.find('input').length; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
115 if (this.component && this.component.length === 0) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
116 this.component = false; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
117 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
118 this.picker = $(DPGlobal.template); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
119 this._buildEvents(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
120 this._attachEvents(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
121 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
122 if (this.isInline){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
123 this.picker.addClass('datepicker-inline').appendTo(this.element); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
124 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
125 else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
126 this.picker.addClass('datepicker-dropdown dropdown-menu'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
127 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
128 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
129 if (this.o.rtl){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
130 this.picker.addClass('datepicker-rtl'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
131 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
132 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
133 this.viewMode = this.o.startView; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
134 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
135 if (this.o.calendarWeeks) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
136 this.picker.find('thead .datepicker-title, tfoot .today, tfoot .clear') |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
137 .attr('colspan', function(i, val){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
138 return parseInt(val) + 1; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
139 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
140 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
141 this._allow_update = false; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
142 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
143 this.setStartDate(this._o.startDate); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
144 this.setEndDate(this._o.endDate); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
145 this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
146 this.setDaysOfWeekHighlighted(this.o.daysOfWeekHighlighted); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
147 this.setDatesDisabled(this.o.datesDisabled); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
148 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
149 this.fillDow(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
150 this.fillMonths(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
151 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
152 this._allow_update = true; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
153 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
154 this.update(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
155 this.showMode(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
156 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
157 if (this.isInline){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
158 this.show(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
159 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
160 }; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
161 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
162 Datepicker.prototype = { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
163 constructor: Datepicker, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
164 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
165 _resolveViewName: function(view, default_value){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
166 if (view === 0 || view === 'days' || view === 'month') { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
167 return 0; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
168 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
169 if (view === 1 || view === 'months' || view === 'year') { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
170 return 1; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
171 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
172 if (view === 2 || view === 'years' || view === 'decade') { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
173 return 2; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
174 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
175 if (view === 3 || view === 'decades' || view === 'century') { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
176 return 3; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
177 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
178 if (view === 4 || view === 'centuries' || view === 'millennium') { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
179 return 4; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
180 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
181 return default_value === undefined ? false : default_value; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
182 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
183 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
184 _process_options: function(opts){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
185 // Store raw options for reference |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
186 this._o = $.extend({}, this._o, opts); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
187 // Processed options |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
188 var o = this.o = $.extend({}, this._o); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
189 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
190 // Check if "de-DE" style date is available, if not language should |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
191 // fallback to 2 letter code eg "de" |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
192 var lang = o.language; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
193 if (!dates[lang]){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
194 lang = lang.split('-')[0]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
195 if (!dates[lang]) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
196 lang = defaults.language; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
197 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
198 o.language = lang; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
199 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
200 // Retrieve view index from any aliases |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
201 o.startView = this._resolveViewName(o.startView, 0); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
202 o.minViewMode = this._resolveViewName(o.minViewMode, 0); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
203 o.maxViewMode = this._resolveViewName(o.maxViewMode, 4); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
204 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
205 // Check that the start view is between min and max |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
206 o.startView = Math.min(o.startView, o.maxViewMode); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
207 o.startView = Math.max(o.startView, o.minViewMode); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
208 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
209 // true, false, or Number > 0 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
210 if (o.multidate !== true){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
211 o.multidate = Number(o.multidate) || false; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
212 if (o.multidate !== false) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
213 o.multidate = Math.max(0, o.multidate); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
214 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
215 o.multidateSeparator = String(o.multidateSeparator); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
216 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
217 o.weekStart %= 7; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
218 o.weekEnd = (o.weekStart + 6) % 7; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
219 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
220 var format = DPGlobal.parseFormat(o.format); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
221 if (o.startDate !== -Infinity){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
222 if (!!o.startDate){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
223 if (o.startDate instanceof Date) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
224 o.startDate = this._local_to_utc(this._zero_time(o.startDate)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
225 else |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
226 o.startDate = DPGlobal.parseDate(o.startDate, format, o.language, o.assumeNearbyYear); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
227 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
228 else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
229 o.startDate = -Infinity; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
230 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
231 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
232 if (o.endDate !== Infinity){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
233 if (!!o.endDate){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
234 if (o.endDate instanceof Date) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
235 o.endDate = this._local_to_utc(this._zero_time(o.endDate)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
236 else |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
237 o.endDate = DPGlobal.parseDate(o.endDate, format, o.language, o.assumeNearbyYear); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
238 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
239 else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
240 o.endDate = Infinity; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
241 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
242 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
243 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
244 o.daysOfWeekDisabled = o.daysOfWeekDisabled||[]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
245 if (!$.isArray(o.daysOfWeekDisabled)) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
246 o.daysOfWeekDisabled = o.daysOfWeekDisabled.split(/[,\s]*/); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
247 o.daysOfWeekDisabled = $.map(o.daysOfWeekDisabled, function(d){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
248 return parseInt(d, 10); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
249 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
250 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
251 o.daysOfWeekHighlighted = o.daysOfWeekHighlighted||[]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
252 if (!$.isArray(o.daysOfWeekHighlighted)) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
253 o.daysOfWeekHighlighted = o.daysOfWeekHighlighted.split(/[,\s]*/); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
254 o.daysOfWeekHighlighted = $.map(o.daysOfWeekHighlighted, function(d){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
255 return parseInt(d, 10); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
256 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
257 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
258 o.datesDisabled = o.datesDisabled||[]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
259 if (!$.isArray(o.datesDisabled)) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
260 var datesDisabled = []; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
261 datesDisabled.push(DPGlobal.parseDate(o.datesDisabled, format, o.language, o.assumeNearbyYear)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
262 o.datesDisabled = datesDisabled; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
263 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
264 o.datesDisabled = $.map(o.datesDisabled,function(d){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
265 return DPGlobal.parseDate(d, format, o.language, o.assumeNearbyYear); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
266 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
267 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
268 var plc = String(o.orientation).toLowerCase().split(/\s+/g), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
269 _plc = o.orientation.toLowerCase(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
270 plc = $.grep(plc, function(word){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
271 return /^auto|left|right|top|bottom$/.test(word); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
272 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
273 o.orientation = {x: 'auto', y: 'auto'}; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
274 if (!_plc || _plc === 'auto') |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
275 ; // no action |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
276 else if (plc.length === 1){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
277 switch (plc[0]){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
278 case 'top': |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
279 case 'bottom': |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
280 o.orientation.y = plc[0]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
281 break; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
282 case 'left': |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
283 case 'right': |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
284 o.orientation.x = plc[0]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
285 break; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
286 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
287 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
288 else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
289 _plc = $.grep(plc, function(word){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
290 return /^left|right$/.test(word); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
291 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
292 o.orientation.x = _plc[0] || 'auto'; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
293 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
294 _plc = $.grep(plc, function(word){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
295 return /^top|bottom$/.test(word); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
296 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
297 o.orientation.y = _plc[0] || 'auto'; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
298 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
299 if (o.defaultViewDate) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
300 var year = o.defaultViewDate.year || new Date().getFullYear(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
301 var month = o.defaultViewDate.month || 0; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
302 var day = o.defaultViewDate.day || 1; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
303 o.defaultViewDate = UTCDate(year, month, day); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
304 } else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
305 o.defaultViewDate = UTCToday(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
306 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
307 o.showOnFocus = o.showOnFocus !== undefined ? o.showOnFocus : true; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
308 o.zIndexOffset = o.zIndexOffset !== undefined ? o.zIndexOffset : 10; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
309 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
310 _events: [], |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
311 _secondaryEvents: [], |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
312 _applyEvents: function(evs){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
313 for (var i=0, el, ch, ev; i < evs.length; i++){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
314 el = evs[i][0]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
315 if (evs[i].length === 2){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
316 ch = undefined; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
317 ev = evs[i][1]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
318 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
319 else if (evs[i].length === 3){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
320 ch = evs[i][1]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
321 ev = evs[i][2]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
322 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
323 el.on(ev, ch); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
324 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
325 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
326 _unapplyEvents: function(evs){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
327 for (var i=0, el, ev, ch; i < evs.length; i++){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
328 el = evs[i][0]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
329 if (evs[i].length === 2){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
330 ch = undefined; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
331 ev = evs[i][1]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
332 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
333 else if (evs[i].length === 3){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
334 ch = evs[i][1]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
335 ev = evs[i][2]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
336 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
337 el.off(ev, ch); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
338 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
339 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
340 _buildEvents: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
341 var events = { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
342 keyup: $.proxy(function(e){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
343 if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
344 this.update(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
345 }, this), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
346 keydown: $.proxy(this.keydown, this), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
347 paste: $.proxy(this.paste, this) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
348 }; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
349 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
350 if (this.o.showOnFocus === true) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
351 events.focus = $.proxy(this.show, this); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
352 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
353 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
354 if (this.isInput) { // single input |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
355 this._events = [ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
356 [this.element, events] |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
357 ]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
358 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
359 else if (this.component && this.hasInput) { // component: input + button |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
360 this._events = [ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
361 // For components that are not readonly, allow keyboard nav |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
362 [this.element.find('input'), events], |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
363 [this.component, { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
364 click: $.proxy(this.show, this) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
365 }] |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
366 ]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
367 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
368 else if (this.element.is('div')){ // inline datepicker |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
369 this.isInline = true; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
370 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
371 else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
372 this._events = [ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
373 [this.element, { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
374 click: $.proxy(this.show, this) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
375 }] |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
376 ]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
377 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
378 this._events.push( |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
379 // Component: listen for blur on element descendants |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
380 [this.element, '*', { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
381 blur: $.proxy(function(e){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
382 this._focused_from = e.target; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
383 }, this) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
384 }], |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
385 // Input: listen for blur on element |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
386 [this.element, { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
387 blur: $.proxy(function(e){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
388 this._focused_from = e.target; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
389 }, this) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
390 }] |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
391 ); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
392 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
393 if (this.o.immediateUpdates) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
394 // Trigger input updates immediately on changed year/month |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
395 this._events.push([this.element, { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
396 'changeYear changeMonth': $.proxy(function(e){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
397 this.update(e.date); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
398 }, this) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
399 }]); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
400 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
401 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
402 this._secondaryEvents = [ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
403 [this.picker, { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
404 click: $.proxy(this.click, this) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
405 }], |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
406 [$(window), { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
407 resize: $.proxy(this.place, this) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
408 }], |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
409 [$(document), { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
410 mousedown: $.proxy(function(e){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
411 // Clicked outside the datepicker, hide it |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
412 if (!( |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
413 this.element.is(e.target) || |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
414 this.element.find(e.target).length || |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
415 this.picker.is(e.target) || |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
416 this.picker.find(e.target).length || |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
417 this.picker.hasClass('datepicker-inline') |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
418 )){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
419 this.hide(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
420 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
421 }, this) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
422 }] |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
423 ]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
424 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
425 _attachEvents: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
426 this._detachEvents(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
427 this._applyEvents(this._events); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
428 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
429 _detachEvents: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
430 this._unapplyEvents(this._events); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
431 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
432 _attachSecondaryEvents: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
433 this._detachSecondaryEvents(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
434 this._applyEvents(this._secondaryEvents); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
435 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
436 _detachSecondaryEvents: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
437 this._unapplyEvents(this._secondaryEvents); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
438 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
439 _trigger: function(event, altdate){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
440 var date = altdate || this.dates.get(-1), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
441 local_date = this._utc_to_local(date); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
442 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
443 this.element.trigger({ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
444 type: event, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
445 date: local_date, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
446 dates: $.map(this.dates, this._utc_to_local), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
447 format: $.proxy(function(ix, format){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
448 if (arguments.length === 0){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
449 ix = this.dates.length - 1; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
450 format = this.o.format; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
451 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
452 else if (typeof ix === 'string'){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
453 format = ix; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
454 ix = this.dates.length - 1; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
455 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
456 format = format || this.o.format; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
457 var date = this.dates.get(ix); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
458 return DPGlobal.formatDate(date, format, this.o.language); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
459 }, this) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
460 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
461 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
462 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
463 show: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
464 if (this.element.attr('readonly') && this.o.enableOnReadonly === false) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
465 return; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
466 if (!this.isInline) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
467 this.picker.appendTo(this.o.container); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
468 this.place(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
469 this.picker.show(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
470 this._attachSecondaryEvents(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
471 this._trigger('show'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
472 if ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
473 $(this.element).blur(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
474 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
475 return this; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
476 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
477 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
478 hide: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
479 if (this.isInline) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
480 return this; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
481 if (!this.picker.is(':visible')) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
482 return this; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
483 this.focusDate = null; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
484 this.picker.hide().detach(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
485 this._detachSecondaryEvents(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
486 this.viewMode = this.o.startView; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
487 this.showMode(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
488 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
489 if ( |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
490 this.o.forceParse && |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
491 ( |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
492 this.isInput && this.element.val() || |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
493 this.hasInput && this.element.find('input').val() |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
494 ) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
495 ) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
496 this.setValue(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
497 this._trigger('hide'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
498 return this; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
499 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
500 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
501 remove: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
502 this.hide(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
503 this._detachEvents(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
504 this._detachSecondaryEvents(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
505 this.picker.remove(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
506 delete this.element.data().datepicker; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
507 if (!this.isInput){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
508 delete this.element.data().date; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
509 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
510 return this; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
511 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
512 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
513 paste: function(evt){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
514 var dateString; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
515 if (evt.originalEvent.clipboardData && evt.originalEvent.clipboardData.types |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
516 && $.inArray('text/plain', evt.originalEvent.clipboardData.types) !== -1) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
517 dateString = evt.originalEvent.clipboardData.getData('text/plain'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
518 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
519 else if (window.clipboardData) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
520 dateString = window.clipboardData.getData('Text'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
521 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
522 else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
523 return; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
524 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
525 this.setDate(dateString); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
526 this.update(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
527 evt.preventDefault(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
528 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
529 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
530 _utc_to_local: function(utc){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
531 return utc && new Date(utc.getTime() + (utc.getTimezoneOffset()*60000)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
532 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
533 _local_to_utc: function(local){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
534 return local && new Date(local.getTime() - (local.getTimezoneOffset()*60000)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
535 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
536 _zero_time: function(local){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
537 return local && new Date(local.getFullYear(), local.getMonth(), local.getDate()); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
538 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
539 _zero_utc_time: function(utc){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
540 return utc && new Date(Date.UTC(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate())); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
541 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
542 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
543 getDates: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
544 return $.map(this.dates, this._utc_to_local); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
545 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
546 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
547 getUTCDates: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
548 return $.map(this.dates, function(d){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
549 return new Date(d); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
550 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
551 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
552 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
553 getDate: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
554 return this._utc_to_local(this.getUTCDate()); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
555 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
556 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
557 getUTCDate: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
558 var selected_date = this.dates.get(-1); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
559 if (typeof selected_date !== 'undefined') { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
560 return new Date(selected_date); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
561 } else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
562 return null; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
563 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
564 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
565 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
566 clearDates: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
567 var element; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
568 if (this.isInput) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
569 element = this.element; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
570 } else if (this.component) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
571 element = this.element.find('input'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
572 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
573 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
574 if (element) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
575 element.val(''); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
576 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
577 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
578 this.update(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
579 this._trigger('changeDate'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
580 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
581 if (this.o.autoclose) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
582 this.hide(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
583 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
584 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
585 setDates: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
586 var args = $.isArray(arguments[0]) ? arguments[0] : arguments; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
587 this.update.apply(this, args); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
588 this._trigger('changeDate'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
589 this.setValue(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
590 return this; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
591 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
592 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
593 setUTCDates: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
594 var args = $.isArray(arguments[0]) ? arguments[0] : arguments; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
595 this.update.apply(this, $.map(args, this._utc_to_local)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
596 this._trigger('changeDate'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
597 this.setValue(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
598 return this; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
599 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
600 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
601 setDate: alias('setDates'), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
602 setUTCDate: alias('setUTCDates'), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
603 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
604 setValue: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
605 var formatted = this.getFormattedDate(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
606 if (!this.isInput){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
607 if (this.component){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
608 this.element.find('input').val(formatted); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
609 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
610 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
611 else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
612 this.element.val(formatted); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
613 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
614 return this; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
615 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
616 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
617 getFormattedDate: function(format){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
618 if (format === undefined) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
619 format = this.o.format; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
620 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
621 var lang = this.o.language; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
622 return $.map(this.dates, function(d){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
623 return DPGlobal.formatDate(d, format, lang); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
624 }).join(this.o.multidateSeparator); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
625 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
626 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
627 setStartDate: function(startDate){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
628 this._process_options({startDate: startDate}); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
629 this.update(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
630 this.updateNavArrows(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
631 return this; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
632 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
633 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
634 setEndDate: function(endDate){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
635 this._process_options({endDate: endDate}); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
636 this.update(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
637 this.updateNavArrows(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
638 return this; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
639 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
640 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
641 setDaysOfWeekDisabled: function(daysOfWeekDisabled){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
642 this._process_options({daysOfWeekDisabled: daysOfWeekDisabled}); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
643 this.update(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
644 this.updateNavArrows(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
645 return this; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
646 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
647 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
648 setDaysOfWeekHighlighted: function(daysOfWeekHighlighted){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
649 this._process_options({daysOfWeekHighlighted: daysOfWeekHighlighted}); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
650 this.update(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
651 return this; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
652 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
653 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
654 setDatesDisabled: function(datesDisabled){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
655 this._process_options({datesDisabled: datesDisabled}); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
656 this.update(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
657 this.updateNavArrows(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
658 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
659 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
660 place: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
661 if (this.isInline) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
662 return this; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
663 var calendarWidth = this.picker.outerWidth(), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
664 calendarHeight = this.picker.outerHeight(), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
665 visualPadding = 10, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
666 container = $(this.o.container), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
667 windowWidth = container.width(), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
668 scrollTop = this.o.container === 'body' ? $(document).scrollTop() : container.scrollTop(), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
669 appendOffset = container.offset(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
670 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
671 var parentsZindex = []; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
672 this.element.parents().each(function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
673 var itemZIndex = $(this).css('z-index'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
674 if (itemZIndex !== 'auto' && itemZIndex !== 0) parentsZindex.push(parseInt(itemZIndex)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
675 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
676 var zIndex = Math.max.apply(Math, parentsZindex) + this.o.zIndexOffset; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
677 var offset = this.component ? this.component.parent().offset() : this.element.offset(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
678 var height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
679 var width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
680 var left = offset.left - appendOffset.left, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
681 top = offset.top - appendOffset.top; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
682 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
683 if (this.o.container !== 'body') { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
684 top += scrollTop; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
685 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
686 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
687 this.picker.removeClass( |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
688 'datepicker-orient-top datepicker-orient-bottom '+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
689 'datepicker-orient-right datepicker-orient-left' |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
690 ); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
691 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
692 if (this.o.orientation.x !== 'auto'){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
693 this.picker.addClass('datepicker-orient-' + this.o.orientation.x); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
694 if (this.o.orientation.x === 'right') |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
695 left -= calendarWidth - width; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
696 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
697 // auto x orientation is best-placement: if it crosses a window |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
698 // edge, fudge it sideways |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
699 else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
700 if (offset.left < 0) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
701 // component is outside the window on the left side. Move it into visible range |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
702 this.picker.addClass('datepicker-orient-left'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
703 left -= offset.left - visualPadding; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
704 } else if (left + calendarWidth > windowWidth) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
705 // the calendar passes the widow right edge. Align it to component right side |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
706 this.picker.addClass('datepicker-orient-right'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
707 left += width - calendarWidth; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
708 } else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
709 // Default to left |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
710 this.picker.addClass('datepicker-orient-left'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
711 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
712 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
713 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
714 // auto y orientation is best-situation: top or bottom, no fudging, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
715 // decision based on which shows more of the calendar |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
716 var yorient = this.o.orientation.y, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
717 top_overflow; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
718 if (yorient === 'auto'){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
719 top_overflow = -scrollTop + top - calendarHeight; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
720 yorient = top_overflow < 0 ? 'bottom' : 'top'; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
721 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
722 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
723 this.picker.addClass('datepicker-orient-' + yorient); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
724 if (yorient === 'top') |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
725 top -= calendarHeight + parseInt(this.picker.css('padding-top')); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
726 else |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
727 top += height; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
728 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
729 if (this.o.rtl) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
730 var right = windowWidth - (left + width); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
731 this.picker.css({ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
732 top: top, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
733 right: right, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
734 zIndex: zIndex |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
735 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
736 } else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
737 this.picker.css({ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
738 top: top, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
739 left: left, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
740 zIndex: zIndex |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
741 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
742 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
743 return this; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
744 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
745 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
746 _allow_update: true, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
747 update: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
748 if (!this._allow_update) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
749 return this; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
750 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
751 var oldDates = this.dates.copy(), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
752 dates = [], |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
753 fromArgs = false; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
754 if (arguments.length){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
755 $.each(arguments, $.proxy(function(i, date){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
756 if (date instanceof Date) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
757 date = this._local_to_utc(date); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
758 dates.push(date); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
759 }, this)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
760 fromArgs = true; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
761 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
762 else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
763 dates = this.isInput |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
764 ? this.element.val() |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
765 : this.element.data('date') || this.element.find('input').val(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
766 if (dates && this.o.multidate) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
767 dates = dates.split(this.o.multidateSeparator); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
768 else |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
769 dates = [dates]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
770 delete this.element.data().date; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
771 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
772 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
773 dates = $.map(dates, $.proxy(function(date){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
774 return DPGlobal.parseDate(date, this.o.format, this.o.language, this.o.assumeNearbyYear); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
775 }, this)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
776 dates = $.grep(dates, $.proxy(function(date){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
777 return ( |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
778 !this.dateWithinRange(date) || |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
779 !date |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
780 ); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
781 }, this), true); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
782 this.dates.replace(dates); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
783 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
784 if (this.dates.length) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
785 this.viewDate = new Date(this.dates.get(-1)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
786 else if (this.viewDate < this.o.startDate) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
787 this.viewDate = new Date(this.o.startDate); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
788 else if (this.viewDate > this.o.endDate) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
789 this.viewDate = new Date(this.o.endDate); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
790 else |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
791 this.viewDate = this.o.defaultViewDate; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
792 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
793 if (fromArgs){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
794 // setting date by clicking |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
795 this.setValue(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
796 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
797 else if (dates.length){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
798 // setting date by typing |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
799 if (String(oldDates) !== String(this.dates)) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
800 this._trigger('changeDate'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
801 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
802 if (!this.dates.length && oldDates.length) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
803 this._trigger('clearDate'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
804 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
805 this.fill(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
806 this.element.change(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
807 return this; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
808 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
809 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
810 fillDow: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
811 var dowCnt = this.o.weekStart, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
812 html = '<tr>'; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
813 if (this.o.calendarWeeks){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
814 this.picker.find('.datepicker-days .datepicker-switch') |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
815 .attr('colspan', function(i, val){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
816 return parseInt(val) + 1; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
817 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
818 html += '<th class="cw"> </th>'; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
819 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
820 while (dowCnt < this.o.weekStart + 7){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
821 html += '<th class="dow">'+dates[this.o.language].daysMin[(dowCnt++)%7]+'</th>'; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
822 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
823 html += '</tr>'; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
824 this.picker.find('.datepicker-days thead').append(html); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
825 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
826 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
827 fillMonths: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
828 var html = '', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
829 i = 0; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
830 while (i < 12){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
831 html += '<span class="month">'+dates[this.o.language].monthsShort[i++]+'</span>'; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
832 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
833 this.picker.find('.datepicker-months td').html(html); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
834 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
835 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
836 setRange: function(range){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
837 if (!range || !range.length) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
838 delete this.range; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
839 else |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
840 this.range = $.map(range, function(d){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
841 return d.valueOf(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
842 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
843 this.fill(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
844 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
845 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
846 getClassNames: function(date){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
847 var cls = [], |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
848 year = this.viewDate.getUTCFullYear(), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
849 month = this.viewDate.getUTCMonth(), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
850 today = new Date(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
851 if (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
852 cls.push('old'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
853 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
854 else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
855 cls.push('new'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
856 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
857 if (this.focusDate && date.valueOf() === this.focusDate.valueOf()) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
858 cls.push('focused'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
859 // Compare internal UTC date with local today, not UTC today |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
860 if (this.o.todayHighlight && |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
861 date.getUTCFullYear() === today.getFullYear() && |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
862 date.getUTCMonth() === today.getMonth() && |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
863 date.getUTCDate() === today.getDate()){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
864 cls.push('today'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
865 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
866 if (this.dates.contains(date) !== -1) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
867 cls.push('active'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
868 if (!this.dateWithinRange(date) || this.dateIsDisabled(date)){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
869 cls.push('disabled'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
870 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
871 if ($.inArray(date.getUTCDay(), this.o.daysOfWeekHighlighted) !== -1){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
872 cls.push('highlighted'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
873 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
874 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
875 if (this.range){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
876 if (date > this.range[0] && date < this.range[this.range.length-1]){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
877 cls.push('range'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
878 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
879 if ($.inArray(date.valueOf(), this.range) !== -1){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
880 cls.push('selected'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
881 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
882 if (date.valueOf() === this.range[0]){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
883 cls.push('range-start'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
884 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
885 if (date.valueOf() === this.range[this.range.length-1]){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
886 cls.push('range-end'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
887 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
888 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
889 return cls; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
890 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
891 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
892 _fill_yearsView: function(selector, cssClass, factor, step, currentYear, startYear, endYear, callback){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
893 var html, view, year, steps, startStep, endStep, thisYear, i, classes, tooltip, before; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
894 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
895 html = ''; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
896 view = this.picker.find(selector); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
897 year = parseInt(currentYear / factor, 10) * factor; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
898 startStep = parseInt(startYear / step, 10) * step; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
899 endStep = parseInt(endYear / step, 10) * step; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
900 steps = $.map(this.dates, function(d){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
901 return parseInt(d.getUTCFullYear() / step, 10) * step; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
902 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
903 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
904 view.find('.datepicker-switch').text(year + '-' + (year + step * 9)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
905 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
906 thisYear = year - step; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
907 for (i = -1; i < 11; i += 1) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
908 classes = [cssClass]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
909 tooltip = null; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
910 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
911 if (i === -1) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
912 classes.push('old'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
913 } else if (i === 10) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
914 classes.push('new'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
915 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
916 if ($.inArray(thisYear, steps) !== -1) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
917 classes.push('active'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
918 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
919 if (thisYear < startStep || thisYear > endStep) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
920 classes.push('disabled'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
921 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
922 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
923 if (callback !== $.noop) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
924 before = callback(new Date(thisYear, 0, 1)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
925 if (before === undefined) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
926 before = {}; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
927 } else if (typeof(before) === 'boolean') { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
928 before = {enabled: before}; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
929 } else if (typeof(before) === 'string') { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
930 before = {classes: before}; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
931 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
932 if (before.enabled === false) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
933 classes.push('disabled'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
934 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
935 if (before.classes) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
936 classes = classes.concat(before.classes.split(/\s+/)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
937 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
938 if (before.tooltip) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
939 tooltip = before.tooltip; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
940 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
941 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
942 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
943 html += '<span class="' + classes.join(' ') + '"' + (tooltip ? ' title="' + tooltip + '"' : '') + '>' + thisYear + '</span>'; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
944 thisYear += step; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
945 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
946 view.find('td').html(html); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
947 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
948 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
949 fill: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
950 var d = new Date(this.viewDate), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
951 year = d.getUTCFullYear(), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
952 month = d.getUTCMonth(), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
953 startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
954 startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
955 endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
956 endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
957 todaytxt = dates[this.o.language].today || dates['en'].today || '', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
958 cleartxt = dates[this.o.language].clear || dates['en'].clear || '', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
959 titleFormat = dates[this.o.language].titleFormat || dates['en'].titleFormat, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
960 tooltip, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
961 before; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
962 if (isNaN(year) || isNaN(month)) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
963 return; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
964 this.picker.find('.datepicker-days .datepicker-switch') |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
965 .text(DPGlobal.formatDate(d, titleFormat, this.o.language)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
966 this.picker.find('tfoot .today') |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
967 .text(todaytxt) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
968 .toggle(this.o.todayBtn !== false); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
969 this.picker.find('tfoot .clear') |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
970 .text(cleartxt) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
971 .toggle(this.o.clearBtn !== false); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
972 this.picker.find('thead .datepicker-title') |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
973 .text(this.o.title) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
974 .toggle(this.o.title !== ''); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
975 this.updateNavArrows(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
976 this.fillMonths(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
977 var prevMonth = UTCDate(year, month-1, 28), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
978 day = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth()); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
979 prevMonth.setUTCDate(day); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
980 prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
981 var nextMonth = new Date(prevMonth); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
982 if (prevMonth.getUTCFullYear() < 100){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
983 nextMonth.setUTCFullYear(prevMonth.getUTCFullYear()); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
984 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
985 nextMonth.setUTCDate(nextMonth.getUTCDate() + 42); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
986 nextMonth = nextMonth.valueOf(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
987 var html = []; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
988 var clsName; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
989 while (prevMonth.valueOf() < nextMonth){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
990 if (prevMonth.getUTCDay() === this.o.weekStart){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
991 html.push('<tr>'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
992 if (this.o.calendarWeeks){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
993 // ISO 8601: First week contains first thursday. |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
994 // ISO also states week starts on Monday, but we can be more abstract here. |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
995 var |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
996 // Start of current week: based on weekstart/current date |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
997 ws = new Date(+prevMonth + (this.o.weekStart - prevMonth.getUTCDay() - 7) % 7 * 864e5), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
998 // Thursday of this week |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
999 th = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1000 // First Thursday of year, year from thursday |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1001 yth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay())%7*864e5), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1002 // Calendar week: ms between thursdays, div ms per day, div 7 days |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1003 calWeek = (th - yth) / 864e5 / 7 + 1; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1004 html.push('<td class="cw">'+ calWeek +'</td>'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1005 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1006 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1007 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1008 clsName = this.getClassNames(prevMonth); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1009 clsName.push('day'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1010 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1011 if (this.o.beforeShowDay !== $.noop){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1012 before = this.o.beforeShowDay(this._utc_to_local(prevMonth)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1013 if (before === undefined) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1014 before = {}; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1015 else if (typeof(before) === 'boolean') |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1016 before = {enabled: before}; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1017 else if (typeof(before) === 'string') |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1018 before = {classes: before}; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1019 if (before.enabled === false) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1020 clsName.push('disabled'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1021 if (before.classes) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1022 clsName = clsName.concat(before.classes.split(/\s+/)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1023 if (before.tooltip) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1024 tooltip = before.tooltip; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1025 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1026 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1027 clsName = $.unique(clsName); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1028 html.push('<td class="'+clsName.join(' ')+'"' + (tooltip ? ' title="'+tooltip+'"' : '') + '>'+prevMonth.getUTCDate() + '</td>'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1029 tooltip = null; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1030 if (prevMonth.getUTCDay() === this.o.weekEnd){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1031 html.push('</tr>'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1032 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1033 prevMonth.setUTCDate(prevMonth.getUTCDate()+1); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1034 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1035 this.picker.find('.datepicker-days tbody').empty().append(html.join('')); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1036 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1037 var months = this.picker.find('.datepicker-months') |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1038 .find('.datepicker-switch') |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1039 .text(this.o.maxViewMode < 2 ? 'Months' : year) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1040 .end() |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1041 .find('span').removeClass('active'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1042 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1043 $.each(this.dates, function(i, d){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1044 if (d.getUTCFullYear() === year) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1045 months.eq(d.getUTCMonth()).addClass('active'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1046 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1047 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1048 if (year < startYear || year > endYear){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1049 months.addClass('disabled'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1050 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1051 if (year === startYear){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1052 months.slice(0, startMonth).addClass('disabled'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1053 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1054 if (year === endYear){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1055 months.slice(endMonth+1).addClass('disabled'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1056 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1057 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1058 if (this.o.beforeShowMonth !== $.noop){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1059 var that = this; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1060 $.each(months, function(i, month){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1061 if (!$(month).hasClass('disabled')) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1062 var moDate = new Date(year, i, 1); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1063 var before = that.o.beforeShowMonth(moDate); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1064 if (before === false) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1065 $(month).addClass('disabled'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1066 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1067 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1068 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1069 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1070 // Generating decade/years picker |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1071 this._fill_yearsView( |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1072 '.datepicker-years', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1073 'year', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1074 10, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1075 1, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1076 year, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1077 startYear, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1078 endYear, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1079 this.o.beforeShowYear |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1080 ); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1081 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1082 // Generating century/decades picker |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1083 this._fill_yearsView( |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1084 '.datepicker-decades', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1085 'decade', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1086 100, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1087 10, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1088 year, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1089 startYear, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1090 endYear, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1091 this.o.beforeShowDecade |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1092 ); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1093 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1094 // Generating millennium/centuries picker |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1095 this._fill_yearsView( |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1096 '.datepicker-centuries', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1097 'century', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1098 1000, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1099 100, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1100 year, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1101 startYear, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1102 endYear, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1103 this.o.beforeShowCentury |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1104 ); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1105 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1106 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1107 updateNavArrows: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1108 if (!this._allow_update) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1109 return; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1110 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1111 var d = new Date(this.viewDate), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1112 year = d.getUTCFullYear(), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1113 month = d.getUTCMonth(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1114 switch (this.viewMode){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1115 case 0: |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1116 if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() && month <= this.o.startDate.getUTCMonth()){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1117 this.picker.find('.prev').css({visibility: 'hidden'}); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1118 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1119 else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1120 this.picker.find('.prev').css({visibility: 'visible'}); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1121 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1122 if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() && month >= this.o.endDate.getUTCMonth()){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1123 this.picker.find('.next').css({visibility: 'hidden'}); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1124 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1125 else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1126 this.picker.find('.next').css({visibility: 'visible'}); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1127 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1128 break; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1129 case 1: |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1130 case 2: |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1131 case 3: |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1132 case 4: |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1133 if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() || this.o.maxViewMode < 2){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1134 this.picker.find('.prev').css({visibility: 'hidden'}); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1135 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1136 else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1137 this.picker.find('.prev').css({visibility: 'visible'}); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1138 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1139 if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() || this.o.maxViewMode < 2){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1140 this.picker.find('.next').css({visibility: 'hidden'}); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1141 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1142 else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1143 this.picker.find('.next').css({visibility: 'visible'}); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1144 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1145 break; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1146 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1147 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1148 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1149 click: function(e){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1150 e.preventDefault(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1151 e.stopPropagation(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1152 var target = $(e.target).closest('span, td, th'), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1153 year, month, day; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1154 if (target.length === 1){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1155 switch (target[0].nodeName.toLowerCase()){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1156 case 'th': |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1157 switch (target[0].className){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1158 case 'datepicker-switch': |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1159 this.showMode(1); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1160 break; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1161 case 'prev': |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1162 case 'next': |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1163 var dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1164 switch (this.viewMode){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1165 case 0: |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1166 this.viewDate = this.moveMonth(this.viewDate, dir); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1167 this._trigger('changeMonth', this.viewDate); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1168 break; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1169 case 1: |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1170 case 2: |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1171 case 3: |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1172 case 4: |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1173 this.viewDate = this.moveYear(this.viewDate, dir); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1174 if (this.viewMode === 1) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1175 this._trigger('changeYear', this.viewDate); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1176 break; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1177 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1178 this.fill(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1179 break; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1180 case 'today': |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1181 this.showMode(-2); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1182 var which = this.o.todayBtn === 'linked' ? null : 'view'; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1183 this._setDate(UTCToday(), which); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1184 break; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1185 case 'clear': |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1186 this.clearDates(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1187 break; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1188 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1189 break; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1190 case 'span': |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1191 if (!target.hasClass('disabled')){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1192 this.viewDate.setUTCDate(1); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1193 if (target.hasClass('month')){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1194 day = 1; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1195 month = target.parent().find('span').index(target); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1196 year = this.viewDate.getUTCFullYear(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1197 this.viewDate.setUTCMonth(month); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1198 this._trigger('changeMonth', this.viewDate); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1199 if (this.o.minViewMode === 1){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1200 this._setDate(UTCDate(year, month, day)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1201 this.showMode(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1202 } else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1203 this.showMode(-1); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1204 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1205 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1206 else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1207 day = 1; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1208 month = 0; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1209 year = parseInt(target.text(), 10)||0; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1210 this.viewDate.setUTCFullYear(year); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1211 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1212 var trigger = target.hasClass('year') ? 'Year' : ( |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1213 target.hasClass('decade') ? 'Decade' : 'Century' |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1214 ); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1215 this._trigger('change' + trigger, this.viewDate); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1216 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1217 var shouldSetDate = (this.o.minViewMode === 4 || |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1218 (this.o.minViewMode === 2 && target.hasClass('year')) || |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1219 (this.o.minViewMode === 3 && target.hasClass('decade')) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1220 ); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1221 if (shouldSetDate){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1222 this._setDate(UTCDate(year, month, day)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1223 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1224 this.showMode(-1); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1225 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1226 this.fill(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1227 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1228 break; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1229 case 'td': |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1230 if (target.hasClass('day') && !target.hasClass('disabled')){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1231 day = parseInt(target.text(), 10)||1; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1232 year = this.viewDate.getUTCFullYear(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1233 month = this.viewDate.getUTCMonth(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1234 if (target.hasClass('old')){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1235 if (month === 0){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1236 month = 11; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1237 year -= 1; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1238 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1239 else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1240 month -= 1; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1241 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1242 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1243 else if (target.hasClass('new')){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1244 if (month === 11){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1245 month = 0; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1246 year += 1; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1247 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1248 else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1249 month += 1; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1250 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1251 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1252 this._setDate(UTCDate(year, month, day)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1253 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1254 break; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1255 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1256 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1257 if (this.picker.is(':visible') && this._focused_from){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1258 $(this._focused_from).focus(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1259 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1260 delete this._focused_from; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1261 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1262 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1263 _toggle_multidate: function(date){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1264 var ix = this.dates.contains(date); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1265 if (!date){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1266 this.dates.clear(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1267 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1268 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1269 if (ix !== -1){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1270 if (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1271 this.dates.remove(ix); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1272 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1273 } else if (this.o.multidate === false) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1274 this.dates.clear(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1275 this.dates.push(date); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1276 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1277 else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1278 this.dates.push(date); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1279 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1280 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1281 if (typeof this.o.multidate === 'number') |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1282 while (this.dates.length > this.o.multidate) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1283 this.dates.remove(0); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1284 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1285 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1286 _setDate: function(date, which){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1287 if (!which || which === 'date') |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1288 this._toggle_multidate(date && new Date(date)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1289 if (!which || which === 'view') |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1290 this.viewDate = date && new Date(date); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1291 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1292 this.fill(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1293 this.setValue(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1294 if (!which || which !== 'view') { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1295 this._trigger('changeDate'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1296 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1297 var element; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1298 if (this.isInput){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1299 element = this.element; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1300 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1301 else if (this.component){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1302 element = this.element.find('input'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1303 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1304 if (element){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1305 element.change(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1306 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1307 if (this.o.autoclose && (!which || which === 'date')){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1308 this.hide(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1309 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1310 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1311 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1312 moveDay: function(date, dir){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1313 var newDate = new Date(date); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1314 newDate.setUTCDate(date.getUTCDate() + dir); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1315 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1316 return newDate; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1317 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1318 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1319 moveWeek: function(date, dir){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1320 return this.moveDay(date, dir * 7); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1321 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1322 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1323 moveMonth: function(date, dir){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1324 if (!isValidDate(date)) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1325 return this.o.defaultViewDate; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1326 if (!dir) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1327 return date; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1328 var new_date = new Date(date.valueOf()), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1329 day = new_date.getUTCDate(), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1330 month = new_date.getUTCMonth(), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1331 mag = Math.abs(dir), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1332 new_month, test; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1333 dir = dir > 0 ? 1 : -1; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1334 if (mag === 1){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1335 test = dir === -1 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1336 // If going back one month, make sure month is not current month |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1337 // (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1338 ? function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1339 return new_date.getUTCMonth() === month; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1340 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1341 // If going forward one month, make sure month is as expected |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1342 // (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1343 : function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1344 return new_date.getUTCMonth() !== new_month; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1345 }; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1346 new_month = month + dir; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1347 new_date.setUTCMonth(new_month); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1348 // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1349 if (new_month < 0 || new_month > 11) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1350 new_month = (new_month + 12) % 12; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1351 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1352 else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1353 // For magnitudes >1, move one month at a time... |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1354 for (var i=0; i < mag; i++) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1355 // ...which might decrease the day (eg, Jan 31 to Feb 28, etc)... |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1356 new_date = this.moveMonth(new_date, dir); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1357 // ...then reset the day, keeping it in the new month |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1358 new_month = new_date.getUTCMonth(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1359 new_date.setUTCDate(day); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1360 test = function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1361 return new_month !== new_date.getUTCMonth(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1362 }; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1363 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1364 // Common date-resetting loop -- if date is beyond end of month, make it |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1365 // end of month |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1366 while (test()){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1367 new_date.setUTCDate(--day); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1368 new_date.setUTCMonth(new_month); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1369 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1370 return new_date; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1371 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1372 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1373 moveYear: function(date, dir){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1374 return this.moveMonth(date, dir*12); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1375 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1376 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1377 moveAvailableDate: function(date, dir, fn){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1378 do { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1379 date = this[fn](date, dir); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1380 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1381 if (!this.dateWithinRange(date)) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1382 return false; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1383 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1384 fn = 'moveDay'; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1385 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1386 while (this.dateIsDisabled(date)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1387 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1388 return date; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1389 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1390 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1391 weekOfDateIsDisabled: function(date){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1392 return $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1393 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1394 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1395 dateIsDisabled: function(date){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1396 return ( |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1397 this.weekOfDateIsDisabled(date) || |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1398 $.grep(this.o.datesDisabled, function(d){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1399 return isUTCEquals(date, d); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1400 }).length > 0 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1401 ); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1402 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1403 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1404 dateWithinRange: function(date){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1405 return date >= this.o.startDate && date <= this.o.endDate; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1406 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1407 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1408 keydown: function(e){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1409 if (!this.picker.is(':visible')){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1410 if (e.keyCode === 40 || e.keyCode === 27) { // allow down to re-show picker |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1411 this.show(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1412 e.stopPropagation(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1413 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1414 return; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1415 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1416 var dateChanged = false, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1417 dir, newViewDate, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1418 focusDate = this.focusDate || this.viewDate; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1419 switch (e.keyCode){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1420 case 27: // escape |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1421 if (this.focusDate){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1422 this.focusDate = null; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1423 this.viewDate = this.dates.get(-1) || this.viewDate; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1424 this.fill(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1425 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1426 else |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1427 this.hide(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1428 e.preventDefault(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1429 e.stopPropagation(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1430 break; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1431 case 37: // left |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1432 case 38: // up |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1433 case 39: // right |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1434 case 40: // down |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1435 if (!this.o.keyboardNavigation || this.o.daysOfWeekDisabled.length === 7) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1436 break; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1437 dir = e.keyCode === 37 || e.keyCode === 38 ? -1 : 1; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1438 if (e.ctrlKey){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1439 newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1440 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1441 if (newViewDate) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1442 this._trigger('changeYear', this.viewDate); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1443 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1444 else if (e.shiftKey){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1445 newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1446 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1447 if (newViewDate) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1448 this._trigger('changeMonth', this.viewDate); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1449 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1450 else if (e.keyCode === 37 || e.keyCode === 39){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1451 newViewDate = this.moveAvailableDate(focusDate, dir, 'moveDay'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1452 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1453 else if (!this.weekOfDateIsDisabled(focusDate)){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1454 newViewDate = this.moveAvailableDate(focusDate, dir, 'moveWeek'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1455 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1456 if (newViewDate){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1457 this.focusDate = this.viewDate = newViewDate; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1458 this.setValue(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1459 this.fill(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1460 e.preventDefault(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1461 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1462 break; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1463 case 13: // enter |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1464 if (!this.o.forceParse) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1465 break; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1466 focusDate = this.focusDate || this.dates.get(-1) || this.viewDate; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1467 if (this.o.keyboardNavigation) { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1468 this._toggle_multidate(focusDate); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1469 dateChanged = true; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1470 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1471 this.focusDate = null; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1472 this.viewDate = this.dates.get(-1) || this.viewDate; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1473 this.setValue(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1474 this.fill(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1475 if (this.picker.is(':visible')){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1476 e.preventDefault(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1477 e.stopPropagation(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1478 if (this.o.autoclose) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1479 this.hide(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1480 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1481 break; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1482 case 9: // tab |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1483 this.focusDate = null; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1484 this.viewDate = this.dates.get(-1) || this.viewDate; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1485 this.fill(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1486 this.hide(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1487 break; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1488 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1489 if (dateChanged){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1490 if (this.dates.length) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1491 this._trigger('changeDate'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1492 else |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1493 this._trigger('clearDate'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1494 var element; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1495 if (this.isInput){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1496 element = this.element; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1497 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1498 else if (this.component){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1499 element = this.element.find('input'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1500 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1501 if (element){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1502 element.change(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1503 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1504 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1505 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1506 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1507 showMode: function(dir){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1508 if (dir){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1509 this.viewMode = Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, this.viewMode + dir)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1510 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1511 this.picker |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1512 .children('div') |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1513 .hide() |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1514 .filter('.datepicker-' + DPGlobal.modes[this.viewMode].clsName) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1515 .show(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1516 this.updateNavArrows(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1517 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1518 }; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1519 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1520 var DateRangePicker = function(element, options){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1521 $(element).data('datepicker', this); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1522 this.element = $(element); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1523 this.inputs = $.map(options.inputs, function(i){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1524 return i.jquery ? i[0] : i; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1525 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1526 delete options.inputs; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1527 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1528 datepickerPlugin.call($(this.inputs), options) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1529 .on('changeDate', $.proxy(this.dateUpdated, this)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1530 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1531 this.pickers = $.map(this.inputs, function(i){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1532 return $(i).data('datepicker'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1533 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1534 this.updateDates(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1535 }; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1536 DateRangePicker.prototype = { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1537 updateDates: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1538 this.dates = $.map(this.pickers, function(i){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1539 return i.getUTCDate(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1540 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1541 this.updateRanges(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1542 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1543 updateRanges: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1544 var range = $.map(this.dates, function(d){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1545 return d.valueOf(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1546 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1547 $.each(this.pickers, function(i, p){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1548 p.setRange(range); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1549 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1550 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1551 dateUpdated: function(e){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1552 // `this.updating` is a workaround for preventing infinite recursion |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1553 // between `changeDate` triggering and `setUTCDate` calling. Until |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1554 // there is a better mechanism. |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1555 if (this.updating) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1556 return; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1557 this.updating = true; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1558 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1559 var dp = $(e.target).data('datepicker'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1560 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1561 if (typeof(dp) === "undefined") { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1562 return; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1563 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1564 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1565 var new_date = dp.getUTCDate(), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1566 i = $.inArray(e.target, this.inputs), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1567 j = i - 1, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1568 k = i + 1, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1569 l = this.inputs.length; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1570 if (i === -1) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1571 return; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1572 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1573 $.each(this.pickers, function(i, p){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1574 if (!p.getUTCDate()) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1575 p.setUTCDate(new_date); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1576 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1577 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1578 if (new_date < this.dates[j]){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1579 // Date being moved earlier/left |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1580 while (j >= 0 && new_date < this.dates[j]){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1581 this.pickers[j--].setUTCDate(new_date); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1582 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1583 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1584 else if (new_date > this.dates[k]){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1585 // Date being moved later/right |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1586 while (k < l && new_date > this.dates[k]){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1587 this.pickers[k++].setUTCDate(new_date); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1588 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1589 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1590 this.updateDates(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1591 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1592 delete this.updating; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1593 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1594 remove: function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1595 $.map(this.pickers, function(p){ p.remove(); }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1596 delete this.element.data().datepicker; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1597 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1598 }; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1599 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1600 function opts_from_el(el, prefix){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1601 // Derive options from element data-attrs |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1602 var data = $(el).data(), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1603 out = {}, inkey, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1604 replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1605 prefix = new RegExp('^' + prefix.toLowerCase()); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1606 function re_lower(_,a){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1607 return a.toLowerCase(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1608 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1609 for (var key in data) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1610 if (prefix.test(key)){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1611 inkey = key.replace(replace, re_lower); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1612 out[inkey] = data[key]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1613 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1614 return out; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1615 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1616 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1617 function opts_from_locale(lang){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1618 // Derive options from locale plugins |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1619 var out = {}; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1620 // Check if "de-DE" style date is available, if not language should |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1621 // fallback to 2 letter code eg "de" |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1622 if (!dates[lang]){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1623 lang = lang.split('-')[0]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1624 if (!dates[lang]) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1625 return; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1626 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1627 var d = dates[lang]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1628 $.each(locale_opts, function(i,k){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1629 if (k in d) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1630 out[k] = d[k]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1631 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1632 return out; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1633 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1634 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1635 var old = $.fn.datepicker; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1636 var datepickerPlugin = function(option){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1637 var args = Array.apply(null, arguments); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1638 args.shift(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1639 var internal_return; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1640 this.each(function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1641 var $this = $(this), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1642 data = $this.data('datepicker'), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1643 options = typeof option === 'object' && option; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1644 if (!data){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1645 var elopts = opts_from_el(this, 'date'), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1646 // Preliminary otions |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1647 xopts = $.extend({}, defaults, elopts, options), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1648 locopts = opts_from_locale(xopts.language), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1649 // Options priority: js args, data-attrs, locales, defaults |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1650 opts = $.extend({}, defaults, locopts, elopts, options); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1651 if ($this.hasClass('input-daterange') || opts.inputs){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1652 $.extend(opts, { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1653 inputs: opts.inputs || $this.find('input').toArray() |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1654 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1655 data = new DateRangePicker(this, opts); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1656 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1657 else { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1658 data = new Datepicker(this, opts); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1659 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1660 $this.data('datepicker', data); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1661 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1662 if (typeof option === 'string' && typeof data[option] === 'function'){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1663 internal_return = data[option].apply(data, args); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1664 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1665 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1666 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1667 if ( |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1668 internal_return === undefined || |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1669 internal_return instanceof Datepicker || |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1670 internal_return instanceof DateRangePicker |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1671 ) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1672 return this; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1673 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1674 if (this.length > 1) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1675 throw new Error('Using only allowed for the collection of a single element (' + option + ' function)'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1676 else |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1677 return internal_return; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1678 }; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1679 $.fn.datepicker = datepickerPlugin; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1680 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1681 var defaults = $.fn.datepicker.defaults = { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1682 assumeNearbyYear: false, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1683 autoclose: false, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1684 beforeShowDay: $.noop, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1685 beforeShowMonth: $.noop, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1686 beforeShowYear: $.noop, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1687 beforeShowDecade: $.noop, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1688 beforeShowCentury: $.noop, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1689 calendarWeeks: false, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1690 clearBtn: false, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1691 toggleActive: false, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1692 daysOfWeekDisabled: [], |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1693 daysOfWeekHighlighted: [], |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1694 datesDisabled: [], |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1695 endDate: Infinity, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1696 forceParse: true, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1697 format: 'mm/dd/yyyy', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1698 keyboardNavigation: true, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1699 language: 'en', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1700 minViewMode: 0, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1701 maxViewMode: 4, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1702 multidate: false, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1703 multidateSeparator: ',', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1704 orientation: "auto", |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1705 rtl: false, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1706 startDate: -Infinity, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1707 startView: 0, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1708 todayBtn: false, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1709 todayHighlight: false, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1710 weekStart: 0, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1711 disableTouchKeyboard: false, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1712 enableOnReadonly: true, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1713 container: 'body', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1714 immediateUpdates: false, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1715 title: '' |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1716 }; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1717 var locale_opts = $.fn.datepicker.locale_opts = [ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1718 'format', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1719 'rtl', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1720 'weekStart' |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1721 ]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1722 $.fn.datepicker.Constructor = Datepicker; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1723 var dates = $.fn.datepicker.dates = { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1724 en: { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1725 days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1726 daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1727 daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1728 months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1729 monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1730 today: "Today", |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1731 clear: "Clear", |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1732 titleFormat: "MM yyyy" |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1733 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1734 }; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1735 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1736 var DPGlobal = { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1737 modes: [ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1738 { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1739 clsName: 'days', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1740 navFnc: 'Month', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1741 navStep: 1 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1742 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1743 { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1744 clsName: 'months', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1745 navFnc: 'FullYear', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1746 navStep: 1 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1747 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1748 { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1749 clsName: 'years', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1750 navFnc: 'FullYear', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1751 navStep: 10 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1752 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1753 { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1754 clsName: 'decades', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1755 navFnc: 'FullDecade', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1756 navStep: 100 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1757 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1758 { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1759 clsName: 'centuries', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1760 navFnc: 'FullCentury', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1761 navStep: 1000 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1762 }], |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1763 isLeapYear: function(year){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1764 return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0)); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1765 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1766 getDaysInMonth: function(year, month){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1767 return [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1768 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1769 validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1770 nonpunctuation: /[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1771 parseFormat: function(format){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1772 if (typeof format.toValue === 'function' && typeof format.toDisplay === 'function') |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1773 return format; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1774 // IE treats \0 as a string end in inputs (truncating the value), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1775 // so it's a bad format delimiter, anyway |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1776 var separators = format.replace(this.validParts, '\0').split('\0'), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1777 parts = format.match(this.validParts); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1778 if (!separators || !separators.length || !parts || parts.length === 0){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1779 throw new Error("Invalid date format."); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1780 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1781 return {separators: separators, parts: parts}; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1782 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1783 parseDate: function(date, format, language, assumeNearby){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1784 if (!date) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1785 return undefined; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1786 if (date instanceof Date) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1787 return date; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1788 if (typeof format === 'string') |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1789 format = DPGlobal.parseFormat(format); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1790 if (format.toValue) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1791 return format.toValue(date, format, language); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1792 var part_re = /([\-+]\d+)([dmwy])/, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1793 parts = date.match(/([\-+]\d+)([dmwy])/g), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1794 fn_map = { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1795 d: 'moveDay', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1796 m: 'moveMonth', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1797 w: 'moveWeek', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1798 y: 'moveYear' |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1799 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1800 dateAliases = { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1801 yesterday: '-1d', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1802 today: '+0d', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1803 tomorrow: '+1d' |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1804 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1805 part, dir, i, fn; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1806 if (/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(date)){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1807 date = new Date(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1808 for (i=0; i < parts.length; i++){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1809 part = part_re.exec(parts[i]); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1810 dir = parseInt(part[1]); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1811 fn = fn_map[part[2]]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1812 date = Datepicker.prototype[fn](date, dir); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1813 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1814 return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1815 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1816 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1817 if (typeof dateAliases[date] !== 'undefined') { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1818 date = dateAliases[date]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1819 parts = date.match(/([\-+]\d+)([dmwy])/g); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1820 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1821 if (/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(date)){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1822 date = new Date(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1823 for (i=0; i < parts.length; i++){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1824 part = part_re.exec(parts[i]); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1825 dir = parseInt(part[1]); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1826 fn = fn_map[part[2]]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1827 date = Datepicker.prototype[fn](date, dir); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1828 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1829 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1830 return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1831 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1832 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1833 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1834 parts = date && date.match(this.nonpunctuation) || []; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1835 date = new Date(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1836 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1837 function applyNearbyYear(year, threshold){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1838 if (threshold === true) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1839 threshold = 10; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1840 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1841 // if year is 2 digits or less, than the user most likely is trying to get a recent century |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1842 if (year < 100){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1843 year += 2000; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1844 // if the new year is more than threshold years in advance, use last century |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1845 if (year > ((new Date()).getFullYear()+threshold)){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1846 year -= 100; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1847 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1848 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1849 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1850 return year; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1851 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1852 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1853 var parsed = {}, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1854 setters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'], |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1855 setters_map = { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1856 yyyy: function(d,v){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1857 return d.setUTCFullYear(assumeNearby ? applyNearbyYear(v, assumeNearby) : v); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1858 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1859 yy: function(d,v){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1860 return d.setUTCFullYear(assumeNearby ? applyNearbyYear(v, assumeNearby) : v); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1861 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1862 m: function(d,v){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1863 if (isNaN(d)) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1864 return d; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1865 v -= 1; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1866 while (v < 0) v += 12; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1867 v %= 12; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1868 d.setUTCMonth(v); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1869 while (d.getUTCMonth() !== v) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1870 d.setUTCDate(d.getUTCDate()-1); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1871 return d; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1872 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1873 d: function(d,v){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1874 return d.setUTCDate(v); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1875 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1876 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1877 val, filtered; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1878 setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m']; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1879 setters_map['dd'] = setters_map['d']; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1880 date = UTCToday(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1881 var fparts = format.parts.slice(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1882 // Remove noop parts |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1883 if (parts.length !== fparts.length){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1884 fparts = $(fparts).filter(function(i,p){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1885 return $.inArray(p, setters_order) !== -1; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1886 }).toArray(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1887 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1888 // Process remainder |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1889 function match_part(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1890 var m = this.slice(0, parts[i].length), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1891 p = parts[i].slice(0, m.length); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1892 return m.toLowerCase() === p.toLowerCase(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1893 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1894 if (parts.length === fparts.length){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1895 var cnt; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1896 for (i=0, cnt = fparts.length; i < cnt; i++){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1897 val = parseInt(parts[i], 10); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1898 part = fparts[i]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1899 if (isNaN(val)){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1900 switch (part){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1901 case 'MM': |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1902 filtered = $(dates[language].months).filter(match_part); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1903 val = $.inArray(filtered[0], dates[language].months) + 1; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1904 break; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1905 case 'M': |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1906 filtered = $(dates[language].monthsShort).filter(match_part); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1907 val = $.inArray(filtered[0], dates[language].monthsShort) + 1; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1908 break; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1909 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1910 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1911 parsed[part] = val; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1912 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1913 var _date, s; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1914 for (i=0; i < setters_order.length; i++){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1915 s = setters_order[i]; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1916 if (s in parsed && !isNaN(parsed[s])){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1917 _date = new Date(date); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1918 setters_map[s](_date, parsed[s]); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1919 if (!isNaN(_date)) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1920 date = _date; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1921 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1922 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1923 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1924 return date; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1925 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1926 formatDate: function(date, format, language){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1927 if (!date) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1928 return ''; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1929 if (typeof format === 'string') |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1930 format = DPGlobal.parseFormat(format); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1931 if (format.toDisplay) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1932 return format.toDisplay(date, format, language); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1933 var val = { |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1934 d: date.getUTCDate(), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1935 D: dates[language].daysShort[date.getUTCDay()], |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1936 DD: dates[language].days[date.getUTCDay()], |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1937 m: date.getUTCMonth() + 1, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1938 M: dates[language].monthsShort[date.getUTCMonth()], |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1939 MM: dates[language].months[date.getUTCMonth()], |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1940 yy: date.getUTCFullYear().toString().substring(2), |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1941 yyyy: date.getUTCFullYear() |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1942 }; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1943 val.dd = (val.d < 10 ? '0' : '') + val.d; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1944 val.mm = (val.m < 10 ? '0' : '') + val.m; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1945 date = []; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1946 var seps = $.extend([], format.separators); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1947 for (var i=0, cnt = format.parts.length; i <= cnt; i++){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1948 if (seps.length) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1949 date.push(seps.shift()); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1950 date.push(val[format.parts[i]]); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1951 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1952 return date.join(''); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1953 }, |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1954 headTemplate: '<thead>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1955 '<tr>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1956 '<th colspan="7" class="datepicker-title"></th>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1957 '</tr>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1958 '<tr>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1959 '<th class="prev">«</th>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1960 '<th colspan="5" class="datepicker-switch"></th>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1961 '<th class="next">»</th>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1962 '</tr>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1963 '</thead>', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1964 contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1965 footTemplate: '<tfoot>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1966 '<tr>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1967 '<th colspan="7" class="today"></th>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1968 '</tr>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1969 '<tr>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1970 '<th colspan="7" class="clear"></th>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1971 '</tr>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1972 '</tfoot>' |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1973 }; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1974 DPGlobal.template = '<div class="datepicker">'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1975 '<div class="datepicker-days">'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1976 '<table class=" table-condensed">'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1977 DPGlobal.headTemplate+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1978 '<tbody></tbody>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1979 DPGlobal.footTemplate+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1980 '</table>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1981 '</div>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1982 '<div class="datepicker-months">'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1983 '<table class="table-condensed">'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1984 DPGlobal.headTemplate+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1985 DPGlobal.contTemplate+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1986 DPGlobal.footTemplate+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1987 '</table>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1988 '</div>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1989 '<div class="datepicker-years">'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1990 '<table class="table-condensed">'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1991 DPGlobal.headTemplate+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1992 DPGlobal.contTemplate+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1993 DPGlobal.footTemplate+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1994 '</table>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1995 '</div>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1996 '<div class="datepicker-decades">'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1997 '<table class="table-condensed">'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1998 DPGlobal.headTemplate+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
1999 DPGlobal.contTemplate+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2000 DPGlobal.footTemplate+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2001 '</table>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2002 '</div>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2003 '<div class="datepicker-centuries">'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2004 '<table class="table-condensed">'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2005 DPGlobal.headTemplate+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2006 DPGlobal.contTemplate+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2007 DPGlobal.footTemplate+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2008 '</table>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2009 '</div>'+ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2010 '</div>'; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2011 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2012 $.fn.datepicker.DPGlobal = DPGlobal; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2013 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2014 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2015 /* DATEPICKER NO CONFLICT |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2016 * =================== */ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2017 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2018 $.fn.datepicker.noConflict = function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2019 $.fn.datepicker = old; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2020 return this; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2021 }; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2022 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2023 /* DATEPICKER VERSION |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2024 * =================== */ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2025 $.fn.datepicker.version = '1.6.0-dev'; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2026 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2027 /* DATEPICKER DATA-API |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2028 * ================== */ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2029 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2030 $(document).on( |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2031 'focus.datepicker.data-api click.datepicker.data-api', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2032 '[data-provide="datepicker"]', |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2033 function(e){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2034 var $this = $(this); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2035 if ($this.data('datepicker')) |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2036 return; |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2037 e.preventDefault(); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2038 // component click requires us to explicitly show it |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2039 datepickerPlugin.call($this, 'show'); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2040 } |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2041 ); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2042 $(function(){ |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2043 datepickerPlugin.call($('[data-provide="datepicker-inline"]')); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2044 }); |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2045 |
f82512502b31
Initial commit for query builder, still need to tailor for ISMI purposes
alistair
parents:
diff
changeset
|
2046 })); |