@@ -1535,4 +1535,109 @@ var timeZoneString = function(date)
1535
1535
$ . timepicker = new Timepicker ( ) ; // singleton instance
1536
1536
$ . timepicker . version = "1.0.2" ;
1537
1537
1538
+ /**
1539
+ * Calls `timepicker()` on the `startTime` and `endTime` elements, and configures them to
1540
+ * enforce date range limits.
1541
+ * n.b. The input value must be correctly formatted (reformatting is not supported)
1542
+ * @param Element startTime
1543
+ * @param Element endTime
1544
+ * @param obj options Options for the timepicker() call
1545
+ * @return jQuery
1546
+ */
1547
+ $ . timepicker . timeRange = function ( startTime , endTime , options ) {
1548
+ return $ . timepicker . handleRange ( 'timepicker' , startTime , endTime , options ) ;
1549
+ }
1550
+
1551
+ /**
1552
+ * Calls `datetimepicker` on the `startTime` and `endTime` elements, and configures them to
1553
+ * enforce date range limits.
1554
+ * @param Element startTime
1555
+ * @param Element endTime
1556
+ * @param obj options Options for the `timepicker()` call. Also supports `reformat`,
1557
+ * a boolean value that can be used to reformat the input values to the `dateFormat`.
1558
+ * @param string method Can be used to specify the type of picker to be added
1559
+ * @return jQuery
1560
+ */
1561
+ $ . timepicker . dateTimeRange = function ( startTime , endTime , options ) {
1562
+ $ . timepicker . dateRange ( startTime , endTime , options , 'datetimepicker' ) ;
1563
+ }
1564
+
1565
+ /**
1566
+ * Calls `method` on the `startTime` and `endTime` elements, and configures them to
1567
+ * enforce date range limits.
1568
+ * @param Element startTime
1569
+ * @param Element endTime
1570
+ * @param obj options Options for the `timepicker()` call. Also supports `reformat`,
1571
+ * a boolean value that can be used to reformat the input values to the `dateFormat`.
1572
+ * @param string method Can be used to specify the type of picker to be added
1573
+ * @return jQuery
1574
+ */
1575
+ $ . timepicker . dateRange = function ( startTime , endTime , options , method ) {
1576
+ method = method || 'datepicker' ;
1577
+ $ . timepicker . handleRange ( method , startTime , endTime , options ) ;
1578
+ }
1579
+
1580
+ /**
1581
+ * Calls `method` on the `startTime` and `endTime` elements, and configures them to
1582
+ * enforce date range limits.
1583
+ * @param string method Can be used to specify the type of picker to be added
1584
+ * @param Element startTime
1585
+ * @param Element endTime
1586
+ * @param obj options Options for the `timepicker()` call. Also supports `reformat`,
1587
+ * a boolean value that can be used to reformat the input values to the `dateFormat`.
1588
+ * @return jQuery
1589
+ */
1590
+ $ . timepicker . handleRange = function ( method , startTime , endTime , options ) {
1591
+ $ . fn [ method ] . call ( startTime , $ . extend ( { } , {
1592
+ onClose : function ( dateText , inst ) {
1593
+ checkDates ( this , endTime , dateText ) ;
1594
+ } ,
1595
+ onSelect : function ( selectedDateTime ) {
1596
+ selected ( this , endTime , 'minDate' ) ;
1597
+ }
1598
+ } , options )
1599
+ ) ;
1600
+ $ . fn [ method ] . call ( endTime , $ . extend ( { } , {
1601
+ onClose : function ( dateText , inst ) {
1602
+ checkDates ( this , startTime , dateText ) ;
1603
+ } ,
1604
+ onSelect : function ( selectedDateTime ) {
1605
+ selected ( this , startTime , 'maxDate' ) ;
1606
+ }
1607
+ } , options )
1608
+ ) ;
1609
+ // timepicker doesn't provide access to its 'timeFormat' option,
1610
+ // nor could I get datepicker.formatTime() to behave with times, so I
1611
+ // have disabled reformatting for timepicker
1612
+ if ( method != 'timepicker' && options . reformat ) {
1613
+ $ ( [ startTime , endTime ] ) . each ( function ( ) {
1614
+ var format = $ ( this ) [ method ] . call ( $ ( this ) , 'option' , 'dateFormat' ) ,
1615
+ date = new Date ( $ ( this ) . val ( ) ) ;
1616
+ if ( $ ( this ) . val ( ) && date ) {
1617
+ $ ( this ) . val ( $ . datepicker . formatDate ( format , date ) ) ;
1618
+ }
1619
+ } ) ;
1620
+ }
1621
+ checkDates ( startTime , endTime , startTime . val ( ) ) ;
1622
+ function checkDates ( changed , other , dateText ) {
1623
+ if ( other . val ( ) && ( new Date ( startTime . val ( ) ) > new Date ( endTime . val ( ) ) ) ) {
1624
+ other . val ( dateText ) ;
1625
+ }
1626
+ }
1627
+ selected ( startTime , endTime , 'minDate' ) ;
1628
+ selected ( endTime , startTime , 'maxDate' ) ;
1629
+ function selected ( changed , other , option ) {
1630
+ if ( ! $ ( changed ) . val ( ) ) {
1631
+ return ;
1632
+ }
1633
+ var date = $ ( changed ) [ method ] . call ( $ ( changed ) , 'getDate' ) ;
1634
+ // timepicker doesn't implement 'getDate' and returns a jQuery
1635
+ if ( date . getTime ) {
1636
+ $ ( other ) [ method ] . call ( $ ( other ) , 'option' , option , date ) ;
1637
+ }
1638
+ }
1639
+ return $ ( [ startTime . get ( 0 ) , endTime . get ( 0 ) ] ) ;
1640
+ } ;
1641
+
1642
+
1538
1643
} ) ( jQuery ) ;
0 commit comments