@@ -37,14 +37,16 @@ function Timepicker() {
37
37
timeText : 'Time' ,
38
38
hourText : 'Hour' ,
39
39
minuteText : 'Minute' ,
40
- secondText : 'Second'
40
+ secondText : 'Second' ,
41
+ timezoneText : 'Time Zone'
41
42
} ;
42
43
this . _defaults = { // Global defaults for all the datetime picker instances
43
44
showButtonPanel : true ,
44
45
timeOnly : false ,
45
46
showHour : true ,
46
47
showMinute : true ,
47
48
showSecond : false ,
49
+ showTimezone : false ,
48
50
showTime : true ,
49
51
stepHour : 0.05 ,
50
52
stepMinute : 0.05 ,
@@ -66,7 +68,11 @@ function Timepicker() {
66
68
alwaysSetTime : true ,
67
69
separator : ' ' ,
68
70
altFieldTimeOnly : true ,
69
- showTimepicker : true
71
+ showTimepicker : true ,
72
+ timezoneList : [ "-1100" , "-1000" , "-0900" , "-0800" , "-0700" , "-0600" ,
73
+ "-0500" , "-0400" , "-0300" , "-0200" , "-0100" , "+0000" ,
74
+ "+0100" , "+0200" , "+0300" , "+0400" , "+0500" , "+0600" ,
75
+ "+0700" , "+0800" , "+0900" , "+1000" , "+1100" , "+1200" ]
70
76
} ;
71
77
$ . extend ( this . _defaults , this . regional [ '' ] ) ;
72
78
}
@@ -79,9 +85,11 @@ $.extend(Timepicker.prototype, {
79
85
hour_slider : null ,
80
86
minute_slider : null ,
81
87
second_slider : null ,
88
+ timezone_select : null ,
82
89
hour : 0 ,
83
90
minute : 0 ,
84
91
second : 0 ,
92
+ timezone : '+0000' ,
85
93
hourMinOriginal : null ,
86
94
minuteMinOriginal : null ,
87
95
secondMinOriginal : null ,
@@ -92,6 +100,10 @@ $.extend(Timepicker.prototype, {
92
100
formattedDate : '' ,
93
101
formattedTime : '' ,
94
102
formattedDateTime : '' ,
103
+ timezoneList : [ "-1100" , "-1000" , "-0900" , "-0800" , "-0700" , "-0600" ,
104
+ "-0500" , "-0400" , "-0300" , "-0200" , "-0100" , "+0000" ,
105
+ "+0100" , "+0200" , "+0300" , "+0400" , "+0500" , "+0600" ,
106
+ "+0700" , "+0800" , "+0900" , "+1000" , "+1100" , "+1200" ] ,
95
107
96
108
/* Override the default settings for all instances of the time picker.
97
109
@param settings object - the new settings to use as defaults (anonymous object)
@@ -112,6 +124,7 @@ $.extend(Timepicker.prototype, {
112
124
tp_inst . minute = tp_inst . _defaults . minute ;
113
125
tp_inst . second = tp_inst . _defaults . second ;
114
126
tp_inst . ampm = '' ;
127
+ tp_inst . timezone = tp_inst . _defaults . timezone ;
115
128
tp_inst . $input = $input ;
116
129
117
130
@@ -185,6 +198,7 @@ $.extend(Timepicker.prototype, {
185
198
. replace ( / m { 1 , 2 } / ig, '(\\d?\\d)' )
186
199
. replace ( / s { 1 , 2 } / ig, '(\\d?\\d)' )
187
200
. replace ( / t { 1 , 2 } / ig, '(am|pm|a|p)?' )
201
+ . replace ( / z { 1 } / ig, '((\\+|-)\\d\\d\\d\\d)?' )
188
202
. replace ( / \s / g, '\\s?' ) + '$' ,
189
203
order = this . _getFormatPositions ( ) ,
190
204
treg ;
@@ -197,7 +211,7 @@ $.extend(Timepicker.prototype, {
197
211
var dp_dateFormat = $ . datepicker . _get ( this . inst , 'dateFormat' ) ;
198
212
regstr = '.{' + dp_dateFormat . length + ',}' + this . _defaults . separator + regstr ;
199
213
}
200
-
214
+
201
215
treg = timeString . match ( new RegExp ( regstr , 'i' ) ) ;
202
216
203
217
if ( treg ) {
@@ -216,6 +230,7 @@ $.extend(Timepicker.prototype, {
216
230
217
231
if ( order . m !== - 1 ) this . minute = Number ( treg [ order . m ] ) ;
218
232
if ( order . s !== - 1 ) this . second = Number ( treg [ order . s ] ) ;
233
+ if ( order . z !== - 1 ) this . timezone = treg [ order . z ] ;
219
234
220
235
return true ;
221
236
@@ -227,8 +242,8 @@ $.extend(Timepicker.prototype, {
227
242
// figure out position of time elements.. cause js cant do named captures
228
243
//########################################################################
229
244
_getFormatPositions : function ( ) {
230
- var finds = this . _defaults . timeFormat . toLowerCase ( ) . match ( / ( h { 1 , 2 } | m { 1 , 2 } | s { 1 , 2 } | t { 1 , 2 } ) / g) ,
231
- orders = { h : - 1 , m : - 1 , s : - 1 , t : - 1 } ;
245
+ var finds = this . _defaults . timeFormat . toLowerCase ( ) . match ( / ( h { 1 , 2 } | m { 1 , 2 } | s { 1 , 2 } | t { 1 , 2 } | z ) / g) ,
246
+ orders = { h : - 1 , m : - 1 , s : - 1 , t : - 1 , z : - 1 } ;
232
247
233
248
if ( finds )
234
249
for ( var i = 0 ; i < finds . length ; i ++ )
@@ -328,6 +343,11 @@ $.extend(Timepicker.prototype, {
328
343
'</dd>' ;
329
344
} else html += '<dd class="ui_tpicker_second" id="ui_tpicker_second_' + dp_id + '"' +
330
345
( ( o . showSecond ) ? '' : noDisplay ) + '></dd>' ;
346
+
347
+ html += '<dt class="ui_tpicker_timezone_label" id="ui_tpicker_timezone_label_' + dp_id + '"' +
348
+ ( ( o . showTimezone ) ? '' : noDisplay ) + '>' + o . timezoneText + '</dt>' ;
349
+ html += '<dd class="ui_tpicker_timezone" id="ui_tpicker_timezone_' + dp_id + '"' +
350
+ ( ( o . showTimezone ) ? '' : noDisplay ) + '></dd>' ;
331
351
332
352
html += '</dl></div>' ;
333
353
$tp = $ ( html ) ;
@@ -379,6 +399,20 @@ $.extend(Timepicker.prototype, {
379
399
tp_inst . _onTimeChange ( ) ;
380
400
}
381
401
} ) ;
402
+
403
+
404
+ this . timezone_select = $tp . find ( '#ui_tpicker_timezone_' + dp_id ) . append ( '<select></select>' ) . find ( "select" ) ;
405
+ $ . fn . append . apply ( this . timezone_select ,
406
+ $ . map ( o . timezoneList , function ( val , idx ) {
407
+ return $ ( "<option />" )
408
+ . val ( typeof val == "object" ? val . value : val )
409
+ . text ( typeof val == "object" ? val . label : val ) ;
410
+ } )
411
+ ) ;
412
+ this . timezone_select . val ( this . timezone ) ;
413
+ this . timezone_select . change ( function ( ) {
414
+ tp_inst . _onTimeChange ( ) ;
415
+ } ) ;
382
416
383
417
// Add grid functionality
384
418
if ( o . showHour && o . hourGrid > 0 ) {
@@ -548,8 +582,9 @@ $.extend(Timepicker.prototype, {
548
582
_onTimeChange : function ( ) {
549
583
var hour = ( this . hour_slider ) ? this . hour_slider . slider ( 'value' ) : false ,
550
584
minute = ( this . minute_slider ) ? this . minute_slider . slider ( 'value' ) : false ,
551
- second = ( this . second_slider ) ? this . second_slider . slider ( 'value' ) : false ;
552
-
585
+ second = ( this . second_slider ) ? this . second_slider . slider ( 'value' ) : false ,
586
+ timezone = ( this . timezone_select ) ? this . timezone_select . val ( ) : false
587
+
553
588
if ( hour !== false ) hour = parseInt ( hour , 10 ) ;
554
589
if ( minute !== false ) minute = parseInt ( minute , 10 ) ;
555
590
if ( second !== false ) second = parseInt ( second , 10 ) ;
@@ -558,13 +593,14 @@ $.extend(Timepicker.prototype, {
558
593
559
594
// If the update was done in the input field, the input field should not be updated.
560
595
// If the update was done using the sliders, update the input field.
561
- var hasChanged = ( hour != this . hour || minute != this . minute || second != this . second || ( this . ampm . length > 0 && this . ampm != ampm ) ) ;
596
+ var hasChanged = ( hour != this . hour || minute != this . minute || second != this . second || ( this . ampm . length > 0 && this . ampm != ampm ) || timezone != this . timezone ) ;
562
597
563
598
if ( hasChanged ) {
564
599
565
600
if ( hour !== false ) this . hour = hour ;
566
601
if ( minute !== false ) this . minute = minute ;
567
602
if ( second !== false ) this . second = second ;
603
+ if ( timezone !== false ) this . timezone = timezone ;
568
604
}
569
605
if ( this . _defaults . ampm ) this . ampm = ampm ;
570
606
@@ -579,7 +615,7 @@ $.extend(Timepicker.prototype, {
579
615
//########################################################################
580
616
_formatTime : function ( time , format , ampm ) {
581
617
if ( ampm == undefined ) ampm = this . _defaults . ampm ;
582
- time = time || { hour : this . hour , minute : this . minute , second : this . second , ampm : this . ampm } ;
618
+ time = time || { hour : this . hour , minute : this . minute , second : this . second , ampm : this . ampm , timezone : this . timezone } ;
583
619
var tmptime = format || this . _defaults . timeFormat . toString ( ) ;
584
620
585
621
if ( ampm ) {
@@ -595,15 +631,17 @@ $.extend(Timepicker.prototype, {
595
631
. replace ( / T T / g, time . ampm . toUpperCase ( ) )
596
632
. replace ( / t t / g, time . ampm . toLowerCase ( ) )
597
633
. replace ( / T / g, time . ampm . charAt ( 0 ) . toUpperCase ( ) )
598
- . replace ( / t / g, time . ampm . charAt ( 0 ) . toLowerCase ( ) ) ;
634
+ . replace ( / t / g, time . ampm . charAt ( 0 ) . toLowerCase ( ) )
635
+ . replace ( / z / g, time . timezone ) ;
599
636
} else {
600
637
tmptime = tmptime . toString ( )
601
638
. replace ( / h h / g, ( ( time . hour < 10 ) ? '0' : '' ) + time . hour )
602
639
. replace ( / h / g, time . hour )
603
640
. replace ( / m m / g, ( ( time . minute < 10 ) ? '0' : '' ) + time . minute )
604
641
. replace ( / m / g, time . minute )
605
642
. replace ( / s s / g, ( ( time . second < 10 ) ? '0' : '' ) + time . second )
606
- . replace ( / s / g, time . second ) ;
643
+ . replace ( / s / g, time . second )
644
+ . replace ( / z / g, time . timezone ) ;
607
645
tmptime = $ . trim ( tmptime . replace ( / t / gi, '' ) ) ;
608
646
}
609
647
0 commit comments