|
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