OXIESEC PANEL
- Current Dir:
/
/
home
/
cubot
/
docroot
/
showcase
/
js
/
D3
/
Maps
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
08/14/2022 11:05:22 AM
rwxr-xr-x
📄
ANDHRAPRADESH.txt
109.85 KB
08/14/2022 11:05:17 AM
rw-r--r--
📄
ARUNACHALPRADESH.txt
47.89 KB
08/14/2022 11:05:16 AM
rw-r--r--
📄
ASSAM.txt
56.94 KB
08/14/2022 11:05:17 AM
rw-r--r--
📄
BIHAR.txt
104.76 KB
08/14/2022 11:05:15 AM
rw-r--r--
📄
BRAZIL.txt
638.37 KB
08/14/2022 11:05:17 AM
rw-r--r--
📄
CHHATTISGARH.txt
59.97 KB
08/14/2022 11:05:18 AM
rw-r--r--
📄
Color.txt
328 bytes
08/14/2022 11:05:18 AM
rw-r--r--
📄
DELHI.txt
15.38 KB
08/14/2022 11:05:16 AM
rw-r--r--
📄
GOA.txt
28.09 KB
08/14/2022 11:05:16 AM
rw-r--r--
📄
GUJARAT.txt
152.19 KB
08/14/2022 11:05:18 AM
rw-r--r--
📄
HARYANA.txt
64.8 KB
08/14/2022 11:05:18 AM
rw-r--r--
📄
HIMACHALPRADESH.txt
66.54 KB
08/14/2022 11:05:17 AM
rw-r--r--
📄
INDIA.txt
120.59 KB
08/14/2022 11:05:16 AM
rw-r--r--
📄
Indiabackup.txt
121.13 KB
08/14/2022 11:05:16 AM
rw-r--r--
📄
JAMMUANDKASHMIR.txt
47.18 KB
08/14/2022 11:05:16 AM
rw-r--r--
📄
JHARKHAND.txt
63.87 KB
08/14/2022 11:05:17 AM
rw-r--r--
📄
KARNATAKA.txt
121.79 KB
08/14/2022 11:05:17 AM
rw-r--r--
📄
KERALA.txt
57.68 KB
08/14/2022 11:05:16 AM
rw-r--r--
📄
MADHYAPRADESH.txt
113.69 KB
08/14/2022 11:05:16 AM
rw-r--r--
📄
MAHARASHTRA.txt
120.34 KB
08/14/2022 11:05:17 AM
rw-r--r--
📄
MANIPUR.txt
43.02 KB
08/14/2022 11:05:17 AM
rw-r--r--
📄
MEGHALAYA.txt
21 KB
08/14/2022 11:05:17 AM
rw-r--r--
📄
MIZORAM.txt
26.99 KB
08/14/2022 11:05:16 AM
rw-r--r--
📄
Map.css
78 bytes
08/14/2022 11:05:16 AM
rw-r--r--
📄
NAGALAND.txt
55.35 KB
08/14/2022 11:05:15 AM
rw-r--r--
📄
ODISHA.txt
113.44 KB
08/14/2022 11:05:16 AM
rw-r--r--
📄
PUNJAB.txt
65.36 KB
08/14/2022 11:05:17 AM
rw-r--r--
📄
RAJASTHAN.txt
95 KB
08/14/2022 11:05:18 AM
rw-r--r--
📄
SIKKIM.txt
16.99 KB
08/14/2022 11:05:15 AM
rw-r--r--
📄
TAMILNADU.txt
121.33 KB
08/14/2022 11:05:16 AM
rw-r--r--
📄
TRIPURA.txt
16.46 KB
08/14/2022 11:05:16 AM
rw-r--r--
📄
UTTARAKHAND.txt
58.99 KB
08/14/2022 11:05:18 AM
rw-r--r--
📄
UTTARPRADESH.txt
121.33 KB
08/14/2022 11:05:16 AM
rw-r--r--
📄
WESTBENGAL.txt
65.65 KB
08/14/2022 11:05:18 AM
rw-r--r--
📄
WORLD.txt
553.19 KB
08/14/2022 11:05:18 AM
rw-r--r--
📄
home.png
8.75 KB
08/14/2022 11:05:17 AM
rw-r--r--
📄
plotSvgMAps.js
18.71 KB
08/14/2022 11:05:15 AM
rw-r--r--
📄
plotSvgMaps.js
17.2 KB
08/14/2022 11:05:16 AM
rw-r--r--
Editing: plotSvgMAps.js
Close
/* global variables, one graph Supported in one page*/ var timeOut=0; var tmpJson={}, timeCtr=0; function getGeoChart(authToken, gid, divId, moduleId, column, isFullrep, format, Height, Width, newId){ var reportMetaDataCollection=createReportList(authToken, userId); var reportMetaData=reportMetaDataCollection.getReportById(gid, "Personal"); var displayObj=new displayOptions(); displayObj.RDsetGeneral(); displayObj.RD.General.divId=divId; displayObj.RD.General.authToken=authToken; var newReportObj = new Report(); newReportObj.setheight(Height); newReportObj.setwidth(Width); populateReportFromID(authToken, reportMetaData, plotGeoChart, displayObj, newReportObj); $(".moduleTitle", document.getElementById(moduleId)).html(getAnalyzeLink(gid, reportMetaData.SystemTitle, reportMetaData.SubTitle, reportMetaData.Title)); } function getGeoDimensionPosition(ReportObj){ var metaDataCollection=createItemList(ReportObj.dispObj.RD.General.authToken); var dimsArray=ReportObj.getdimensionIds(); var geoLocationArray=new Array(); var item=""; for(var i=0; i<dimsArray.length; i++){ item=metaDataCollection.getItemById(dimsArray[i]); if(item.DataType.toLowerCase() == 'geo'){ geoLocationArray.push(i); } } return geoLocationArray; } function getMapTypeFromDimName(geoLocationArray, ReportData){ /*if(geoLocationArray.length>0 && ReportData[0][geoLocationArray[0]] == "Circle") return "India-Telecom"; else if(geoLocationArray.length>0 && ReportData[0][geoLocationArray[0]] == "State") return "India-States"; else return "World";*/ var mtype; for(var i=0;i<ReportData[0].length;i++){ if(ReportData[0][i] == "Zone") //return "World"; { mtype= "rajasthan"; break; } else if(ReportData[0][i] == "Country") { mtype= "World"; break; } else if(ReportData[0][i] == "State" || ReportData[0][i].indexOf("State")>0) { mtype = "India"; break; } else ; } return mtype; } function updateChartByValue(ReportData){ } function plotGeoChart(ReportData, ReportObj){ var mapType="World"; var containerId = ReportObj.dispObj.RD.General.divId; var geoLocationArray = getGeoDimensionPosition(ReportObj); var callBack = updateChartByValue(ReportData); if(ReportObj.dispObj.RD.General.callback) callBack=ReportObj.dispObj.RD.General.callback; /*if(ReportObj.getheight()>getMheight()*.7){ $('div#'+containerId).css('height', ReportObj.getheight()); } else{ $('div#'+containerId).css('height', getMheight()*.7); }*/ if(ReportObj.dispObj.RD.General.mapType){ mapType=ReportObj.dispObj.RD.General.mapType; } else{ mapType=getMapTypeFromDimName(geoLocationArray, ReportData); } formatReportData(ReportData, ReportObj.getdimmeta(), ReportObj.getlayout(), ReportObj.gettopn()); ReportObj.setdata(ReportData); addMeasureColumn(ReportObj, ReportObj.dispObj.RD.General.authToken); plotSVGMaps(mapType, containerId, geoLocationArray, ReportData, callBack, ReportObj); } function plotSVGMaps(mapType, containerId, geoLocationArray, ReportData, callBack, ReportObj){ d3.select("#"+containerId).html('<div class="myChart"><div class="svgLegend"></div><div class="tipsy"><div class="tipsy-arrow"></div><div class="tipsy-inner"></div></div></div>'); d3.selectAll(".tipsy").style("display", "none"); var json=makeJsonFromArrayNew(ReportData, ReportObj.dimensions.length, ReportObj.measures.length, ReportObj.formats, ReportObj.dispObj), Width = d3.select("#"+containerId)[0][0].clientWidth, Height = d3.select("#"+containerId)[0][0].clientHeight, URL, mapSvgCode=new Array(), svg=findSvgAreaMap(json.size.length,displayObj,json, Width, Height, containerId), measNum=1, cnc; makeParentsJson(json); var u=0, //up-down l=0, //left-right s=1, //scale y, //y coordinate for slider delta=1; //smallest scale difference of slider. var curpos = [0,0]; var zoom=d3.behavior.zoom() .on("zoom",zoomed); function zoomed(){ if(d3.event.sourceEvent.type=="mousewheel"){ if(d3.event.scale >= 7) s=7; else if(d3.event.scale <1 ) s=1; else if(d3.event.scale>s) s=s+delta; else s=s-delta; mapgraph.selectAll("path").transition().attr("transform","translate("+(-(145)*(s-1)/2+curpos[0])+","+(-svg[2]*(s-1)/2+curpos[1])+"),scale("+(s)+")"); } else{ mapgraph.selectAll("path").attr("transform","translate("+[d3.event.translate[0]+curpos[0], d3.event.translate[1]+curpos[1]]+"),scale("+(s)+")"); curpos = d3.event.translate; } zooming(); } var slide = d3.behavior.drag() .on("dragstart" ,function(){ d3.event.sourceEvent.stopPropagation(); }) .on("drag", function(){ if(d3.event.y >= 102 && d3.event.y <= 192){ y=d3.event.y; d3.select(this).attr("transform","translate(0,"+(d3.event.y-190)+")"); if(y <= 117) s=7; else if(y > 117 && y <= 132) s=6; else if( y > 132 && y <= 147) s=5; else if( y > 147 && y <= 162) s=4; else if( y > 162 && y <= 177) s=3; else if( y>177 && y <190) s=2; else s=1; } svg[0].selectAll("path").attr("transform","translate("+(-(145)*(s-1)/2+l*30)+","+(-svg[2]*(s-1)/2+u*30)+"),scale("+s+")"); }) var colors= ["#dd8125","#ef8b28","#ffa02e","#ffc939","#ffff51","#ffff7f","#ffffdd","#7499e2","#6889cb","#5c79b4","#506a9d","#445a85","#384a6e","#2d3b57"]; //var colors = ["#FF6968","#c7e9b4","#41b6c4","#225ea8","#081d58"]; //["#FF6968","#FFFF33","#45d912"]; var zoompanel = svg[0].append("g").append("svg").attr("width",80).attr("height",svg[2]); zoompanel.style("position","absolute").style("z-index",100); zoompanel.append("g") .append("rect") .on("click",function(){ if(s<7) s=s+delta; mapgraph.selectAll("path").transition().attr("transform","translate("+(-(145)*(s-1)/2+curpos[0])+","+(-svg[2]*(s-1)/2+curpos[1])+"),scale("+(s)+")"); zooming(); }) .attr("width",15) .attr("height",15) .attr("x",27.5) .attr("y",85); zoompanel.append("g") .append("text").text("+") .attr("x",33) .attr("y",95) .on("click",function(){ if(s<7) s=s+delta; mapgraph.selectAll("path").transition().attr("transform","translate("+(-(145)*(s-1)/2+curpos[0])+","+(-svg[2]*(s-1)/2+curpos[1])+"),scale("+(s)+")"); zooming(); }); zoompanel.append("g") .append("rect") .on("click",function(){ if(s>1) s=s-delta; mapgraph.selectAll("path").transition().attr("transform","translate("+(-(145)*(s-1)/2+curpos[0])+","+(-svg[2]*(s-1)/2+curpos[1])+"),scale("+(s)+")"); zooming(); }) .attr("width",15) .attr("height",15) .attr("x",27.5) .attr("y",200); zoompanel.append("g") .append("text") .text("-") .style("font-size","17px") .attr("x",33) .attr("y",210) .on("click",function(){ if(s>1) s=s-delta; mapgraph.selectAll("path").transition().attr("transform","translate("+(-(145)*(s-1)/2+curpos[0])+","+(-svg[2]*(s-1)/2+curpos[1])+"),scale("+(s)+")"); zooming(); }); zoompanel.append("g") .append("rect") .attr("width",5) .attr("height",100) .attr("x",32.5) .attr("y",100); zoompanel.append("g") .append("rect") .attr("class","sliderrect") .attr("width",15) .attr("height",7) .attr("x",27.5) .attr("y",190) .call(slide); var arrowrect = zoompanel.append("g") .attr("class","arrowrect") var uparrow = arrowrect.append("g").attr("class","uparrow"); uparrow.append("rect") .attr("width",20) .attr("height",20) .attr("x",25) .attr("y",0); uparrow.append("text") .attr("x",30) .attr("y",20) .text("^") .style("font-size","17px"); uparrow.on("click",function(){ u++; curpos[1] = curpos[1] + 100; mapgraph.selectAll("path").transition().duration(1000).attr("transform","translate("+(-(145)*(s-1)/2+curpos[0])+","+(-svg[2]*(s-1)/2+curpos[1])+"),scale("+s+")"); }); var leftarrow = arrowrect.append("g").attr("class","leftarrow"); leftarrow.append("rect") .attr("width",20) .attr("height",20) .attr("x",5) .attr("y",20); leftarrow.append("text") .attr("x",10) .attr("y",35) .text("<") .style("font-size","15px"); leftarrow.on("click",function(){ l++; curpos[0] = curpos[0]+150; mapgraph.selectAll("path").transition().duration(1000).attr("transform","translate("+(-(145)*(s-1)/2+curpos[0])+","+(-svg[2]*(s-1)/2+curpos[1])+"),scale("+s+")"); }); var downarrow = arrowrect.append("g").attr("class","downarrow"); downarrow.append("rect") .attr("width",20) .attr("height",20) .attr("x",25) .attr("y",40); downarrow.append("text") .attr("x",32) .attr("y",55) .text("v") .style("font-size","15px"); downarrow.on("click",function(){ u--; curpos[1] = curpos[1] - 100; mapgraph.selectAll("path").transition().duration(1000).attr("transform","translate("+(-(145)*(s-1)/2+curpos[0])+","+(-svg[2]*(s-1)/2+curpos[1])+"),scale("+s+")"); }); var rightarrow = arrowrect.append("g").attr("class","rightarrow"); rightarrow.append("rect") .attr("width",20) .attr("height",20) .attr("x",45) .attr("y",20); rightarrow.append("text") .attr("x",50) .attr("y",35) .text(">") .style("font-size","15px"); rightarrow.on("click",function(){ l--; curpos[0] = curpos[0] - 150; mapgraph.selectAll("path").transition().duration(1000).attr("transform","translate("+(-(145)*(s-1)/2+curpos[0])+","+(-svg[2]*(s-1)/2+curpos[1])+"),scale("+s+")"); }); zoompanel.selectAll("g").style("fill-opacity",0.7).attr("class","zoomPanel"); zoompanel.selectAll("text").style("stroke","none"); zoompanel.selectAll("rect").attr("rx",1).attr("ry",1); zoompanel.append("image") .attr("xlink:href", "/showcase/js/D3/Maps/home.png") .attr("x", 25) .attr("y", 21) .attr("width", "20") .attr("height", "20") .on("click",function(){ l=u=0; s=1; curpos[0]=curpos[1]=0; d3.event.x = d3.event.y = 0; mapgraph.selectAll("path").transition().duration(1000).attr("transform","translate(0,0)"); d3.selectAll("#"+containerId).selectAll(".sliderrect").transition().duration(1000).attr("transform","translate(0,0)"); }); function zooming(){ if(s==1) y = 190; else if(s==2) y = 177; else if(s==3) y = 162; else if(s==4) y = 147; else if(s==5) y = 132; else if(s==6) y = 117; else y = 102; d3.selectAll("#"+containerId).selectAll(".sliderrect").attr("transform","translate(0,"+(y-190)+")"); } var mapgraph=svg[0].append("g"); if(mapType){ if(geoLocationArray[0] == 0){ replotMap(mapType,json); if(displayObj.getShowLegend()) makeLegend(svg, json.size.length, measNum, plotMapmeas, 0, json, 0, 0, displayObj); } else if(geoLocationArray[0] == 1){ timeCtr=0; callFunc(mapType, json); } } else svg[0].html("<center>Data unsuitable for plotting of Map</center>"); function callFunc(mapType, json){ if(timeCtr>=json.children.length){ timeCtr=0; clearTimeout(timeOut); } tmpJson=json.children[timeCtr]; cnc = tmpJson.children; json.mapType=mapType; tmpJson.mapType=mapType; if(timeCtr == 0){ replotMap(mapType,tmpJson); if(displayObj.getShowLegend()){ svg[1].selectAll("circle").remove(); svg[1].selectAll("text").remove(); makeLegend(svg, tmpJson.size.length, measNum, plotMapmeas, 0, tmpJson, 0, 0, displayObj); } var htmlStr="<b>"+json.dimName+"</b> : "; for(var i=0; i<json.children.length; i++){ htmlStr+="<span class="+(i==0?"hSpan":"nSpan")+" id=l_"+i+">"+json.children[i].name+"</span>"; } d3.select("#"+containerId).select(".myChart").select(".svgLegend").html("<div id=trail><a id=pp>Play</a>"+htmlStr+"</div>"); d3.select("#"+containerId).select(".myChart").select(".svgLegend").select("#trail").selectAll("span").on("click", function(){ var num=this.id.split("l_")[1]; timeCtr=num; callFunc(mapType, json); }); d3.select("#"+containerId).select(".myChart").select(".svgLegend").select("#trail").select("#pp").on("click", function(){ if(this.text == "Play"){ d3.select(this).text("Pause"); timeOut=setTimeout( function() {callFunc(mapType, json)}, 2000); } else{ clearTimeout(timeOut); d3.select(this).text("Play"); } }); } else{ plotMapmeas(measNum); d3.select("#"+containerId).select(".myChart").select(".svgLegend").select(".hSpan").attr("class", "nSpan"); d3.select("#"+containerId).select(".myChart").select(".svgLegend").select("#l_"+timeCtr).attr("class", "hSpan"); } if(d3.select("#"+containerId).select(".myChart").select(".svgLegend").select("#trail").select("#pp").text() == "Pause") timeOut=setTimeout( function() {callFunc(mapType, json)}, 2000); timeCtr++; } function plotMapmeas(m){ measNum=m; svg[0].selectAll("path").style("fill","lightyellow"); var mind = d3.min(cnc,function(f){ return +f.size[measNum-1]; }), maxd = d3.max(cnc,function(f){ return +f.size[measNum-1]; }), colorScale = d3.scale.quantile() .domain([Math.min(mind,0), maxd]) .range(colors); for(var i=0;i<cnc.length;i++) //svg[0].selectAll("path"+"#"+cnc[i].name.replace(" ","_")).style("fill",colorScale(cnc[i].size[measNum-1])) svg[0].selectAll("path#"+cnc[i].name.replace(/ /g,"_").replace(/\./g,'').replace(/&/g,'')) .style("fill",colorScale(+cnc[i].size[measNum-1])) .on("click",function(){ for(var j=0;j<cnc.length;j++) if(cnc[j].name.replace(/ /g,"_").replace(/\./g,'')==this.id) break; replotMap(this.id,cnc[j]); }) .on("mouseover", function(){ //clearTimeout(timeOut); for(var j=0;j<cnc.length;j++) if(cnc[j].name.replace(/ /g,"_").replace(/\./g,'')==this.id) break; showToolTips(containerId, cnc[j],measNum,ReportObj.formats) }) .on("mouseout", function(d,i){ //callFunc(mapType, json); hideToolTip(containerId, d, i)}) } function replotMap(mapType,d){ cnc = d.children; if(cnc){ mapType=mapType.replace(" ","").replace("_","").toUpperCase() d.mapType=mapType; if(!(mapSvgCode[mapType])){ URL="/showcase/js/D3/Maps/"+mapType+".txt", mapSvgCode[mapType]=getRequestedData(URL, null, 0, false); } mapgraph.html(mapSvgCode[mapType]); mapgraph.selectAll("#"+mapType+"svg").attr("id",containerId+mapType+"svg"); document.getElementById(containerId+mapType+"svg").height.baseVal.value = svg[2]-2; document.getElementById(containerId+mapType+"svg").width.baseVal.value = svg[3]; mapgraph.selectAll("svg").call(zoom); mapgraph.selectAll("path").transition().attr("transform","translate("+(-(145)*(s-1)/2+curpos[0])+","+(-svg[2]*(s-1)/2+curpos[1])+"),scale("+(s)+")"); plotMapmeas(measNum); //function to change color according to measNum clicked. updateLegendll(containerId, svg, d, 0,0,0,0,json,d.name,0,clickMapUpLeg, displayObj, ReportObj.formats) } else{ cnc=d.parent.children; alert("No further divisions!."); } } function clickMapUpLeg(divId, d,i, svg, x,y,width,height,json,mapType,k,c, dispObj, MeasFormats) { if(geoLocationArray[0] == 1){ timeCtr=0; callFunc(d.mapType, json); } else{ replotMap(d.mapType,d); } } zooming(); } function findSvgAreaMap(n,dispObj,json, Width, Height, divId){ var Width = Width-20, Height = Height-30; var r = dispObj.getNumRows()>n ? n : dispObj.getNumRows(); var height, width = 0, p=0; for(var k=0;Math.floor(k)<=(n-n/r);k=k+n/r){ var t=0; var s=0; for(var i=Math.ceil(k);i<k+n/r;i++){ if(dispObj.getShowLabels()) t = t+json.measName[i].length*6+4; else t=4; if(width<=t+6+(12)*s) width=t+6+(12)*(s+1); s++; } p++; } var legHeight = (p+1)*15; var legWidth = width; var svg,svgL,w,h; if(dispObj.getlegendPlacement()=="outsideGrid" && dispObj.getShowLegend()){ if(dispObj.getLocation()== "w"){ svgL = d3.select("#"+divId).select(".myChart") .append("svg") .attr("width", width = legWidth) .attr("height", height = Height) .append("g") .attr("transform","translate(0,"+ (height - legHeight)/2+")") svg = d3.select("#"+divId).select(".myChart").append("g"); w = Width-legWidth; h = Height; } else if (dispObj.getLocation()== "e"){ svg = d3.select("#"+divId).select(".myChart").append("g"); w = Width-legWidth; h = Height; svgL = d3.select("#"+divId).select(".myChart") .append("svg") .attr("width", width = legWidth) .attr("height", height = Height) .append("g") .attr("transform","translate(0,"+(height - legHeight)/2+")") } else if (dispObj.getLocation()== "n"|| dispObj.getLocation()== "nw"|| dispObj.getLocation()== "ne"){ svgL = d3.select("#"+divId).select(".myChart") .append("svg") .attr("width", width = Width) .attr("height", height = legHeight) .append("g") .attr("transform", function() { if(dispObj.getLocation()== "n") return "translate("+ (Width-legWidth)/2+",0)"; else if(dispObj.getLocation()== "nw") return "translate(0,0)"; else return "translate("+(Width-legWidth)+",0)"; }) svg = d3.select("#"+divId).select(".myChart").append("g"); w = Width; h = Height-legHeight; } else { svg = d3.select("#"+divId).select(".myChart").append("g"); w = Width; h = Height-legHeight; svgL = d3.select("#"+divId).select(".myChart") .append("svg") .attr("width", width = Width) .attr("height", height = legHeight) .append("g") .attr("transform", function() { if(dispObj.getLocation()== "s") return "translate("+ (Width-legWidth)/2+",0)"; else if(dispObj.getLocation()== "sw") return "translate(0,0)"; else return "translate("+(Width-legWidth)+",0)"; }) } } else{ var comSvg = d3.select("#"+divId).select(".myChart"); svg = comSvg.append("g").style("position","absolute"); svgL = comSvg.append("g").append("svg").style("position","absolute").style("z-index",50).attr("width",legWidth).attr("height",legHeight); if(dispObj.getLocation()== "w"){ svgL.style("left",25).style("top",(Height+120-legHeight)/2); } else if (dispObj.getLocation()== "e"){ svgL.style("left",Width-legWidth).style("top",(Height+120-legHeight)/2);//(80+40) } else if (dispObj.getLocation()== "n") svgL.style("left",(Width-legWidth)/2); else if (dispObj.getLocation()== "nw") svgL.style("left",25); else if (dispObj.getLocation()== "ne") svgL.style("left",Width-legWidth); else if (dispObj.getLocation()== "s") svgL.style("left",(Width-legWidth)/2).style("top",Height+80-legHeight); else if(dispObj.getLocation()== "sw") svgL.style("left",25).style("top",Height+80-legHeight); else svgL.style("left",Width-legWidth).style("top",Height+80-legHeight); h = height = Height; w = width = Width; } if(dispObj.getlegendPlacement()=="insideGrid"){ var drag1 = d3.behavior.drag() .on("drag", function() { d3.select(this).attr("transform", "translate(" + [ d3.event.x,d3.event.y ] + ")") d3.select(this)[0][0].attributes[0] = d3.event.x; d3.select(this)[0][0].attributes[1] = d3.event.y; }) .on("dragend",function() { }) svgL.call(drag1); } return [svg,svgL,h,w,height,width]; }