OXIESEC PANEL
- Current Dir:
/
/
home
/
cubot
/
docroot
/
showcase
/
js
/
D3
/
plugins
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
08/14/2022 11:05:22 AM
rwxr-xr-x
📄
Radar.js
8.86 KB
08/14/2022 11:05:21 AM
rw-r--r--
📄
bar.js
17.59 KB
08/14/2022 11:05:19 AM
rw-r--r--
📄
bullet.css
422 bytes
08/14/2022 11:05:19 AM
rw-r--r--
📄
bullet.js
10.65 KB
08/14/2022 11:05:20 AM
rw-r--r--
📄
calendar.js
16.63 KB
08/14/2022 11:05:19 AM
rw-r--r--
📄
calender.css
541 bytes
08/14/2022 11:05:20 AM
rw-r--r--
📄
combo.js
16.74 KB
08/14/2022 11:05:20 AM
rw-r--r--
📄
combo_2.js
17.91 KB
08/14/2022 11:05:19 AM
rw-r--r--
📄
combo_wip.js
16.61 KB
08/14/2022 11:05:18 AM
rw-r--r--
📄
commonFunc.js
25.28 KB
08/14/2022 11:05:20 AM
rw-r--r--
📄
customChart.js
577 bytes
08/14/2022 11:05:20 AM
rw-r--r--
📄
d3Charts.css
2.88 KB
08/14/2022 11:05:19 AM
rw-r--r--
📄
donut.js
5.67 KB
08/14/2022 11:05:19 AM
rw-r--r--
📄
filledAreaPercent.js
17.95 KB
08/14/2022 11:05:19 AM
rw-r--r--
📄
funnel.js
6.03 KB
08/14/2022 11:05:20 AM
rw-r--r--
📄
funnel.js_previous_o4aug17
5.86 KB
08/14/2022 11:05:20 AM
rw-r--r--
📄
gauged.js
15.3 KB
08/14/2022 11:05:20 AM
rw-r--r--
📄
groupbar.js
13.18 KB
08/14/2022 11:05:19 AM
rw-r--r--
📄
groupbar_23Aug2019.js
10.85 KB
08/14/2022 11:05:18 AM
rw-r--r--
📄
heatmap.js
9.77 KB
08/14/2022 11:05:20 AM
rw-r--r--
📄
html2canvas.min.js
161.47 KB
08/14/2022 11:05:19 AM
rw-r--r--
📄
makeJson.js
1.64 KB
08/14/2022 11:05:19 AM
rw-r--r--
📄
makeJsonmulti.js
3.75 KB
08/14/2022 11:05:18 AM
rw-r--r--
📄
multiLine.js
17.24 KB
08/14/2022 11:05:20 AM
rw-r--r--
📄
multipleDonut.js
5.29 KB
08/14/2022 11:05:19 AM
rw-r--r--
📄
pie.js
4.52 KB
08/14/2022 11:05:20 AM
rw-r--r--
📄
radar.js
6.49 KB
08/14/2022 11:05:19 AM
rw-r--r--
📄
saveSvgAsPng.js
14.62 KB
08/14/2022 11:05:21 AM
rw-r--r--
📄
stackedAreaDate.js
17.56 KB
08/14/2022 11:05:20 AM
rw-r--r--
📄
stackedAreaDate_bkup23Nov2020.js
17.56 KB
08/14/2022 11:05:20 AM
rw-r--r--
📄
stackedbar.js
10.72 KB
08/14/2022 11:05:20 AM
rw-r--r--
📄
stackedbar_bkup21Apr2020.js
10.72 KB
08/14/2022 11:05:20 AM
rw-r--r--
📄
stock.js
13.6 KB
08/14/2022 11:05:19 AM
rw-r--r--
📄
sun.js
7.59 KB
08/14/2022 11:05:20 AM
rw-r--r--
📄
sunburst.js
7.13 KB
08/14/2022 11:05:19 AM
rw-r--r--
📄
tableChart.js
11.54 KB
08/14/2022 11:05:21 AM
rw-r--r--
📄
tableChart_07Jan2020.js
6.7 KB
08/14/2022 11:05:19 AM
rw-r--r--
📄
tree.js
7.34 KB
08/14/2022 11:05:19 AM
rw-r--r--
📄
waterfall.js
9.17 KB
08/14/2022 11:05:21 AM
rw-r--r--
📄
zoomTree.js
7.59 KB
08/14/2022 11:05:19 AM
rw-r--r--
Editing: multiLine.js
Close
function drawLineChart(Data, divId, Title, Width, Height, Ndim, Nmeas, MeasFormats,Dimensions, Measures, dispObj,toolTip){ var margin = {top: 20, right: Nmeas*48, bottom: Height/4, left: 65}, width, height, measNum=1; var json=makeJsonFromArrayNew(Data, Ndim, Nmeas, MeasFormats, dispObj); makeParentsJson(json); resolveComputeMeasure(json, dispObj.RD.General.Measures); applyShowHideMeasure(json, dispObj); Nmeas=json.measName.length; d3.select("#"+divId).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 svg = findSvgArea(Nmeas,dispObj,json, Width, Height, divId); height = svg[2] - margin.top-50; width = dispObj.getMultiAxes() ? svg[3]- margin.left - margin.right : svg[3] - margin.left - 30; var x = d3.scale.ordinal().rangeRoundBands([0,width]), y = new Array(Nmeas), k = new Array(Nmeas),//to track path number i=0; for(i=0;i<Nmeas;i++){ y[i] = d3.scale.linear().rangeRound([height, 0]); k[i]=1; } svg[0].attr("transform", "translate(" + margin.left + "," + margin.top + ")"); svg[0].append("defs") .append("filter") .attr("id", "blur") .append("feGaussianBlur") .attr("stdDeviation", 1); var curNode = json; if(dispObj.getShowLegend()){ if(dispObj.getMultiAxes()){ makeLegend(svg,Nmeas,measNum,0,clickRectL,json,k,1, dispObj); } else{ makeLegend(svg,Nmeas,measNum,plotMultiLineChart,clickRectMultiLine,json,k,1, dispObj); } } function clickRectMultiLine(ele,k,svg,n){ k[+ele.id]=!k[+ele.id]; svg[0].selectAll("path").remove(); svg[0].selectAll("g").remove(); svg[0].selectAll("circle").remove(); svg[0].selectAll("text").remove(); svg[0].selectAll("rect").remove(); plotMultiLineChart(divId, svg, curNode, x,y,width,height,json,measNum,k, dispObj, MeasFormats); } plotMultiLineChart(divId, svg, curNode, x,y,width,height,json,measNum, k, dispObj, MeasFormats); } function plotMultiLineChart(divId, svg, curNode, x,y,width,height,json,measNum,k, dispObj, MeasFormats){ var cnc = new Array(); if(curNode.children.length > width/G_MIN_LINE_WIDTH) for(var i=0; i<Math.max(2,Math.floor(width/G_MIN_LINE_WIDTH)); i++) //Atleast 2 children plotted. cnc[i] = curNode.children[i]; else cnc=curNode.children; var i=0, n = y.length, xtickspace, tv, nTicks, maxy, y1;//for single axis if(dispObj.getShowTicks()&&dispObj.getShowTickLabels()){ //xtickspace = findxtickspace(cnc,dispObj); var name; var max = cnc[0].name.length for(i=0;i<cnc.length;i++){ if(cnc[i].name.length > max){ max = cnc[i].name.length; name = cnc[i].name } } xtickspace = max/2 * 4 }else xtickspace = 0; nTicks=getNticks(height, xtickspace); var miny=d3.min(cnc, function(d) { var s=0; for(i=0;i<n;i++){ if(k[i]) if(Math.min(d.size[i])<s) s = Math.min(d.size[i]); } return s; }); var maxy=d3.max(cnc, function(d) { var s=0; for(i=0;i<n;i++){ if(k[i]) if(Math.max(d.size[i])>s) s = Math.max(d.size[i]); } return s; }); y1 = d3.scale.linear() .rangeRound([height-xtickspace, 0]) .domain(getNewMinMax(miny, maxy, nTicks)); var line = new Array(n), path = new Array(n), circ = new Array(n), yaxis = new Array(n), ytext = new Array(n); x.domain(cnc.map(function(d) { return d.name;})); for(i=0;i<n;i++){ if(!k[i]) continue; var minMax=d3.extent(cnc, function(d) { return +d.size[i]; }); if(minMax[0]>0) minMax[0]=0; minMax=getNewMinMax(minMax[0], minMax[1], nTicks); y[i].domain(minMax).rangeRound([height-xtickspace, 0]); } svg[0].append("rect") //border rect .attr("width",width) .attr("height",height-xtickspace) .style("fill",dispObj.getBgColor()) .style("stroke",function(){ return dispObj.getdrawBorder() ? "black" : "none";}) .style("opacity",0.4); svg[0].append("g") .attr("class", "xaxis") .attr("transform", "translate(0" + "," + (height-xtickspace) + ")" ) .call(d3.svg.axis().scale(x).orient("bottom")) .selectAll("text") .text(function(d){ d=d.replace("'","'"); if(dispObj.getxFrom() == "all") //return d.length <= Math.ceil(height/35) ? d : d.substr(0,height/45)+".." ; return d; else if(dispObj.getxFrom() == "first") return d.substr(0,dispObj.getxLength()); else return d.substr(d.length - dispObj.getxLength(),d.length); }) .on("click", function(d,i){ for(i=0;i<cnc.length;i++) if(d==cnc[i].name) { d=cnc[i]; break; } clickMultiLine(divId, d,i, svg, x,y,width,height,json,measNum,k,0,dispObj, MeasFormats)}) .attr("dx", ".1em") .attr("dy", ".50em") .style("text-anchor", function() { return dispObj.getxPos()=="A" ? "end" : "middle";}) .attr("transform", function() { return dispObj.getxPos()=="A" ? "rotate("+(-65)+")" : "rotate(0)";}); //svg[0].select(".xaxis").selectAll("line").attr("transform", "translate(" + (-width/(cnc.length*2) ) + ",0)" ) //svg[0].select(".xaxis").selectAll("line").attr("transform", "translate(" + (-x.rangeBand()/2 - 0.5 ) + ",0)" ) //svg[0].select(".xaxis").selectAll(".tick text").call(wrap,x.rangeBand()/(n+1)).append("title").text(function (d){return d;}); if (x.rangeBand()/(n+1.5) < 40){ svg[0].select(".xaxis").selectAll(".tick text").call(wrap,x.rangeBand()/(n+1)).append("title").text(function (d){return d;}); }else svg[0].select(".xaxis").selectAll(".tick text").call(wrap, x.rangeBand()/(n+10)).append("title").text(function (d){return d;}); if(!dispObj.getMark()) svg[0].selectAll(".xaxis").selectAll(".tick").selectAll("line").remove(); if(dispObj.getShowLabel()) svg[0].append("text") .attr("class","label") .text(cnc[0].dimName) .attr("transform","translate("+width/2+","+(height+lblPad)+")") .style("text-anchor", "middle"); if(dispObj.getMultiAxes()){ tv=getTickValues(y[0].domain()[0], y[0].domain()[1], nTicks); tv = resolveIfTimeValue(tv, MeasFormats[0]); yaxis[0] = svg[0].append("g") .attr("class", "class0") .attr("id",0) .style("fill",dispObj.colorArr[0]) .call(d3.svg.axis().scale(y[0]).orient("left").tickFormat( function(d){return formatSmallScale(d, MeasFormats[0]) }).tickValues(tv)); svg[0].select(".class0").select(".domain").style("stroke",dispObj.colorArr[0]); if(!dispObj.getMark()) svg[0].selectAll(".class0").selectAll(".tick").selectAll("line").remove(); if(dispObj.getShowLabel()) ytext[0] = svg[0].selectAll(".class0") .append("g") .style("fill",dispObj.colorArr[0]) .append("text") .attr("class","label") .attr("transform", "translate(" + (-54) + "," + (height-xtickspace)/2 + ")rotate(-90)") .style("text-anchor", "middle") .text(json.measName[0]); svg[0].append("g").attr("class","ygrid").call(d3.svg.axis().scale(y[0]).orient("left").tickValues(tv).tickSize(-(width),0,0)) if(!(dispObj.getShowGridLines() && dispObj.getShowTicks())) svg[0].select(".ygrid").selectAll("line").style("visibility","hidden"); svg[0].selectAll(".ygrid").selectAll(".tick").selectAll("text").remove(); //For multiple y axis for(i=1;i<n;i++){ if(!k[i]) continue; tv=getTickValues(y[i].domain()[0], y[i].domain()[1], nTicks); tv = resolveIfTimeValue(tv, MeasFormats[i]); yaxis[i] = svg[0].append("g") .attr("class", "class"+i) .attr("transform", "translate(" + (width+60*(i-1)) + ",0)") .attr("id",i) .style("fill",dispObj.colorArr[i%20]) .call(d3.svg.axis().scale(y[i]).orient("right") .tickFormat( function(d) { return formatSmallScale(d, MeasFormats[i]) }) .tickValues(tv)); if(!dispObj.getMark()) svg[0].selectAll(".class"+i).selectAll(".tick").selectAll("line").remove(); svg[0].select(".class"+i).select(".domain").style("stroke",dispObj.colorArr[i%20]); if(dispObj.getShowLabel()) ytext[i] = svg[0].select(".class"+i).append("g") .style("fill",dispObj.colorArr[i%20]) .append("text") .attr("class","label") .attr("transform", "translate(" + (50) + "," + (height-xtickspace)/2 + ")rotate(90)")//26 .style("text-anchor", "middle") .text(json.measName[i]); } } else{ tv=getTickValues(miny, maxy, nTicks); tv = resolveIfTimeValue(tv, MeasFormats[0]); var yaxis = svg[0].append("g") .attr("class", "yaxis") .call(d3.svg.axis().scale(y1) .orient("left") .tickSize(-(width),0,0) .tickFormat( function(d) { return formatSmallScale(d, MeasFormats[0]) }) .ticks(tv.length) .tickValues(tv) ); if(!(dispObj.getShowGridLines() && dispObj.getShowTicks())) svg[0].select(".yaxis").selectAll("line").style("visibility","hidden"); if(dispObj.getShowLabel()) var ytext = svg[0].selectAll(".yaxis") .append("g") .append("text") .attr("class","label") .attr("transform", "translate(" + (-54) + "," + (height-xtickspace)/2 + ")rotate(-90)") .style("text-anchor", "middle") .text(json.measName.length>1?"Measures":json.measName[0]); } if(!dispObj.getShowTicks()) svg[0].selectAll(".tick").remove(); if(!dispObj.getShowTickLabels()){ svg[0].selectAll(".xaxis").selectAll(".tick").selectAll("text").remove(); svg[0].selectAll(".yaxis").selectAll(".tick").selectAll("text").remove(); for(i=0;i<n;i++) svg[0].selectAll(".class"+i).selectAll(".tick").selectAll("text").remove(); } var ylabelpos = new Array(n),w=0; for(i=0;i<n;i++) ylabelpos[i]=new Array(cnc.length); for(i=0;i<n;i++){ if(!k[i]) continue; line[i] = d3.svg.line() .interpolate("linear") .x(function(d) { return x(d.name); }) .y(function(d) { return dispObj.getMultiAxes() ? y[i](d.size[i]) : y1(d.size[i]); }); path[i] = svg[0].append("path") .attr("class", "class"+i) .attr("d", line[i](cnc)) .attr("stroke",dispObj.colorArr[i%20]) .attr("fill","none") .attr("transform","translate("+width/(cnc.length*2) + ",0)") var totalLength = path[i].node().getTotalLength(); path[i].attr("stroke-dasharray", totalLength + " " + totalLength) .attr("stroke-dashoffset", totalLength) .transition() .duration(2000) .ease("linear") .attr("stroke-dashoffset", 0); var l = svg[0].selectAll(".xcirc") .data(cnc) .enter(); circ[i] = l.append("circle") .attr("class", "class"+i) .attr("id",i) .attr("fill", "white") .attr("stroke","white") .attr("r", 2) .attr("transform","translate("+width/(cnc.length*2) + ",0)") .on("mouseover", function(d,i){ showToolTipl(divId, d, n, this, MeasFormats,dispObj); //code for circle placement on axis at selected value /*var ele=+this.id; svg[0].append("circle") .attr("class","tempcirc") .attr("cx", function(){ if(dispObj.getMultiAxes()&&ele!=0) return width+40*(ele-1); else return 0; }) .attr("cy", function(){ if(dispObj.getMultiAxes()) return y[ele](d.size[ele]); else return y1(d.size[ele]); }) .attr("r",2) .attr("stroke","black"); svg[0].append("text") .attr("class","temptext") .attr("x", function(){ if(dispObj.getMultiAxes()&&ele!=0) return width+40*(ele-1); else return 0; }) .attr("y", function(){ if(dispObj.getMultiAxes()) return y[ele](d.size[ele]); else return y1(d.size[ele]); }) .text(d.size[ele]) .attr("text-anchor", function(){ return (dispObj.getMultiAxes()&&ele!=0) ? "end" :"start" }) .attr("stroke","black");*/ }) .on("mouseout", function(d,i){hideToolTip(divId, d, i); svg[0].selectAll(".tempcirc").remove(); svg[0].selectAll(".temptext").remove(); }) .on("click", function(d,i){clickMultiLine(divId, d,i, svg, x,y,width,height,json,measNum,k,0,dispObj, MeasFormats)}) .transition().delay(function (d,i){ return i*30;}) .duration(300) .attr("fill", dispObj.colorArr[i]) .attr("stroke", dispObj.colorArr[i]) .attr("cx", function(d) { return x(d.name) ;}) .attr("cy", function(d) { if(dispObj.getMultiAxes()) return y[i](d.size[i]); else return y1(d.size[i]); }); if(dispObj.getpointLabel()) l.append("text") .attr("class", "class"+i) .attr("x", function(d) { return x(d.name) ;}) .attr("y", function(d) { if(dispObj.getMultiAxes()){ if(i==0){ ylabelpos[i][w++] = y[i](d.size[i])+10; return y[i](d.size[i])+10; } else{ for(var j=0;j<i;j++) if(y[i](d.size[i]) <= y[j](d.size[j])+10 && y[i](d.size[i]) >= y[j](d.size[j])-10) ylabelpos[i][w] = y[i](d.size[i])+12*(j+2); else if(!ylabelpos[i][w]) ylabelpos[i][w] = y[i](d.size[i])+10; w++; return ylabelpos[i][w-1]; } } else{ if(i==0){ ylabelpos[i][w++] = y1(d.size[i])+10; return y1(d.size[i])+10; } else{ for(var j=0;j<i;j++) if(y1(d.size[i]) <= y1(d.size[j])+8 && y1(d.size[i]) >= y1(d.size[j])-8) ylabelpos[i][w] = y1(d.size[i])+10*(j+2);//y1(0)-(y1(d.size[j])+10-y1(d.size[i])) else if(!ylabelpos[i][w]) ylabelpos[i][w] = y1(d.size[i])+12; w++; return ylabelpos[i][w-1]; } } //return y1(d.size[i])-2*(i+1); }) .text(function(d){ return formatData(d.size[i],MeasFormats[i], (dispObj.getpointTooltip()=='A'?0:1)) }) .style("fill",dispObj.colorArr[i]) .attr("transform","translate("+width/(cnc.length*2) + ",-15)"); w=0; //Reset index. if(dispObj.getShadow()) svg[0].append("path") .attr("class", "class"+i) .attr("d", line[i](cnc)) .attr("stroke",dispObj.colorArr[i%20]) .attr("fill","none") .attr("filter", "url(#blur)") .attr("transform","translate("+width/(cnc.length*2) + ",0)") .attr("stroke-dasharray", totalLength + " " + totalLength) .attr("stroke-dashoffset", totalLength) .transition() .duration(2000) .ease("linear") .attr("stroke-dashoffset", 0); var spcValues = dispObj.getThreshold() if(spcValues.spcLines=="true" && !dispObj.getMultiAxes()){ var upper_limit_value = getResolvedThresholdValue(spcValues.upperValue); var lower_limit_value = getResolvedThresholdValue(spcValues.lowerValue); var upper_stroke_value = (spcValues.upperLine != "dash") ? "0,0" : "3,3"; var lower_stroke_value = (spcValues.lowerLine != "dash") ? "0,0" : "3,3"; var upperColor = (spcValues.upperColor == "#") ? "black" : spcValues.upperColor; var lowerColor = (spcValues.lowerColor == "#") ? "black" : spcValues.lowerColor; svg[0].append("line").attr("class", "limit-line").style("stroke-dasharray",upper_stroke_value).style("stroke",upperColor).attr({ x1: 0, y1: y1(upper_limit_value), x2: width, y2: y1(upper_limit_value) }) svg[0].append("text").attr("class","limit-line").attr({ x: width - (spcValues.upperLabel.length*5), y: y1(upper_limit_value) - 10}).text(spcValues.upperLabel); svg[0].append("line").attr("class", "limit-line").style("stroke-dasharray",lower_stroke_value).style("stroke", lowerColor).attr({ x1: 0, y1: y1(lower_limit_value), x2: width, y2: y1(lower_limit_value) }) svg[0].append("text").attr("class","limit-line").attr({ x: width - (spcValues.lowerLabel.length*5), y: y1(lower_limit_value) - 10}).text(spcValues.lowerLabel); } } function clickRectMultiLine(ele,k,svg,n){ alert("Arun"); k[+ele.id]=!k[+ele.id]; svg[0].selectAll("path").remove(); svg[0].selectAll("g").remove(); svg[0].selectAll("circle").remove(); svg[0].selectAll("text").remove(); svg[0].selectAll("rect").remove(); plotMultiLineChart(divId, svg, curNode, x,y,width,height,json,measNum,k, dispObj, MeasFormats); } updateLegendll(divId, svg, curNode, x,y,width,height,json,1,k,clickMultiLine, dispObj, MeasFormats); svg[0].selectAll(".tick").selectAll("line").attr("class","ygridline"); } /*function clickRectL(ele,k,svg,n){ i = ele.id; k[i]=!k[i]; svg[0].selectAll(".class"+i).style("visibility",function(){return k[i] ? "visible" : "hidden"}); } function clickRectText(id,k,svg,n){ k[id]=!k[id]; svg.selectAll(".class"+id).style("visibility",function(){return k[id] ? "visible" : "hidden"}); }*/ var curLogic="next"; function clickMultiLine(divId, d,i, svg, x,y,width,height,json,measNum,k,c, dispObj, MeasFormats){ if((c==0 && d.children)||(c==1 && d.children[0].children)){ //var curNode; svg[0].selectAll("path").remove(); svg[0].selectAll("g").remove(); svg[0].selectAll("circle").remove(); svg[0].selectAll("text").remove(); svg[0].selectAll(".limit-line").remove(); svg[0].selectAll("rect").remove(); if( (c==1 || curLogic=="next") && d.children){ curLogic="next"; curNode=d; } else curNode=d.parent; plotMultiLineChart(divId, svg, curNode, x,y,width,height,json,measNum,k, dispObj, MeasFormats); } else alert("No further dimensions."); }