nvd3/nv.d3.min.js

3 lines
72 KiB
JavaScript
Raw Normal View History

(function(){function b(a,b){var c=[31,28,31,30,31,30,31,31,30,31,30,31];return a!=2?c[a-1]:b%4!=0?c[1]:b%100==0&&b%400!=0?c[1]:c[1]+1}function c(a,b,c){return function(d,e,f){var g=a(d),h=[];g<d&&b(g);if(f>1)while(g<e){var i=new Date(+g);c(i)%f||h.push(i),b(g)}else while(g<e)h.push(new Date(+g)),b(g);return h}}var a={version:"0.0.1a",dev:!0};window.nv=a,a.tooltip={},a.utils={},a.models={},a.charts={},a.graphs=[],a.log={},a.dispatch=d3.dispatch("render_start","render_end"),a.dispatch.on("render_start",function(b){a.log.startTime=+(new Date)}),a.dispatch.on("render_end",function(b){a.log.endTime=+(new Date),a.log.totalTime=a.log.endTime-a.log.startTime,a.dev&&console.log&&console.log("total",a.log.totalTime)}),a.render=function d(b){b=b||1,d.active=!0,a.dispatch.render_start(),setTimeout(function(){var c;for(var e=0;e<b&&(graph=d.queue[e]);e++)c=graph.generate(),typeof graph.callback=="function"&&graph.callback(c),a.graphs.push(c);d.queue.splice(0,e),d.queue.length?setTimeout(arguments.callee,0):(a.render.active=!1,a.dispatch.render_end())},0)},a.render.queue=[],a.addGraph=function(b){typeof arguments[0]=="function"&&(b={generate:arguments[0],callback:arguments[1]}),a.render.queue.push(b),a.render.active||a.render()},a.identity=function(a){return a},a.strip=function(a){return a.replace(/(\s|&)/g,"")},d3.time.monthEnd=function(a){return new Date(a.getFullYear(),a.getMonth(),0)},d3.time.monthEnds=c(d3.time.monthEnd,function(a){a.setUTCDate(a.getUTCDate()+1),a.setDate(b(a.getMonth()+1,a.getFullYear()))},function(a){return a.getMonth()}),function(){var b=window.nv.tooltip={};b.show=function(b,c,d,e){var f=document.createElement("div");f.className="nvtooltip",d=d||"s",e=e||20;var g=document.getElementsByTagName("body")[0];f.innerHTML=c,f.style.left=1,f.style.top=1,f.style.opacity=0,g.appendChild(f);var h=parseInt(f.offsetHeight),i=parseInt(f.offsetWidth),j=a.utils.windowSize().width,k=a.utils.windowSize().height,l=g.scrollTop,m=g.scrollLeft,n,o;switch(d){case"e":n=b[0]-i-e,o=b[1]-h/2,n<m&&(n=b[0]+e),o<l&&(o=l+5),o+h>l+k&&(o=l-h-5);break;case"w":n=b[0]+e,o=b[1]-h/2,n+i>j&&(n=b[0]-i-e),o<l&&(o=l+5),o+h>l+k&&(o=l-h-5);break;case"n":n=b[0]-i/2,o=b[1]+e,n<m&&(n=m+5),n+i>j&&(n=j-i-5),o+h>l+k&&(o=b[1]-h-e);break;case"s":n=b[0]-i/2,o=b[1]-h-e,n<m&&(n=m+5),n+i>j&&(n=j-i-5),l>o&&(o=b[1]+20)}return f.style.left=n+"px",f.style.top=o+"px",f.style.opacity=1,f},b.cleanup=function(){var a=document.getElementsByClassName("nvtooltip"),b=[];while(a.length)b.push(a[0]),a[0].style.transitionDelay="0 !important",a[0].style.opacity=0,a[0].className="nvtooltip-pending-removal";setTimeout(function(){while(b.length){var a=b.pop();a.parentNode.removeChild(a)}},500)}}(),a.utils.windowSize=function(){var a={width:640,height:480};return document.body&&document.body.offsetWidth&&(a.width=document.body.offsetWidth,a.height=document.body.offsetHeight),document.compatMode=="CSS1Compat"&&document.documentElement&&document.documentElement.offsetWidth&&(a.width=document.documentElement.offsetWidth,a.height=document.documentElement.offsetHeight),window.innerWidth&&window.innerHeight&&(a.width=window.innerWidth,a.height=window.innerHeight),a},a.models.axis=function(){function e(f){return f.each(function(e){(d.orient()=="top"||d.orient()=="bottom")&&d.ticks(Math.abs(a.range()[1]-a.range()[0])/100);var f=d3.select(this).selectAll("text.axislabel").data([b||null]);f.exit().remove();switch(d.orient()){case"top":f.enter().append("text").attr("class","axislabel").attr("text-anchor","middle").attr("y",0),f.attr("x",a.range()[1]/2);break;case"right":f.enter().append("text").attr("class","axislabel").attr("transform","rotate(90)").attr("y",-40),f.attr("x",-a.range()[0]/2);break;case"bottom":f.enter().append("text").attr("class","axislabel").attr("text-anchor","middle").attr("y",25),f.attr("x",a.range()[1]/2);break;case"left":f.enter().append("text").attr("class","axislabel").attr("transform","rotate(-90)").attr("y",-40),f.attr("x",-a.range()[0]/2)}f.text(function(a){return a}),d3.transition(d3.select(this)).call(d),c&&d3.select(this).selectAll("line.tick").filter(function(a
(i),j.dispatch.on("legendClick",function(b,c){b.disabled=!b.disabled,n.filter(function(a){return!a.disabled}).length||n.map(function(a){return a.disabled=!1,r.selectAll(".series").classed("disabled",!1),a}),a.transition().call(m)}),k.dispatch.on("elementMouseover.tooltip",function(a){l.tooltipShow({point:a.point,series:a.series,pos:[a.pos[0]+b.left,a.pos[1]+b.top],seriesIndex:a.seriesIndex,pointIndex:a.pointIndex})}),k.dispatch.on("elementMouseout.tooltip",function(a){l.tooltipHide(a)})}),m}var b={top:30,right:20,bottom:50,left:60},c=function(){return 960},d=function(){return 500},e=d3.scale.category20().range(),f=d3.scale.linear(),g=d3.scale.linear(),h=a.models.axis().scale(f).orient("bottom"),i=a.models.axis().scale(g).orient("left"),j=a.models.legend().height(30),k=a.models.line(),l=d3.dispatch("tooltipShow","tooltipHide");return m.dispatch=l,m.legend=j,m.xAxis=h,m.yAxis=i,d3.rebind(m,k,"x","y","size","xDomain","yDomain","forceX","forceY","interactive","clipEdge","clipVoronoi","id"),m.margin=function(a){return arguments.length?(b=a,m):b},m.width=function(a){return arguments.length?(c=d3.functor(a),m):c},m.height=function(a){return arguments.length?(d=d3.functor(a),m):d},m},a.models.multiBar=function(){function u(g){return g.each(function(i){j&&(i=d3.layout.stack().offset("zero").values(function(a){return a.values}).y(f)(i));var r=l&&m?[]:i.map(function(a){return a.values.map(function(a,b){return{x:e(a,b),y:f(a,b),y0:a.y0}})}),s=b-a.left-a.right,v=c-a.top-a.bottom;n=n||p,o=o||q,i=i.map(function(a,b){return a.values=a.values.map(function(a){return a.series=b,a}),a}),p.domain(d3.merge(r).map(function(a){return a.x})).rangeBands([0,s],.1),q.domain(m||[0,d3.max(d3.merge(r).map(function(a){return a.y+(j?a.y0:0)}).concat(h))]).range([v,0]);var w=d3.select(this).selectAll("g.d3multibar").data([i]),z=w.enter().append("g").attr("class","d3multibar"),A=z.append("defs"),B=z.append("g");B.append("g").attr("class","groups");var C=w.select("g").attr("transform","translate("+a.left+","+a.top+")"),D=B.append("g").attr("class","shiftWrap"),E=w.select(".groups").selectAll(".group").data(function(a){return a},function(a){return a.key});E.enter().append("g").style("stroke-opacity",1e-6).style("fill-opacity",1e-6).attr("transform",function(a,b){return j?"translate(0,0)":"translate("+b*p.rangeBand()/i.length+",0)"}),d3.transition(E.exit()).style("stroke-opacity",1e-6).style("fill-opacity",1e-6).remove(),E.attr("class",function(a,b){return"group series-"+b}).classed("hover",function(a){return a.hover}).style("fill",function(a,b){return k[b%10]}).style("stroke",function(a,b){return k[b%10]}),d3.transition(E).attr("transform",function(a,b){return j?"translate(0,0)":"translate("+b*p.rangeBand()/i.length+",0)"}).style("stroke-opacity",1).style("fill-opacity",.75);var F=E.selectAll("rect.bar").data(function(a){return a.values});F.exit().remove();var G=F.enter().append("rect").attr("class",function(a,b){return f(a,b)<0?"bar negative":"bar positive"}).attr("x",0).attr("y",function(a){return o(j?a.y0:0)}).attr("height",0).attr("width",p.rangeBand()/(j?1:i.length)).on("mouseover",function(a,b){d3.select(this).classed("hover",!0),t.elementMouseover({point:a,series:i[a.series],pos:[p(e(a,b))+p.rangeBand()*(j?i.length/2:a.series+.5)/i.length,q(f(a,b)+(j?a.y0:0))],pointIndex:b,seriesIndex:a.series,e:d3.event})}).on("mouseout",function(a,b){d3.select(this).classed("hover",!1),t.elementMouseout({point:a,series:i[a.series],pointIndex:b,seriesIndex:a.series,e:d3.event})}).on("click",function(a,b){t.elementClick({value:f(a,b),data:a,index:b,pos:[p(e(a,b)),q(f(a,b))],e:d3.event,id:d}),d3.event.stopPropagation()}).on("dblclick",function(a,b){t.elementDblClick({value:f(a,b),data:a,index:b,pos:[p(e(a,b)),q(f(a,b))],e:d3.event,id:d}),d3.event.stopPropagation()});F.attr("class",function(a,b){return f(a,b)<0?"bar negative":"bar positive"}).attr("transform",function(a,b){return"translate("+p(e(a,b))+",0)"}),d3.transition(F).attr("width",p.rangeBand()/(j?1:i.length)).attr("y",function(a,b){return q(f(a,b)+(j?a.y0:0))}).attr("height",function(a,b){return Math.abs(q(a.
,disabled:!0},{key:"Expanded",disabled:!0}];return r.dispatch=p,d3.rebind(r,o,"interactive","clipEdge"),r.x=function(a){return arguments.length?(i=d3.functor(a),o.x(i),r):i},r.y=function(a){return arguments.length?(j=d3.functor(a),o.y(j),r):j},r.margin=function(a){return arguments.length?(b=a,r):b},r.width=function(a){return arguments.length?(c=d3.functor(a),r):c},r.height=function(a){return arguments.length?(d=d3.functor(a),r):d},r.dotRadius=function(a){return arguments.length?(e=d3.functor(a),o.dotRadius=a,r):e},r.stacked=o,r.xAxis=k,r.yAxis=l,r},a.charts.cumulativeLineChartDaily=function(){function h(){return!b||!c.length?h:(d3.select(b).select("svg").datum(c).transition().duration(d).call(f),h)}var b=null,c=[],d=500,e=function(a,b,c,d,e){return"<h3>"+a+"</h3>"+"<p>"+c+" at "+b+"</p>"},f=a.models.cumulativeLine().x(function(a,b){return b}),g=function(c){var d=document.getElementById(b.substr(1)),g=c.pos[0]+d.offsetLeft,h=c.pos[1]+d.offsetTop,i=f.xAxis.tickFormat(),j=f.yAxis.tickFormat(),k=i(f.x()(c,c.pointIndex)),l=j(f.y()(c.point)),m=e(c.series.key,k,l,c,f);a.tooltip.show([g,h],m)};return f.xAxis.tickFormat(function(a){return d3.time.format("%x")(new Date(c[0].values[a].x))}),f.yAxis.tickFormat(d3.format(",.2%")),h.build=function(){return!b||!c.length?h:(a.addGraph({generate:function(){var a=d3.select(b),e=function(){return parseInt(a.style("width"))},g=function(){return parseInt(a.style("height"))},h=a.append("svg");return f.width(e).height(g),h.attr("width",e()).attr("height",g()).datum(c).transition().duration(d).call(f),f},callback:function(c){c.dispatch.on("tooltipShow",g),c.dispatch.on("tooltipHide",a.tooltip.cleanup),window.onresize=function(){d3.select(b+" svg").attr("width",c.width()()).attr("height",c.height()()).call(c)}}}),h)},h.data=function(a){return arguments.length?(c=a,h):c},h.selector=function(a){return arguments.length?(b=a,h):b},h.duration=function(a){return arguments.length?(d=a,h):d},h.tooltip=function(a){return arguments.length?(e=a,h):e},h.xTickFormat=function(a){return arguments.length?(f.xAxis.tickFormat(typeof a=="function"?a:d3.format(a)),h):f.xAxis.tickFormat()},h.yTickFormat=function(a){return arguments.length?(f.yAxis.tickFormat(typeof a=="function"?a:d3.format(a)),h):f.yAxis.tickFormat()},h.xAxisLabel=function(a){return arguments.length?(f.xAxis.axisLabel(a),h):f.xAxis.axisLabel()},h.yAxisLabel=function(a){return arguments.length?(f.yAxis.axisLabel(a),h):f.yAxis.axisLabel()},d3.rebind(h,f,"x","y"),h.graph=f,h},a.charts.line=function(){function h(){return!b||!c.length?h:(d3.select(b).select("svg").datum(c).transition().duration(d).call(f),h)}var b=null,c=[],d=500,e=function(a,b,c,d,e){return"<h3>"+a+"</h3>"+"<p>"+c+" at "+b+"</p>"},f=a.models.lineWithLegend(),g=function(c){var d=document.getElementById(b.substr(1)),g=c.pos[0]+d.offsetLeft,h=c.pos[1]+d.offsetTop,i=f.xAxis.tickFormat(),j=f.yAxis.tickFormat(),k=i(f.x()(c.point)),l=j(f.y()(c.point)),m=e(c.series.key,k,l,c,f);a.tooltip.show([g,h],m)};return f.xAxis.tickFormat(d3.format(",r")),f.yAxis.tickFormat(d3.format(",.2f")),h.build=function(){return!b||!c.length?h:(a.addGraph({generate:function(){var a=d3.select(b),e=function(){return parseInt(a.style("width"))},g=function(){return parseInt(a.style("height"))},h=a.append("svg");return f.width(e).height(g),h.attr("width",e()).attr("height",g()).datum(c).transition().duration(d).call(f),f},callback:function(c){c.dispatch.on("tooltipShow",g),c.dispatch.on("tooltipHide",a.tooltip.cleanup),window.onresize=function(){d3.select(b+" svg").attr("width",c.width()()).attr("height",c.height()()).call(c)}}}),h)},h.data=function(a){return arguments.length?(c=a,h):c},h.selector=function(a){return arguments.length?(b=a,h):b},h.duration=function(a){return arguments.length?(d=a,h):d},h.tooltip=function(a){return arguments.length?(e=a,h):e},h.xTickFormat=function(a){return arguments.length?(f.xAxis.tickFormat(typeof a=="function"?a:d3.format(a)),h):f.xAxis.tickFormat()},h.yTickFormat=function(a){return arguments.length?(f.yAxis.tickFormat(typeof a=="function"?a:d3.format(a)),h):f.yAxis.tickFormat()},h.x