@cwi/d3-bullet
Version:
D3 bullet chart
1 lines • 3.4 kB
JavaScript
!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("d3-array"),require("d3-scale"),require("d3-selection"),require("d3-timer"),require("d3-transition")):"function"==typeof define&&define.amd?define(["exports","d3-array","d3-scale","d3-selection","d3-timer","d3-transition"],r):r((t=t||self).d3={},t.d3,t.d3,t.d3,t.d3)}(this,function(t,A,j,F,n){"use strict";function a(t){return t.ranges}function i(t){return t.markers}function s(t){return t.measures}function M(r){return function(t){return"translate("+r(t)+",0)"}}function L(r){return function(t){return Math.abs(r(t)-r(0))}}t.bullet=function(){var r="left",p=!1,x=0,k=a,_=i,v=s,w=380,b=30,q=null;function e(t){t.each(function(e,t){var r=k.call(this,e,t).slice().sort(A.descending),n=_.call(this,e,t).slice(),a=v.call(this,e,t).slice().sort(A.descending),i=F.select(this),s=j.scaleLinear().domain([0,Math.max(r[0],n[0],a[0])]).range(p?[w,0]:[0,w]),o=this.__chart__||j.scaleLinear().domain([0,1/0]).range(s.range());this.__chart__=s;var u=L(o),c=L(s),l=i.selectAll("rect.range").data(r);l.enter().append("rect").attr("class",function(t,r){return"range s"+r}).attr("width",u).attr("height",b).attr("x",p?o:0).transition().duration(x).attr("width",c).attr("x",p?s:0),l.transition().duration(x).attr("x",p?s:0).attr("width",c).attr("height",b);var d=i.selectAll("rect.measure").data(a);d.enter().append("rect").attr("class",function(t,r){return["measure","s"+r,"measure-"+(t>=(e.markers[r]||0)?"gt":"lt")+"-marker",e.onTarget?"on-target":"out-of-target"].join(" ")}).attr("width",u).attr("height",b/3).attr("x",p?o:0).attr("y",b/3).transition().duration(x).attr("width",c).attr("x",p?s:0),d.transition().duration(x).attr("width",c).attr("height",b/3).attr("x",p?s:0).attr("y",b/3),i.append("text").attr("class","measure-label").append("tspan").attr("dy",".3em").text(a[0]).attr("x",10).attr("y",b/2);var h=i.selectAll("line.marker").data(n);h.enter().append("line").attr("class",function(t,r){return"marker marker-"+r}).attr("x1",o).attr("x2",o).attr("y1",b/6).attr("y2",5*b/6).transition().duration(x).attr("x1",s).attr("x2",s),h.transition().duration(x).attr("x1",s).attr("x2",s).attr("y1",b/6).attr("y2",5*b/6);var f=q||s.tickFormat(8),m=i.selectAll("g.tick").data(s.ticks(8),function(t){return this.textContent||f(t)}),g=m.enter().append("g").attr("class","tick").attr("transform",M(o)).style("opacity",1e-6);g.append("line").attr("y1",b).attr("y2",7*b/6),g.append("text").attr("text-anchor","middle").attr("dy","1em").attr("y",7*b/6).text(f),g.transition().duration(x).attr("transform",M(s)).style("opacity",1);var y=m.transition().duration(x).attr("transform",M(s)).style("opacity",1);y.select("line").attr("y1",b).attr("y2",7*b/6),y.select("text").attr("y",7*b/6),m.exit().transition().duration(x).attr("transform",M(s)).style("opacity",1e-6).remove()}),n.timerFlush()}return e.orient=function(t){return arguments.length?(p="right"==(r=t)||"bottom"==r,e):r},e.ranges=function(t){return arguments.length?(k=t,e):k},e.markers=function(t){return arguments.length?(_=t,e):_},e.measures=function(t){return arguments.length?(v=t,e):v},e.width=function(t){return arguments.length?(w=t,e):w},e.height=function(t){return arguments.length?(b=t,e):b},e.tickFormat=function(t){return arguments.length?(q=t,e):q},e.duration=function(t){return arguments.length?(x=t,e):x},e},Object.defineProperty(t,"__esModule",{value:!0})});