Skip to content

Commit

Permalink
more work towards dragging and resizing of gantt blocks
Browse files Browse the repository at this point in the history
  • Loading branch information
thegrubbsian committed Aug 13, 2010
1 parent 3d4c6b4 commit f7be09c
Showing 1 changed file with 16 additions and 5 deletions.
21 changes: 16 additions & 5 deletions jquery.ganttView.js
Expand Up @@ -74,7 +74,7 @@ behavior: {

if (opts.behavior.clickable) { Behavior.bindBlockClick(container, opts.behavior.onClick); }
if (opts.behavior.resizable) { Behavior.bindBlockResize(container, opts.cellWidth, opts.cellHeight, opts.behavior.onResize); }
if (opts.behavior.draggable) { Behavior.bindBlockDrag(container, opts.cellWidth, opts.behavior.onDrag); }
if (opts.behavior.draggable) { Behavior.bindBlockDrag(container, opts.cellWidth, opts.start, opts.behavior.onDrag); }
});
};

Expand Down Expand Up @@ -229,21 +229,21 @@ behavior: {
maxHeight: cellHeight,
stop: function () {
var block = jQuery(this);
var start = block.data("block-data").start;
var days = Math.round(block.outerWidth() / cellWidth);
block.data("block-data").end = start.addDays(days);
Behavior.updateDatesBasedOnWidth(div, block, cellWidth);
// Remove top and left properties to avoid incorrect block positioning,
// set position to relative to keep blocks relative to scrollbar when scrolling
block.css("top", "").css("left", "").css("position", "relative");
if (callback) { callback(block.data("block-data")); }
}
});
},
bindBlockDrag: function (div, cellWidth, callback) {
bindBlockDrag: function (div, cellWidth, startDate, callback) {
jQuery("div.ganttview-block", div).draggable({
axis: "x", grid: [cellWidth, cellWidth],
stop: function () {
var block = jQuery(this);
Behavior.updateDatesBasedOnOffset(div, block, cellWidth, startDate);
Behavior.updateDatesBasedOnWidth(div, block, cellWidth);
// The math here is to transfer the relative left property to the margin-left
// property which avoids a conflict between dragging and resizing
var l = parseInt(block.css("left").replace("px", ""));
Expand All @@ -253,6 +253,17 @@ behavior: {
if (callback) { callback(block.data("block-data")); }
}
});
},
updateDatesBasedOnOffset: function (div, block, cellWidth, startDate) {
var container = jQuery("div.ganttview-slide-container", div);
var offset = block.offset().left - container.offset().left - 3;
var days = Math.round(cellWidth / offset);
block.data("block-data").start = startDate.clone().addDays(days);
},
updateDatesBasedOnWidth: function (div, block, cellWidth) {
var start = block.data("block-data").start;
var days = Math.round(block.outerWidth() / cellWidth);
block.data("block-data").end.addDays(days);
}
};

Expand Down

0 comments on commit f7be09c

Please sign in to comment.