Files
luos/gulliver/js/pmchart/pmCharts.js

2 lines
47 KiB
JavaScript
Raw Permalink Normal View History

2015-07-23 17:43:02 -04:00
function drawAxisX(e,b,c,h){if(!h.graph.axisX.showAxis){return}var i=new GraphDim(h);var a=d3.svg.axis().scale(c).orient("bottom").tickSize(h.graph.axisX.ticks);var g=b.append("g").attr("class","axis").attr("transform","translate(0,"+i.bottom+")").call(a).selectAll("text").style("text-anchor","end").attr("class","x-ticks-label").attr("transform","rotate(-45)");if(h.graph.axisX.showLabel){var f=i.left+i.width/2;var d=i.bottom+55;b.append("text").attr("transform","translate("+f+" ,"+d+")").attr("class","axis-label").style("text-anchor","middle").text(h.graph.axisX.label)}}function drawAxisY(e,c,f,g){if(!g.graph.axisY.showAxis){return}var b=new GraphDim(g);var a=d3.svg.axis().scale(f).orient("left").ticks(g.graph.axisY.ticks);var d=c.append("g").attr("class","axis").attr("transform","translate("+b.top+",0)").call(a).selectAll("text").attr("class","y-ticks-label");if(g.graph.axisY.showLabel){c.append("text").attr("class","axis-label").attr("transform","rotate(-90)").attr("y",0).attr("x",-(b.left+b.height/2)).attr("dy","1.5em").style("text-anchor","end").text(g.graph.axisY.label)}}var BarChart=function(b,d,c,a){this.originalData=b;this.previousDataPoint=c;this.params=d;this.$container=$("#"+this.params.canvas.containerId);this.breadCrumbStack=(a==null)?[]:a;pushToStack(c,this)};BarChart.prototype.drawChart=function(){var a=$("#"+this.params.canvas.containerId);a.empty();$(".tooltipdiv").remove();stretchCanvas(null,this.$container,this.params);this.canvas=createCanvas(this.params.canvas.containerId,this.params.canvas);this.drawBars(this.originalData,this.canvas,this.params);refreshBreadCrumbs(this)};BarChart.prototype.addBarTransition=function(b,c,a){b.attr("stroke-width",4).transition().duration(300).attr("width",c.rangeBand()).attr("y",function(e){return a(e.value)});b.exit().transition().duration(300).ease("exp").attr("width",0).remove()};BarChart.prototype.drawBars=function(g,c,f){var k=createDefaultParamsForGraph(f);var a=createDefaultParamsForLineChart(f.graph);k.graph=a;var n=new GraphDim(f);var o=new ToolTip();var h=this;if(g==null||g.length==0){c.append("text").attr("class","pm-charts-no-draw").attr("y",n.height/2).attr("x",n.left*2+n.width/2).attr("dy","1.5em").style("text-anchor","end").text(f.canvas.noDataText);g=[{value:"0",datalabel:"None"}]}var d=g.map(function(p){return p.datalabel});var i=d3.max(g,function(p){return p.value*1});var m=d3.scale.ordinal().domain(d).rangeRoundBands([n.left,n.right],0.15);var b=d3.scale.linear().domain([0,i]).range([n.bottom,n.top]).nice();var j=c.append("g");var n=new GraphDim(k);drawAxisX(g,j,m,k);drawAxisY(g,j,b,k);drawLinesX(g,j,m,k);drawLinesY(g,j,b,k);var l=j.selectAll("rect").data(g);if(k.graph.allowZoom){addZoomToCanvas(j)}addGradient(j,"gradientForBars");l.enter().append("rect").attr({x:function(q,p){return m(q.datalabel)},y:function(p){return(k.graph.allowTransition)?0:b(p.value)},width:(k.graph.allowTransition)?0:m.rangeBand(),height:function(p){return n.bottom-b(p.value)},fill:"url(#gradientForBars)"}).attr("clip-path","url(#rectClip)").on("mouseover",function(q,p){d3.select(this).attr("fill",h.params.graph.colorPalette[p%h.params.graph.colorPalette.length]);if(f.graph.showTip){o.show(function(){return o.valuesToUse(q)})}}).on("mouseout",function(p){d3.select(this).attr("fill","url(#gradientForBars)");o.hide()});if(k.graph.allowTransition){this.addBarTransition(l,m,b)}if(k.graph.useShadows){addShadow(c,"110%",2);j.selectAll("rect").attr("filter","url(#drop-shadow)")}if(this.params.graph.allowDrillDown){this.addOnClick(g,c);if(this.breadCrumbStack.length>0){var e=j.append("defs").append("svg:clipPath").attr("id","clip").append("svg:rect").attr("id","clip-rect").attr("x","0").attr("y","0").attr("width",50).attr("height",50).transition().duration(2000).attr("width",500).attr("height",500);d3.select("svg g").attr("clip-path","url(#clip)")}}};BarChart.prototype.addOnClick=function(arrayData,canvas){var currObj=this;canvas.selectAll("rect").data(arrayData).on("click",function(pointData){if(pointData.callBack!=null&&pointData.callBack.length!=""){var $container=$(canvas[0]).p