我正在寻找为人们创建一个迭代图表,将圆圈拖到图表的一部分然后提交。这个圈子会出现在图表上供其他人看到。这背后的想法是确定一个项目对利益相关者最重要的方面。交互式拖动图表
我有一个jsfiddle显示此功能的一部分。我想要“记录”的是圈子移动后的位置,然后在提交后放到某个地方(CSV)。然后我想要在图表上显示CSV显示中的所有圈子。
检查元素(圆圈)将显示其位置。
这是否有意义?有人有主意吗?有一个更好的方法吗?
示例代码通过各种在线教程拼凑起来:
<svg xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
width="970"
height="450">
<script type="text/ecmascript"><![CDATA[
var selectedElement = 0;
var currentX = 0;
var currentY = 0;
var currentMatrix = 0;
function selectElement(evt) {
selectedElement = evt.target;
currentX = evt.clientX;
currentY = evt.clientY;
currentMatrix = selectedElement.getAttributeNS(null, "transform").slice(7,-1).split(' ');
for(var i=0; i<currentMatrix.length; i++) {
currentMatrix[i] = parseFloat(currentMatrix[i]);
}
selectedElement.setAttributeNS(null, "onmousemove", "moveElement(evt)");
selectedElement.setAttributeNS(null, "onmouseout", "deselectElement(evt)");
selectedElement.setAttributeNS(null, "onmouseup", "deselectElement(evt)");
}
function moveElement(evt) {
var dx = evt.clientX - currentX;
var dy = evt.clientY - currentY;
currentMatrix[4] += dx;
currentMatrix[5] += dy;
selectedElement.setAttributeNS(null, "transform", "matrix(" + currentMatrix.join(' ') + ")");
currentX = evt.clientX;
currentY = evt.clientY;
}
function deselectElement(evt) {
if(selectedElement != 0){
selectedElement.removeAttributeNS(null, "onmousemove");
selectedElement.removeAttributeNS(null, "onmouseout");
selectedElement.removeAttributeNS(null, "onmouseup");
selectedElement = 0;
}
}
]]> </script>
<rect x="0.5" y="0.5" width="970" height="399" fill="#ecf0f1" stroke="black"/>
<rect x="0.5" y="0.5" width="970" height="299" fill="none" stroke="black"/>
<rect x="0.5" y="0.5" width="970" height="199" fill="#ecf0f1" stroke="black"/>
<rect x="0.5" y="0.5" width="970" height="99" fill="none" stroke="black"/>
<circle
id ="circleitem"
cx="50"
cy="50"
r="20"
stroke="black"
stroke-width="2"
fill="#c0392b"
transform="matrix(1 0 0 1 0 0)"
onmousedown="selectElement(evt)"/>
</svg>
<input name="position1" class="inputfield" id="position1" readonly="readonly">
<input name="position2" class="inputfield" id="position2" readonly="readonly">
<script type="text/javascript">
position1.value = currentMatrix[4];
position2.value = currentMatrix[5];
</script>
非常感谢
埃里克