SnapSvg как повесить эвент перетаскивая мышкой, что бы можно было кликнуть и крутить вокруг оси?
Всем привет, задача такая, мне нужно отрисовать круг разделенный на равные части, на них отрисовать еще кружочки с текстом/картинками - это я сделал, НО надо еще заставить крутиться когда нажал на любой кружочек и крутишь в разные стороны
вот код который я написал
(function(){
var snap = Snap('#svgElem'), r = 200,
i = 0,
cx = 400,
cy = 400, x1, x2, y1, y2, index, angle, prev_color, papers = snap.selectAll()
papers.clear();
var initial_angle = 0, n = 12, actual_angle = 360 / n, rad = Math.PI / 180, sectors, circle, j = n;
for (i = 0; i < n; i++) {
var end_angle = initial_angle + actual_angle;
var sector_path = sector(cx, cy, r+120, initial_angle, end_angle, rad);
var mpx1 = parseFloat(cx + (r+120) * Math.cos(-(initial_angle+actual_angle/2)*rad));
var mpy1 = parseFloat(cy + (r+120) * Math.sin(-(initial_angle+actual_angle/2)*rad));
// Circle
circle = snap.g().append(snap.circle(mpx1, mpy1, 40).attr({ fill: "rgb(236, 240, 241)", stroke: "#000", strokeWidth: 1, cursor: 'pointer'})).append(text_path(mpx1, mpy1, i))
sectors = snap.group(sector_path, circle)
papers.push(sectors);
initial_angle = end_angle;
}
function sector(cx, cy, r, startAngle, endAngle, rad) {
x1 = parseFloat(cx + r * Math.cos(-startAngle * rad));
x2 = parseFloat(cx + r * Math.cos(-endAngle * rad));
y1 = parseFloat(cy + r * Math.sin(-startAngle * rad));
y2 = parseFloat(cy + r * Math.sin(-endAngle * rad));
var flag = (endAngle - startAngle > 180) ? 1 : 0;
var sectorpath = "M "+ cx + " "+ cy + " L"+ x1 +" "+ y1 + " A"+ r +" "+ r +" "+ 0 + " " + flag + " "+ 0 +" "+ x2 +" "+" "+ y2 +"z";
// console.log(sectorpath);
return snap.path(sectorpath).attr({fill: 'none', class: 'sectors', stroke: "black" });
}
function text_path(x, y, i) {
var text = snap.text(x, y, (n-i));
text.attr({'text-anchor': 'middle', 'alignment-baseline': 'middle' })
return text;
}
}())
вот пример кода который используется у меня https://codepen.io/DuneKonaren/pen/wvPrpzZ?editors=1010
код подправить бы добавив возможность кликнуть на любой круг и крутить мышкой вокруг оси в любую сторону
UPDATE
я добавил эвент перетаскивания по кругу, только у меня это работает не вокруг назначенных точек X и Y!
то есть мне надо что бы на месте крутилось, а у меня крутится выходя за пределы по не понятному кругу
вот обновленный пример https://codepen.io/DuneKonaren/pen/wvPrpzZ?editors=1010