Skip to content

Commit ad85b15

Browse files
committed
Various fixes & cleanup
Included changes: - moves `ktkGetNextDate` out of the global namespace - removes stray alert + accidental click handler corruption - fixes `dateDeserialize` to allow dates before 1970 - updates jshint options
1 parent edb463d commit ad85b15

File tree

1 file changed

+30
-34
lines changed

1 file changed

+30
-34
lines changed

js/jquery.fn.gantt.js

Lines changed: 30 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@
2020
// });
2121

2222
//
23-
/*jshint shadow:true, unused:false, laxbreak:true, evil:true*/
24-
/*globals jQuery, alert*/
23+
/*jshint shadow:true, laxbreak:true, browser:true, jquery:true */
2524
(function ($) {
2625

2726
"use strict";
@@ -175,6 +174,20 @@
175174
}
176175
};
177176

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+
}
178191

179192
// Grid management
180193
// ===============
@@ -672,7 +685,7 @@
672685
default:
673686
range = tools.parseDateRange(element.dateStart, element.dateEnd);
674687

675-
var dateBefore = ktkGetNextDate(range[0], -1);
688+
var dateBefore = ktkGetNextDate(range[0], -1);
676689
var year = dateBefore.getFullYear();
677690
var month = dateBefore.getMonth();
678691
var day = dateBefore;
@@ -1164,9 +1177,6 @@
11641177
navigateTo: function (element, val) {
11651178
var $rightPanel = $(element).find(".fn-gantt .rightPanel");
11661179
var $dataPanel = $rightPanel.find(".dataPanel");
1167-
$dataPanel.click = function () {
1168-
alert(arguments.join(""));
1169-
};
11701180
var rightPanelWidth = $rightPanel.width();
11711181
var dataPanelWidth = $dataPanel.width();
11721182

@@ -1541,27 +1551,27 @@
15411551
var ret = [];
15421552
var i = 0;
15431553
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);
15461556

15471557
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);
15501560
}
1551-
ret[i] = dayStartTime;
1561+
ret[i] = dayStartTime;
15521562

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;
15551565

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
15581568
if (current.getDay() !== ret[i].getDay()) {
15591569
current.setHours(0);
15601570
}
1561-
*/
1571+
*/
15621572

15631573
// GR Fix Begin
1564-
current = ktkGetNextDate(dayStartTime, scaleStep);
1574+
current = ktkGetNextDate(dayStartTime, scaleStep);
15651575
// GR Fix End
15661576

15671577
i++;
@@ -1609,9 +1619,9 @@
16091619

16101620
// Deserialize a date from a string
16111621
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 );
16151625
},
16161626

16171627
// Generate an id for a date
@@ -1740,17 +1750,3 @@
17401750

17411751
};
17421752
})(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

Comments
 (0)