Skip to content

Commit 693c410

Browse files
Reorganize code
1 parent 3d71f85 commit 693c410

File tree

1 file changed

+97
-93
lines changed

1 file changed

+97
-93
lines changed

jquery-ui-timepicker-addon.js

Lines changed: 97 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -1439,102 +1439,10 @@ $.datepicker._optionDatepicker = function(target, name, value) {
14391439
return this._base_optionDatepicker(target, name, value);
14401440
};
14411441

1442-
//#######################################################################################
1443-
// jQuery extend now ignores nulls!
1444-
//#######################################################################################
1445-
function extendRemove(target, props) {
1446-
$.extend(target, props);
1447-
for (var name in props) {
1448-
if (props[name] === null || props[name] === undefined) {
1449-
target[name] = props[name];
1450-
}
1451-
}
1452-
return target;
1453-
}
1454-
1455-
//#######################################################################################
1456-
// Splits datetime string into date ans time substrings.
1457-
// Throws exception when date can't be parsed
1458-
// If only date is present, time substring eill be ''
1459-
//#######################################################################################
1460-
var splitDateTime = function(dateFormat, dateTimeString, dateSettings)
1461-
{
1462-
try {
1463-
var date = $.datepicker._base_parseDate(dateFormat, dateTimeString, dateSettings);
1464-
} catch (err) {
1465-
if (err.indexOf(":") >= 0) {
1466-
// Hack! The error message ends with a colon, a space, and
1467-
// the "extra" characters. We rely on that instead of
1468-
// attempting to perfectly reproduce the parsing algorithm.
1469-
var dateStringLength = dateTimeString.length-(err.length-err.indexOf(':')-2);
1470-
var timeString = dateTimeString.substring(dateStringLength);
1471-
1472-
return [dateTimeString.substring(0, dateStringLength), dateTimeString.substring(dateStringLength)];
1473-
1474-
} else {
1475-
throw err;
1476-
}
1477-
}
1478-
return [dateTimeString, ''];
1479-
};
14801442

14811443
//#######################################################################################
1482-
// Internal function to parse datetime interval
1483-
// Returns: {date: Date, timeObj: Object}, where
1484-
// date - parsed date without time (type Date)
1485-
// timeObj = {hour: , minute: , second: , millisec: } - parsed time. Optional
1444+
// Changes by simonvwade to better handle time range limits
14861445
//#######################################################################################
1487-
var parseDateTimeInternal = function(dateFormat, timeFormat, dateTimeString, dateSettings, timeSettings)
1488-
{
1489-
var date;
1490-
var splitRes = splitDateTime(dateFormat, dateTimeString, dateSettings);
1491-
date = $.datepicker._base_parseDate(dateFormat, splitRes[0], dateSettings);
1492-
if (splitRes[1] !== '')
1493-
{
1494-
var timeString = splitRes[1];
1495-
var separator = timeSettings && timeSettings.separator ? timeSettings.separator : $.timepicker._defaults.separator;
1496-
if ( timeString.indexOf(separator) !== 0) {
1497-
throw 'Missing time separator';
1498-
}
1499-
timeString = timeString.substring(separator.length);
1500-
var parsedTime = $.datepicker.parseTime(timeFormat, timeString, timeSettings);
1501-
if (parsedTime === null) {
1502-
throw 'Wrong time format';
1503-
}
1504-
return {date: date, timeObj: parsedTime};
1505-
} else {
1506-
return {date: date};
1507-
}
1508-
};
1509-
1510-
//#######################################################################################
1511-
// Internal function to set timezone_select to the local timezone
1512-
//#######################################################################################
1513-
var selectLocalTimeZone = function(tp_inst, date)
1514-
{
1515-
if (tp_inst && tp_inst.timezone_select) {
1516-
tp_inst._defaults.useLocalTimezone = true;
1517-
var now = typeof date !== 'undefined' ? date : new Date();
1518-
var tzoffset = timeZoneString(now);
1519-
if (tp_inst._defaults.timezoneIso8601) {
1520-
tzoffset = tzoffset.substring(0, 3) + ':' + tzoffset.substring(3);
1521-
}
1522-
tp_inst.timezone_select.val(tzoffset);
1523-
}
1524-
};
1525-
1526-
// Input: Date Object
1527-
// Output: String with timezone offset, e.g. '+0100'
1528-
var timeZoneString = function(date)
1529-
{
1530-
var off = date.getTimezoneOffset() * -10100 / 60;
1531-
var timezone = (off >= 0 ? '+' : '-') + Math.abs(off).toString().substr(1);
1532-
return timezone;
1533-
};
1534-
1535-
$.timepicker = new Timepicker(); // singleton instance
1536-
$.timepicker.version = "1.0.2";
1537-
15381446
/**
15391447
* Calls `timepicker()` on the `startTime` and `endTime` elements, and configures them to
15401448
* enforce date range limits.
@@ -1639,5 +1547,101 @@ $.timepicker.handleRange = function( method, startTime, endTime, options ) {
16391547
return $([startTime.get(0), endTime.get(0)]);
16401548
};
16411549

1550+
//#######################################################################################
1551+
// jQuery extend now ignores nulls!
1552+
//#######################################################################################
1553+
function extendRemove(target, props) {
1554+
$.extend(target, props);
1555+
for (var name in props) {
1556+
if (props[name] === null || props[name] === undefined) {
1557+
target[name] = props[name];
1558+
}
1559+
}
1560+
return target;
1561+
}
1562+
1563+
//#######################################################################################
1564+
// Splits datetime string into date ans time substrings.
1565+
// Throws exception when date can't be parsed
1566+
// If only date is present, time substring eill be ''
1567+
//#######################################################################################
1568+
var splitDateTime = function(dateFormat, dateTimeString, dateSettings)
1569+
{
1570+
try {
1571+
var date = $.datepicker._base_parseDate(dateFormat, dateTimeString, dateSettings);
1572+
} catch (err) {
1573+
if (err.indexOf(":") >= 0) {
1574+
// Hack! The error message ends with a colon, a space, and
1575+
// the "extra" characters. We rely on that instead of
1576+
// attempting to perfectly reproduce the parsing algorithm.
1577+
var dateStringLength = dateTimeString.length-(err.length-err.indexOf(':')-2);
1578+
var timeString = dateTimeString.substring(dateStringLength);
1579+
1580+
return [dateTimeString.substring(0, dateStringLength), dateTimeString.substring(dateStringLength)];
1581+
1582+
} else {
1583+
throw err;
1584+
}
1585+
}
1586+
return [dateTimeString, ''];
1587+
};
1588+
1589+
//#######################################################################################
1590+
// Internal function to parse datetime interval
1591+
// Returns: {date: Date, timeObj: Object}, where
1592+
// date - parsed date without time (type Date)
1593+
// timeObj = {hour: , minute: , second: , millisec: } - parsed time. Optional
1594+
//#######################################################################################
1595+
var parseDateTimeInternal = function(dateFormat, timeFormat, dateTimeString, dateSettings, timeSettings)
1596+
{
1597+
var date;
1598+
var splitRes = splitDateTime(dateFormat, dateTimeString, dateSettings);
1599+
date = $.datepicker._base_parseDate(dateFormat, splitRes[0], dateSettings);
1600+
if (splitRes[1] !== '')
1601+
{
1602+
var timeString = splitRes[1];
1603+
var separator = timeSettings && timeSettings.separator ? timeSettings.separator : $.timepicker._defaults.separator;
1604+
if ( timeString.indexOf(separator) !== 0) {
1605+
throw 'Missing time separator';
1606+
}
1607+
timeString = timeString.substring(separator.length);
1608+
var parsedTime = $.datepicker.parseTime(timeFormat, timeString, timeSettings);
1609+
if (parsedTime === null) {
1610+
throw 'Wrong time format';
1611+
}
1612+
return {date: date, timeObj: parsedTime};
1613+
} else {
1614+
return {date: date};
1615+
}
1616+
};
1617+
1618+
//#######################################################################################
1619+
// Internal function to set timezone_select to the local timezone
1620+
//#######################################################################################
1621+
var selectLocalTimeZone = function(tp_inst, date)
1622+
{
1623+
if (tp_inst && tp_inst.timezone_select) {
1624+
tp_inst._defaults.useLocalTimezone = true;
1625+
var now = typeof date !== 'undefined' ? date : new Date();
1626+
var tzoffset = timeZoneString(now);
1627+
if (tp_inst._defaults.timezoneIso8601) {
1628+
tzoffset = tzoffset.substring(0, 3) + ':' + tzoffset.substring(3);
1629+
}
1630+
tp_inst.timezone_select.val(tzoffset);
1631+
}
1632+
};
1633+
1634+
// Input: Date Object
1635+
// Output: String with timezone offset, e.g. '+0100'
1636+
var timeZoneString = function(date)
1637+
{
1638+
var off = date.getTimezoneOffset() * -10100 / 60;
1639+
var timezone = (off >= 0 ? '+' : '-') + Math.abs(off).toString().substr(1);
1640+
return timezone;
1641+
};
1642+
1643+
$.timepicker = new Timepicker(); // singleton instance
1644+
$.timepicker.version = "1.0.2";
1645+
16421646

16431647
})(jQuery);

0 commit comments

Comments
 (0)