function draw(event, d) {
if (event) {
var t = event.transform
env.xt = t.rescaleX(env.xScale);
} else {
env.xt = env.xScale;
}
env.color = getColor()
env.colorScale = d3.scaleOrdinal(colors).domain(env.color)
env.lineHeight = env.graphH / env.nLines * 0.8;
env.svg.select('.x-grid').call(env.xGrid.scale(env.xt));
const tr = env.svg.transition()
.duration(750);
update_group()
env.g.selectAll(".rectangle")
.attr("width", function (d) {
return env.xt(d.finish) - env.xt(d.start) })
.attr("height", env.lineHeight)
.attr("fill", function (d, i) { return env.colorScale(d.label); })
.attr("transform", function (d) {
return "translate(" + env.xt(d.start) + "," + (env.yScale(d.sub) - env.lineHeight / 2) + ")";
})
.attr("id", function (d) { return d.clas; })
.call(d3.drag()
.subject(dragsubject)
.on("start", dragstarted)
.on("drag", dragged)
.on("end", dragended));
env.group.selectAll(".svgholder")
.attr("width", function (d) { return env.xt(d.finish) - env.xt(d.start) })
.attr("height", env.lineHeight);
// .attr("x", 6)
// .attr("y", 9);
env.group.selectAll(".rectband")
.attr("width", function (d) { return env.xt(d.finish) - env.xt(d.start) })
.attr("height", env.lineHeight)
.style("opacity", .5) // set the element opacity
.style("stroke", "black");
// .attr("x", function (d) { return env.xt(d.start) })
// .attr("y", function (d) { return (env.yScale(d.sub) - env.lineHeight / 2) });
env.group.selectAll(".interval")
.attr("x", 6)
.attr("y", 9)
.style("pointer-events", "none")
.style("fill", "black")
.attr("font-size", 11)
.attr("font-family", "Cambria")
.text(function (d) { return (d.description); });
env.group.selectAll(".lefthand")
.attr("idx", function (d) { return d.id; })
.attr("start", function (d) { return d.start; })
.attr("height", env.lineHeight)
.attr("id", "dragleft")
.attr("width", 2)
.attr("fill", "#4A235A")
.attr("fill-opacity", 1)
.attr("cursor", "ew-resize")
// .attr("x", function (d) { return env.xt(d.start) })
// .attr("y", function (d) { return (env.yScale(d.sub) - env.lineHeight / 2) })
.call(d3.drag()
.subject(dragsubjectl)
.on("start", dragstartedl)
.on("drag", draggedl)
.on("end", dragendedl));
env.group.selectAll(".righthand")
.attr("x", function (d) { return env.xt(d.finish) - env.xt(d.start) - 2 })
.attr("idx", function (d) { return d.id; })
.attr("start", function (d) { return d.start; })
.attr("height", env.lineHeight)
.attr("id", "dragright")
.attr("width", 2)
.attr("fill", "#4A235A")
.attr("fill-opacity", 1)
.attr("cursor", "ew-resize")
.call(d3.drag()
.subject(dragsubjectr)
.on("start", dragstartedr)
.on("drag", draggedr)
.on("end", dragendedr));
}