|
20 | 20 | // }); |
21 | 21 |
|
22 | 22 | // |
23 | | -/*jshint shadow:true, unused:false, laxbreak:true, evil:true*/ |
24 | | -/*globals jQuery, alert*/ |
| 23 | +/*jshint shadow:true, laxbreak:true, browser:true, jquery:true */ |
25 | 24 | (function ($) { |
26 | 25 |
|
27 | 26 | "use strict"; |
|
175 | 174 | } |
176 | 175 | }; |
177 | 176 |
|
| 177 | + // fixes https://github.com/taitems/jQuery.Gantt/issues/62 |
| 178 | + function ktkGetNextDate(currentDate, scaleStep) { |
| 179 | + for(var minIncrements = 1;; minIncrements++) { |
| 180 | + var nextDate = new Date(currentDate); |
| 181 | + nextDate.setHours(currentDate.getHours() + scaleStep * minIncrements); |
| 182 | + |
| 183 | + if (nextDate.getTime() !== currentDate.getTime()) { |
| 184 | + return nextDate; |
| 185 | + } |
| 186 | + |
| 187 | + // If code reaches here, it's because current didn't really increment (invalid local time) because of daylight-saving adjustments |
| 188 | + // => retry adding 2, 3, 4 hours, and so on (until nextDate > current) |
| 189 | + } |
| 190 | + } |
178 | 191 |
|
179 | 192 | // Grid management |
180 | 193 | // =============== |
|
672 | 685 | default: |
673 | 686 | range = tools.parseDateRange(element.dateStart, element.dateEnd); |
674 | 687 |
|
675 | | - var dateBefore = ktkGetNextDate(range[0], -1); |
| 688 | + var dateBefore = ktkGetNextDate(range[0], -1); |
676 | 689 | var year = dateBefore.getFullYear(); |
677 | 690 | var month = dateBefore.getMonth(); |
678 | 691 | var day = dateBefore; |
|
1164 | 1177 | navigateTo: function (element, val) { |
1165 | 1178 | var $rightPanel = $(element).find(".fn-gantt .rightPanel"); |
1166 | 1179 | var $dataPanel = $rightPanel.find(".dataPanel"); |
1167 | | - $dataPanel.click = function () { |
1168 | | - alert(arguments.join("")); |
1169 | | - }; |
1170 | 1180 | var rightPanelWidth = $rightPanel.width(); |
1171 | 1181 | var dataPanelWidth = $dataPanel.width(); |
1172 | 1182 |
|
|
1541 | 1551 | var ret = []; |
1542 | 1552 | var i = 0; |
1543 | 1553 | for(;;) { |
1544 | | - var dayStartTime = new Date(current); |
1545 | | - dayStartTime.setHours(Math.floor((current.getHours()) / scaleStep) * scaleStep); |
| 1554 | + var dayStartTime = new Date(current); |
| 1555 | + dayStartTime.setHours(Math.floor((current.getHours()) / scaleStep) * scaleStep); |
1546 | 1556 |
|
1547 | 1557 | if (ret[i] && dayStartTime.getDay() !== ret[i].getDay()) { |
1548 | | - // If mark-cursor jumped to next day, make sure it starts at 0 hours |
1549 | | - dayStartTime.setHours(0); |
| 1558 | + // If mark-cursor jumped to next day, make sure it starts at 0 hours |
| 1559 | + dayStartTime.setHours(0); |
1550 | 1560 | } |
1551 | | - ret[i] = dayStartTime; |
| 1561 | + ret[i] = dayStartTime; |
1552 | 1562 |
|
1553 | | - // Note that we use ">" because we want to include the end-time point. |
1554 | | - if(current.getTime() > to.getTime()) break; |
| 1563 | + // Note that we use ">" because we want to include the end-time point. |
| 1564 | + if (current.getTime() > to.getTime()) break; |
1555 | 1565 |
|
1556 | | - /* BUG-2: current is moved backwards producing a dead-lock! (crashes chrome/IE/firefox) |
1557 | | - * SEE: https://github.com/taitems/jQuery.Gantt/issues/62 |
| 1566 | + /* BUG-2: current is moved backwards producing a dead-lock! (crashes chrome/IE/firefox) |
| 1567 | + * SEE: https://github.com/taitems/jQuery.Gantt/issues/62 |
1558 | 1568 | if (current.getDay() !== ret[i].getDay()) { |
1559 | 1569 | current.setHours(0); |
1560 | 1570 | } |
1561 | | - */ |
| 1571 | + */ |
1562 | 1572 |
|
1563 | 1573 | // GR Fix Begin |
1564 | | - current = ktkGetNextDate(dayStartTime, scaleStep); |
| 1574 | + current = ktkGetNextDate(dayStartTime, scaleStep); |
1565 | 1575 | // GR Fix End |
1566 | 1576 |
|
1567 | 1577 | i++; |
|
1609 | 1619 |
|
1610 | 1620 | // Deserialize a date from a string |
1611 | 1621 | dateDeserialize: function (dateStr) { |
1612 | | - var newDate = new Date(); |
1613 | | - newDate.setTime(dateStr.replace(/[^0-9]/g, "")); |
1614 | | - return newDate; |
| 1622 | + var date = dateStr.replace(/\/Date\((.*)\)\//, "$1"); |
| 1623 | + date = $.isNumeric(date) ? parseInt(date, 10) : $.trim(date); |
| 1624 | + return new Date( date ); |
1615 | 1625 | }, |
1616 | 1626 |
|
1617 | 1627 | // Generate an id for a date |
|
1740 | 1750 |
|
1741 | 1751 | }; |
1742 | 1752 | })(jQuery); |
1743 | | - |
1744 | | -function ktkGetNextDate(currentDate, scaleStep) { |
1745 | | - for(var minIncrements = 1;; minIncrements++) { |
1746 | | - var nextDate = new Date(currentDate); |
1747 | | - nextDate.setHours(currentDate.getHours() + scaleStep * minIncrements); |
1748 | | - |
1749 | | - if(nextDate.getTime() != currentDate.getTime()) { |
1750 | | - return nextDate; |
1751 | | - } |
1752 | | - |
1753 | | - // If code reaches here, it's because current didn't really increment (invalid local time) because of daylight-saving adjustments |
1754 | | - // => retry adding 2, 3, 4 hours, and so on (until nextDate > current) |
1755 | | - } |
1756 | | -} |
0 commit comments