Quite good looking graph derived from d3.js http://c3js.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3 lines
70 KiB

!function(a){"use strict";function b(a){return a||0===a}function c(a){return"undefined"==typeof a}function d(a){return"undefined"!=typeof a}var e={version:"0.1.34"},f={target:"c3-target",chart:"c3-chart",chartLine:"c3-chart-line",chartLines:"c3-chart-lines",chartBar:"c3-chart-bar",chartBars:"c3-chart-bars",chartText:"c3-chart-text",chartTexts:"c3-chart-texts",chartArc:"c3-chart-arc",chartArcs:"c3-chart-arcs",chartArcsTitle:"c3-chart-arcs-title",selectedCircle:"c3-selected-circle",selectedCircles:"c3-selected-circles",eventRect:"c3-event-rect",eventRects:"c3-event-rects",eventRectsSingle:"c3-event-rects-single",eventRectsMultiple:"c3-event-rects-multiple",zoomRect:"c3-zoom-rect",brush:"c3-brush",focused:"c3-focused",region:"c3-region",regions:"c3-regions",tooltip:"c3-tooltip",tooltipName:"c3-tooltip-name",shape:"c3-shape",shapes:"c3-shapes",line:"c3-line",lines:"c3-lines",bar:"c3-bar",bars:"c3-bars",circle:"c3-circle",circles:"c3-circles",arc:"c3-arc",arcs:"c3-arcs",area:"c3-area",areas:"c3-areas",text:"c3-text",texts:"c3-texts",grid:"c3-grid",xgrid:"c3-xgrid",xgrids:"c3-xgrids",xgridLine:"c3-xgrid-line",xgridLines:"c3-xgrid-lines",xgridFocus:"c3-xgrid-focus",ygrid:"c3-ygrid",ygrids:"c3-ygrids",ygridLine:"c3-ygrid-line",ygridLines:"c3-ygrid-lines",axisX:"c3-axis-x",axisXLabel:"c3-axis-x-label",axisY:"c3-axis-y",axisYLabel:"c3-axis-y-label",axisY2:"c3-axis-y2",axisY2Label:"c3-axis-y2-label",legendItem:"c3-legend-item",legendItemEvent:"c3-legend-item-event",legendItemTile:"c3-legend-item-tile",legendItemHidden:"c3-legend-item-hidden",legendItemFocused:"c3-legend-item-focused",dragarea:"c3-dragarea",EXPANDED:"_expanded_",SELECTED:"_selected_",INCLUDED:"_included_"};e.generate=function(e){function g(a,b){if(!(a in e))throw Error(b)}function h(a,b){var c,d,f,g=e;for(c=0;c<a.length;c++){if("object"==typeof g&&!(a[c]in g))return b;if(d=c===a.length-1,f=g[a[c]],!d&&"object"!=typeof f)return b;g=f}return g}function i(a){return"url("+document.URL.split("#")[0]+"#"+a+")"}function j(a,b){var c,d,e;b&&b.axisX?c=b.axisX:(c=oj.select("."+f.axisX),a&&(c=c.transition())),b&&b.axisY?d=b.axisY:(d=oj.select("."+f.axisY),a&&(d=d.transition())),b&&b.axisY2?e=b.axisY2:(e=oj.select("."+f.axisY2),a&&(e=e.transition())),oj.attr("transform",$i.main),c.attr("transform",$i.x),d.attr("transform",$i.y),e.attr("transform",$i.y2),oj.select("."+f.chartArcs).attr("transform",$i.arc)}function k(a,b){var c;b&&b.axisSubX?c=b.axisSubX:(c=pj.select("."+f.axisX),a&&(c=c.transition())),pj.attr("transform",$i.context),c.attr("transform",$i.subx)}function l(a){(a?qj.transition():qj).attr("transform",$i.legend)}function m(a,b){j(a,b),ah&&k(a,b),l(a)}function n(){var a=Q(),b=P(),c=_i?0:a,d=jh?0:w("x"),e=ah?bh+d:0;ag=r(),bg=s(),jh?(Vf={top:w("y2"),right:u(),bottom:w("y")+c,left:e+t()},Wf={top:Vf.top,right:0/0,bottom:20+c,left:ej}):(Vf={top:4,right:u(),bottom:d+e+c,left:t()},Wf={top:bg-e-c,right:0/0,bottom:d+c,left:Vf.left}),Xf={top:_i?0:bg-a,right:0/0,bottom:0,left:_i?ag-b:0},Yf=ag-Vf.left-Vf.right,$f=bg-Vf.top-Vf.bottom,0>Yf&&(Yf=0),0>$f&&($f=0),Zf=jh?Vf.left-ej-fj:Yf,_f=jh?$f:bg-Wf.top-Wf.bottom,0>Zf&&(Zf=0),0>_f&&(_f=0),p(),_i&&he(Gf.data.targets)&&(Xf.left=Yf/2+dg)}function o(){oj.select("line."+f.xgridFocus).attr("x1",jh?0:-10).attr("x2",jh?Math.ceil(Yf):-10).attr("y1",jh?-10:Math.ceil(Vf.top)).attr("y2",jh?-10:Math.ceil($f))}function p(){dg=$f/2,cg=.95*dg,eg=ge(Gf.data.targets)?.6*cg:0}function q(){var a=jh?f.axisX:f.axisY,b=oj.select("."+a).node(),c=b?b.getBoundingClientRect():{right:0},d=Ff.select(If).node().getBoundingClientRect(),e=c.right-d.left-t();return e>0?e:0}function r(){return Jf?Jf:x()}function s(){var a=Kf?Kf:y();return a>0?a:320}function t(){return he(Gf.data.targets)?0:Lf?Lf:jh?kh?v("x"):1:!Ch||Hh?1:v("y")}function u(){var a=1;return he(Gf.data.targets)?0:Mf?Mf:_i?P()+(Lh&&!jh?v("y2"):a):Lh?Qh||jh?a:v("y2"):a}function v(a){var b=jb(a);return b.isInner?20+Cb(a):40+Cb(a)}function w(a){return"x"!==a||kh?"x"===a&&zh?zh:"y"!==a||Ch?"y2"!==a||Lh?(jb(a).isInner?30:40)+("y2"===a?-10:0):gj:dh&&!_i?10:1:0}function x(){return+Ff.select(If).style("width").r
}rj.html(yi(Gf.data.targets.map(function(a){return pc(a.values[Ai])}),$(),zd(he(Gf.data.targets)),Ri)),rj.style("top",Bi.top).style("left",Bi.left).style("display","block")}null==a.onresize&&(a.onresize=nf()),a.onresize.add&&(a.onresize.add(Sf),a.onresize.add(function(){pf({withLegend:!0,withTransition:!1,withTransitionForTransform:!1})}),a.onresize.add(Tf))}function cf(a){a.append("rect").attr("class",id).style("cursor",Rg&&Sg?"pointer":null).on("mouseover",function(a,b){if(!Mi&&!he(Gf.data.targets)){var c,d,e=Gf.data.targets.map(function(a){return pc(a.values[b])});if(Object.keys(Fg).length>0){d=[];for(var g in Fg)for(c=0;c<e.length;c++)if(e[c].id===g){d.push(e[c]),e.shift(c);break}e=d.concat(e)}bi&&Se(b),Ve(b),oj.selectAll("."+f.shape+"-"+b).each(function(a){Wg(a)})}}).on("mouseout",function(a,b){he(Gf.data.targets)||(Vd(),Td(),Te(b),We(),oj.selectAll("."+f.shape+"-"+b).each(function(a){Xg(a)}))}).on("mousemove",function(a,b){var c;Mi||he(Gf.data.targets)||(c=Ic(Gf.data.targets).map(function(a){return pc(a.values[b])}),Sd(c,Ff.mouse(this)),Ud(c),Rg&&(Sg||oj.selectAll("."+f.shape+"-"+b).filter(function(a){return Tg(a)}).each(function(){var a=Ff.select(this).classed(f.EXPANDED,!0);"circle"===this.nodeName&&a.attr("r",Pe),mj.select("."+f.eventRect+"-"+b).style("cursor",null)}).filter(function(a){return"circle"===this.nodeName?xe(this,Qe(a)):"path"===this.nodeName?ye(this):void 0}).each(function(){var a=Ff.select(this);a.classed(f.EXPANDED)||(a.classed(f.EXPANDED,!0),"circle"===this.nodeName&&a.attr("r",Qe)),mj.select("."+f.eventRect+"-"+b).style("cursor","pointer")})))}).on("click",function(a,b){return he(Gf.data.targets)?void 0:Ni?void(Ni=!1):void oj.selectAll("."+f.shape+"-"+b).each(function(a){ef(this,a,b)})}).call(Ff.behavior.drag().origin(Object).on("drag",function(){ff(Ff.mouse(this))}).on("dragstart",function(){gf(Ff.mouse(this))}).on("dragend",function(){hf()})).call(lj).on("dblclick.zoom",null)}function df(a){a.append("rect").attr("x",0).attr("y",0).attr("width",Yf).attr("height",$f).attr("class",f.eventRect).on("mouseout",function(){he(Gf.data.targets)||(Vd(),Td(),Te())}).on("mousemove",function(){var a,b,c,d,e=Ic(Gf.data.targets);Mi||he(e)||(a=Ff.mouse(this),b=Ld(e,a),b&&(c=le(b)?[b]:Nd(e,b.x),d=c.map(function(a){return pc(a)}),Sd(d,a),bi&&(Te(),Se(b.index,b.id)),Ud(d),De(b,a)<100?(mj.select("."+f.eventRect).style("cursor","pointer"),Oi||(Wg(b),Oi=!0)):(mj.select("."+f.eventRect).style("cursor",null),Xg(b),Oi=!1)))}).on("click",function(){var a,b,c=Ic(Gf.data.targets);he(c)||(a=Ff.mouse(this),b=Ld(c,a),b&&De(b,a)<100&&oj.select("."+f.circles+"-"+od(b.id)).select("."+f.circle+"-"+b.index).each(function(){ef(this,b,b.index)}))}).call(Ff.behavior.drag().origin(Object).on("drag",function(){ff(Ff.mouse(this))}).on("dragstart",function(){gf(Ff.mouse(this))}).on("dragend",function(){hf()})).call(lj).on("dblclick.zoom",null)}function ef(a,b,c){var d,e,g=Ff.select(a),h=g.classed(f.SELECTED);"circle"===a.nodeName?(d=xe(a,1.5*Qe(b)),e=He):"path"===a.nodeName&&(g.classed(f.bar)?(d=ye(a),e=Ke):(d=!0,e=Le)),(Sg||d)&&(Rg&&Tg(b)&&(Ug||oj.selectAll("."+f.shapes+(Sg?od(b.id):"")).selectAll("."+f.shape).each(function(a,b){var c=Ff.select(this);c.classed(f.SELECTED)&&e(!1,c.classed(f.SELECTED,!1),a,b)}),g.classed(f.SELECTED,!h),e(!h,g,b,c)),Vg(b,a))}function ff(a){var b,c,d,e,g,h,i,j;he(Gf.data.targets)||Rg&&(!Nf||lj.altDomain)&&Ug&&(b=Li[0],c=Li[1],d=a[0],e=a[1],g=Math.min(b,d),h=Math.max(b,d),i=Sg?Vf.top:Math.min(c,e),j=Sg?$f:Math.max(c,e),oj.select("."+f.dragarea).attr("x",g).attr("y",i).attr("width",h-g).attr("height",j-i),oj.selectAll("."+f.shapes).selectAll("."+f.shape).filter(function(a){return Tg(a)}).each(function(a,b){var c,d,e,k,l,m,n=Ff.select(this),o=n.classed(f.SELECTED),p=n.classed(f.INCLUDED),q=!1;"circle"===this.nodeName?(c=1*n.attr("cx"),d=1*n.attr("cy"),l=He,q=c>g&&h>c&&d>i&&j>d):"path"===this.nodeName&&(m=Od(this),c=m.x,d=m.y,e=m.width,k=m.height,l=Ke,q=!(c>h||g>c+e||d>j||i>d+k)),q^p&&(n.classed(f.INCLUDED,!p),n.classed(f.SELECTED,!o),l(!o,n,a,b))}))}function gf(a){he(Gf.data.targets)||Rg&&(Li=a,oj.select("."
}):sf(a))},Gf.unload=function(a,b){tf(Dc(a),function(){kf({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0}),"function"==typeof b&&b()})},Gf.selected=function(a){return Ff.merge(oj.selectAll("."+f.shapes+od(a)).selectAll("."+f.shape).filter(function(){return Ff.select(this).classed(f.SELECTED)}).map(function(a){return a.map(function(a){var b=a.__data__;return b.data?b.data:b})}))},Gf.select=function(a,b,c){Rg&&oj.selectAll("."+f.shapes).selectAll("."+f.shape).each(function(e,g){var h=Ff.select(this),i=e.data?e.data.id:e.id,j=Me(this),k=Sg||!a||a.indexOf(i)>=0,l=!b||b.indexOf(g)>=0,m=h.classed(f.SELECTED);k&&l?Tg(e)&&!m&&j(!0,h.classed(f.SELECTED,!0),e,g):d(c)&&c&&m&&j(!1,h.classed(f.SELECTED,!1),e,g)})},Gf.unselect=function(a,b){Rg&&oj.selectAll("."+f.shapes).selectAll("."+f.shape).each(function(c,d){var e=Ff.select(this),g=c.data?c.data.id:c.id,h=Me(this),i=Sg||!a||a.indexOf(g)>=0,j=!b||b.indexOf(d)>=0,k=e.classed(f.SELECTED);i&&j&&Tg(c)&&k&&h(!1,e.classed(f.SELECTED,!1),c,d)})},Gf.toLine=function(a){Ef(a,"line")},Gf.toSpline=function(a){Ef(a,"spline")},Gf.toBar=function(a){Ef(a,"bar")},Gf.toScatter=function(a){Ef(a,"scatter")},Gf.toArea=function(a){Ef(a,"area")},Gf.toAreaSpline=function(a){Ef(a,"area-spline")},Gf.toPie=function(a){Ef(a,"pie",{withTransform:!0})},Gf.toDonut=function(a){Ef(a,"donut",{withTransform:!0})},Gf.groups=function(a){return c(a)?Hg:(Hg=a,kf(),Hg)},Gf.xgrids=function(a){return a?(Wh=a,kf(),Wh):Wh},Gf.xgrids.add=function(a){return a?Gf.xgrids(Wh.concat(a)):void 0},Gf.xgrids.remove=function(a){var b=Df(a);return Gf.xgrids(Wh.filter(b))},Gf.ygrids=function(a){return a?(Yh=a,kf(),Yh):Yh},Gf.ygrids.add=function(a){return a?Gf.ygrids(Yh.concat(a)):void 0},Gf.ygrids.remove=function(a){var b=Df(a);return Gf.ygrids(Yh.filter(b))},Gf.regions=function(a){return c(a)?ui:(ui=a,kf(),ui)},Gf.regions.add=function(a){return c(a)?ui:(ui=ui.concat(a),kf(),ui)},Gf.regions.remove=function(a,c){var e=[].concat(a);return c=d(c)?c:{},e.forEach(function(a){var d=b(c.duration)?c.duration:0;mj.selectAll("."+a).transition().duration(d).style("fill-opacity",0).remove(),ui=ui.filter(function(b){return b.classes.indexOf(a)<0})}),ui},Gf.data.get=function(a){var b=Gf.data.getAsTarget(a);return d(b)?b.values.map(function(a){return a.value}):void 0},Gf.data.getAsTarget=function(a){var b=Fc(function(b){return b.id===a});return b.length>0?b[0]:void 0},Gf.data.names=function(a){return arguments.length?(Object.keys(a).forEach(function(b){Fg[b]=a[b]}),Af(Cc(Gf.data.targets),{withTransition:!0}),Fg):Fg},Gf.x=function(a){return arguments.length&&(qc(Gf.data.targets,a),kf({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),Gf.data.xs},Gf.xs=function(a){return arguments.length&&(rc(Gf.data.targets,a),kf({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),Gf.data.xs},Gf.axis.labels=function(a){arguments.length&&(Object.keys(a).forEach(function(b){bb(b,a[b])}),Db())},Gf.axis.max=function(a){arguments.length&&("object"==typeof a?(b(a.y)&&(Dh=+a.y),b(a.y2)&&(Mh=+a.y2)):Dh=Mh=+a,kf())},Gf.axis.min=function(a){arguments.length&&("object"==typeof a?(b(a.y)&&(Eh=+a.y),b(a.y2)&&(Nh=+a.y2)):Eh=Nh=+a,kf())},Gf.axis.range=function(a){arguments.length&&("undefined"!=typeof a.max&&Gf.axis.max(a.max),"undefined"!=typeof a.min&&Gf.axis.min(a.min))},Gf.legend.show=function(a){yf(Dc(a)),kf({withLegend:!0})},Gf.legend.hide=function(a){zf(Dc(a)),kf({withLegend:!0})},Gf.resize=function(a){Jf=a?a.width:null,Kf=a?a.height:null,pf({withLegend:!0,withTransition:!1,withTransitionForTransform:!1})},Gf.destroy=function(){Gf.data.targets=void 0,Gf.data.xs={},sj.html(""),a.onresize=null},"url"in e.data)Ff.xhr(e.data.url,function(a,b){var c,d=Ff.csv.parseRows(b.response);1===d.length?(c=[{}],d[0].forEach(function(a){c[0][a]=null})):c=Ff.csv.parse(b.response),bf(c)});else if("rows"in e.data)bf(tc(e.data.rows));else{if(!("columns"in e.data))throw Error("url or rows or columns is required.");bf(uc(e.data.columns))}return Gf},"function"==typeof a.define&&a.define.amd?a.define("c3",["d3"],e):a.c3=e}(window);