@@ -28,84 +28,6 @@ if ($.ui.timepicker.version) {
28
28
29
29
$ . extend ( $ . ui , { timepicker : { version : "1.0.1" } } ) ;
30
30
31
- //#######################################################################################
32
- // Return regexp to parse possible am/pm time postfixes.
33
- // amNames, pmNames - arrays of strings
34
- //#######################################################################################
35
- var getPatternAmpm = function ( amNames , pmNames ) {
36
- var markers = [ ] ;
37
- if ( amNames )
38
- $ . merge ( markers , amNames ) ;
39
- if ( pmNames )
40
- $ . merge ( markers , pmNames ) ;
41
- markers = $ . map ( markers , function ( val ) { return val . replace ( / [ . * + ? | ( ) \[ \] { } \\ ] / g, '\\$&' ) ; } ) ;
42
- return '(' + markers . join ( '|' ) + ')?' ;
43
- }
44
-
45
- var getFormatPositions = function ( timeFormat ) {
46
- var finds = timeFormat . toLowerCase ( ) . match ( / ( h { 1 , 2 } | m { 1 , 2 } | s { 1 , 2 } | l { 1 } | t { 1 , 2 } | z ) / g) ,
47
- orders = { h : - 1 , m : - 1 , s : - 1 , l : - 1 , t : - 1 , z : - 1 } ;
48
-
49
- if ( finds )
50
- for ( var i = 0 ; i < finds . length ; i ++ )
51
- if ( orders [ finds [ i ] . toString ( ) . charAt ( 0 ) ] == - 1 )
52
- orders [ finds [ i ] . toString ( ) . charAt ( 0 ) ] = i + 1 ;
53
-
54
- return orders ;
55
- }
56
-
57
- //#######################################################################################
58
- // Splits datetime string into date ans time substrings.
59
- // Throws exception when date can't be parsed
60
- // If only date is present, time substring eill be ''
61
- //#######################################################################################
62
- var splitDateTime = function ( dateFormat , dateTimeString , dateSettings )
63
- {
64
- try {
65
- var date = $ . datepicker . _base_parseDate ( dateFormat , dateTimeString , dateSettings ) ;
66
- } catch ( err ) {
67
- if ( err . indexOf ( ":" ) >= 0 ) {
68
- // Hack! The error message ends with a colon, a space, and
69
- // the "extra" characters. We rely on that instead of
70
- // attempting to perfectly reproduce the parsing algorithm.
71
- var dateStringLength = dateTimeString . length - ( err . length - err . indexOf ( ':' ) - 2 ) ;
72
- var timeString = dateTimeString . substring ( dateStringLength ) ;
73
-
74
- return [ dateTimeString . substring ( 0 , dateStringLength ) , dateTimeString . substring ( dateStringLength ) ]
75
-
76
- } else {
77
- throw err ;
78
- }
79
- }
80
- return [ dateTimeString , '' ] ;
81
- }
82
-
83
- //#######################################################################################
84
- // Internal function to parse datetime interval
85
- // Returns: {date: Date, timeObj: Object}, where
86
- // date is parsed date withowt time (type Date)
87
- // timeObj = {hour: , minute: , second: , millisec: } - parsed time. Can be missed
88
- //#######################################################################################
89
- var parseDateTimeInternal = function ( dateFormat , timeFormat , dateTimeString , dateSettings , timeSettings )
90
- {
91
- var date ;
92
- var splitRes = splitDateTime ( dateFormat , dateTimeString , dateSettings ) ;
93
- date = $ . datepicker . _base_parseDate ( dateFormat , splitRes [ 0 ] , dateSettings ) ;
94
- if ( splitRes [ 1 ] != '' )
95
- {
96
- var timeString = splitRes [ 1 ] ;
97
- var separator = timeSettings && timeSettings . separator ? timeSettings . separator : $ . timepicker . _defaults . separator ;
98
- if ( timeString . indexOf ( separator ) != 0 )
99
- throw 'Missing time separator' ;
100
- timeString = timeString . substring ( separator . length ) ;
101
- var parsedTime = $ . datepicker . parseTime ( timeFormat , timeString , timeSettings ) ;
102
- if ( parsedTime === null )
103
- throw 'Wrong time format' ;
104
- return { date : date , timeObj : parsedTime } ;
105
- }
106
- else
107
- return { date : date } ;
108
- }
109
31
/* Time picker manager.
110
32
Use the singleton instance of this class, $.timepicker, to interact with the time picker.
111
33
Settings for (groups of) time pickers are maintained in an instance object,
@@ -332,21 +254,7 @@ $.extend(Timepicker.prototype, {
332
254
return true ;
333
255
}
334
256
} ,
335
-
336
- //########################################################################
337
- // pattern for standard and localized AM/PM markers
338
- //########################################################################
339
- _getPatternAmpm : function ( ) {
340
- return getPatternAmpm ( this . _defaults . amNames , this . _defaults . pmNames ) ;
341
- } ,
342
-
343
- //########################################################################
344
- // figure out position of time elements.. cause js cant do named captures
345
- //########################################################################
346
- _getFormatPositions : function ( ) {
347
- return getFormatPositions ( this . _defaults . timeFormat ) ;
348
- } ,
349
-
257
+
350
258
//########################################################################
351
259
// generate and inject html for timepicker into ui datepicker
352
260
//########################################################################
@@ -954,6 +862,35 @@ $.datepicker.parseDateTime = function(dateFormat, timeFormat, dateTimeString, da
954
862
}
955
863
956
864
$ . datepicker . parseTime = function ( timeFormat , timeString , options ) {
865
+
866
+ //########################################################################
867
+ // pattern for standard and localized AM/PM markers
868
+ //########################################################################
869
+ var getPatternAmpm = function ( amNames , pmNames ) {
870
+ var markers = [ ] ;
871
+ if ( amNames )
872
+ $ . merge ( markers , amNames ) ;
873
+ if ( pmNames )
874
+ $ . merge ( markers , pmNames ) ;
875
+ markers = $ . map ( markers , function ( val ) { return val . replace ( / [ . * + ? | ( ) \[ \] { } \\ ] / g, '\\$&' ) ; } ) ;
876
+ return '(' + markers . join ( '|' ) + ')?' ;
877
+ }
878
+
879
+ //########################################################################
880
+ // figure out position of time elements.. cause js cant do named captures
881
+ //########################################################################
882
+ var getFormatPositions = function ( timeFormat ) {
883
+ var finds = timeFormat . toLowerCase ( ) . match ( / ( h { 1 , 2 } | m { 1 , 2 } | s { 1 , 2 } | l { 1 } | t { 1 , 2 } | z ) / g) ,
884
+ orders = { h : - 1 , m : - 1 , s : - 1 , l : - 1 , t : - 1 , z : - 1 } ;
885
+
886
+ if ( finds )
887
+ for ( var i = 0 ; i < finds . length ; i ++ )
888
+ if ( orders [ finds [ i ] . toString ( ) . charAt ( 0 ) ] == - 1 )
889
+ orders [ finds [ i ] . toString ( ) . charAt ( 0 ) ] = i + 1 ;
890
+
891
+ return orders ;
892
+ }
893
+
957
894
var o = extendRemove ( extendRemove ( { } , $ . timepicker . _defaults ) , options || { } ) ;
958
895
959
896
var regstr = '^' + timeFormat . toString ( )
@@ -987,7 +924,7 @@ $.datepicker.parseTime = function(timeFormat, timeString, options) {
987
924
if ( ampm == 'AM' && treg [ order . h ] == '12' )
988
925
resTime . hour = 0 ; // 12am = 0 hour
989
926
else if ( ampm == 'PM' && treg [ order . h ] != '12' )
990
- resTime . hour = Number ( treg [ order . h ] ) + 12 ; // 12pm = 12 hour, any other pm = hour + 12
927
+ resTime . hour = parseInt ( treg [ order . h ] , 10 ) + 12 ; // 12pm = 12 hour, any other pm = hour + 12
991
928
else resTime . hour = Number ( treg [ order . h ] ) ;
992
929
}
993
930
@@ -1409,7 +1346,60 @@ function extendRemove(target, props) {
1409
1346
return target ;
1410
1347
} ;
1411
1348
1349
+ //#######################################################################################
1350
+ // Splits datetime string into date ans time substrings.
1351
+ // Throws exception when date can't be parsed
1352
+ // If only date is present, time substring eill be ''
1353
+ //#######################################################################################
1354
+ var splitDateTime = function ( dateFormat , dateTimeString , dateSettings )
1355
+ {
1356
+ try {
1357
+ var date = $ . datepicker . _base_parseDate ( dateFormat , dateTimeString , dateSettings ) ;
1358
+ } catch ( err ) {
1359
+ if ( err . indexOf ( ":" ) >= 0 ) {
1360
+ // Hack! The error message ends with a colon, a space, and
1361
+ // the "extra" characters. We rely on that instead of
1362
+ // attempting to perfectly reproduce the parsing algorithm.
1363
+ var dateStringLength = dateTimeString . length - ( err . length - err . indexOf ( ':' ) - 2 ) ;
1364
+ var timeString = dateTimeString . substring ( dateStringLength ) ;
1365
+
1366
+ return [ dateTimeString . substring ( 0 , dateStringLength ) , dateTimeString . substring ( dateStringLength ) ]
1367
+
1368
+ } else {
1369
+ throw err ;
1370
+ }
1371
+ }
1372
+ return [ dateTimeString , '' ] ;
1373
+ }
1374
+
1375
+ //#######################################################################################
1376
+ // Internal function to parse datetime interval
1377
+ // Returns: {date: Date, timeObj: Object}, where
1378
+ // date - parsed date without time (type Date)
1379
+ // timeObj = {hour: , minute: , second: , millisec: } - parsed time. Optional
1380
+ //#######################################################################################
1381
+ var parseDateTimeInternal = function ( dateFormat , timeFormat , dateTimeString , dateSettings , timeSettings )
1382
+ {
1383
+ var date ;
1384
+ var splitRes = splitDateTime ( dateFormat , dateTimeString , dateSettings ) ;
1385
+ date = $ . datepicker . _base_parseDate ( dateFormat , splitRes [ 0 ] , dateSettings ) ;
1386
+ if ( splitRes [ 1 ] != '' )
1387
+ {
1388
+ var timeString = splitRes [ 1 ] ;
1389
+ var separator = timeSettings && timeSettings . separator ? timeSettings . separator : $ . timepicker . _defaults . separator ;
1390
+ if ( timeString . indexOf ( separator ) != 0 )
1391
+ throw 'Missing time separator' ;
1392
+ timeString = timeString . substring ( separator . length ) ;
1393
+ var parsedTime = $ . datepicker . parseTime ( timeFormat , timeString , timeSettings ) ;
1394
+ if ( parsedTime === null )
1395
+ throw 'Wrong time format' ;
1396
+ return { date : date , timeObj : parsedTime } ;
1397
+ }
1398
+ else
1399
+ return { date : date } ;
1400
+ }
1401
+
1412
1402
$ . timepicker = new Timepicker ( ) ; // singleton instance
1413
1403
$ . timepicker . version = "1.0.1" ;
1414
1404
1415
- } ) ( jQuery ) ;
1405
+ } ) ( jQuery ) ;
0 commit comments