【发布时间】:2016-12-02 15:38:46
【问题描述】:
我正在使用 d3 编写甘特图
我有 xScale 和时间刻度(时间)
this.xScale = d3.scaleTime()
.domain([this.startDate,this.endDate])
.range([0,this.getWidth()]);
和 yScale 作为波段规模(资源)
this.yScale = d3.scaleBand()
.domain(resources.map(function(res){
return res.res_num;
}))
.rangeRound([0,this.getHeight()])
.paddingInner(.3)
问题是我需要将任务(SVG Rect)从一个资源拖放到另一个资源
当我拖动时,我使用的是 transfrom,所以它在 SVG 上移动
_onDrag : function(d)
{
var x = d3.event.dx+d3.event.x;
var y = d3.event.dy+d3.event.y;
d3.select(this).raise().attr("transform","translate(" + [x,y] + ")");
},
但在放置时我必须处理如下逻辑:
- 矩形不应该在资源之间,所以需要转换到基于 d3.event.y 的任意波段
- 在 xAxis 中,时间刻度具有反转,但 yScale 没有。这个怎么做?
【问题讨论】:
标签: javascript d3.js svg transform scaletransform