-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathfirespray-0.1.3.min.js
1 lines (1 loc) · 22.8 KB
/
firespray-0.1.3.min.js
1
var firespray={version:"0.1.3"},fy=firespray;fy.chart=function(){var e=this,t=fy.utils.cloneJSON(fy.defaultConfig),r={data:[],root:null,bgSvg:null,axesSvg:null,geometryCanvas:null,geometrySVG:null,scaleX:d3.scale.linear(),scaleY:d3.scale.linear(),isMirror:null,axisXHeight:null,brushExtent:null,extentX:null,extentY:null,zoomedExtentX:null,theme:null,brush:null,queues:[],biggestY:null};r.dispatch=d3.dispatch("brushChange","brushDragStart","brushDragMove","brushDragEnd","geometryHover","geometryOut","geometryClick","chartHover","chartOut","chartEnter","mouseDragMove","mouseWheelScroll");var a=fy.utils.pipeline(fy.setupContainers,fy.setupScales,fy.setupBrush,fy.setupAxisY,fy.setupAxisX,fy.setupHovering,fy.setupStripes,fy.setupGeometries),n={render:function(){a(t,r)},setData:function(e){return e&&0!==e.length&&0!==e[0].values.length?(r.data=fy.utils.cloneJSON(e),r.data.sort(function(e,t){var r=e.values.length,a=t.values.length;return r>a?-1:a>r?1:0}),this.render(),this):this},setConfig:function(e){return fy.utils.override(e,t),this},refresh:function(){return e.dataUtils.hasValidData(r)&&this.render(),this},getDataSlice:function(e){return fy.dataUtils.getDataSlice(r,e)},getDataUnderBrush:function(){return fy.dataUtils.getDataSlice(r,fy.graphicUtils.getBrushExtent(r))},getDataInView:function(){return fy.dataUtils.getDataSlice(r,fy.graphicUtils.getZoomExtent(r,t))},setZoom:function(e){return t.zoomedExtentX=e,this.render(),this},getZoomExtent:function(){return fy.graphicUtils.getZoomExtent(r,t)},setBrushSelection:function(e){return r.brush&&(r.brushExtent=e,this.render()),this},setHovering:function(e){if(fy.dataUtils.hasValidData(r)){var a=r.scaleX(e),n=fy._hovering.injectClosestPointsFromX(a,t,r);return r.interactionSvg.select(".hover-group").style({visibility:"visible"}),"undefined"!=typeof n?(fy._hovering.displayHoveredGeometry(t,r),fy._hovering.displayVerticalGuide(n,t,r)):(fy._hovering.hideHoveredGeometry(t,r),fy._hovering.displayVerticalGuide(a,t,r)),this}},brushIsFarRight:function(){return r.brush.extent()?r.brush.extent()[1].getTime()===r.scaleX.domain()[1].getTime():void 0},getBrushExtent:function(){return fy.graphicUtils.getBrushExtent(r)},getDataExtent:function(){return{x:fy.dataUtils.computeExtent(r,"x"),y:fy.dataUtils.computeExtent(r,"y")}},getDataPointCount:function(){return r.data[0].values.length},getDataPointCountInView:function(){return fy.dataUtils.getDataSlice(this.getZoomExtent())[0].values.length},getSvgNode:function(){return r.bgSvg?r.bgSvg.node():void 0},getCanvasNode:function(){return r.geometryCanvas?r.geometryCanvas.node():void 0},getContainer:function(){return t.container?t.container:void 0},resizeToContainerSize:function(){return t.container&&(fy.utils.override({width:t.container.clientWidth,height:t.container.clientHeight},t),this.refresh()),this}};return d3.rebind(n,r.dispatch,"on"),n},fy.defaultConfig={scaleX:"time",width:500,height:300,margin:{top:20,right:20,bottom:20,left:20},container:null,showTicksX:!1,showGridX:!1,showTicksY:!0,useBrush:!1,suggestedXTicks:10,suggestedYTicks:null,tickFormatX:"%H:%M:%S",axisXHeight:20,axisYWidth:0,isMirror:null,dotSize:4,suffix:"",stripeWidthInSample:1,tickFormatY:null,labelYOffset:0,axisYBgH:null,axisYStartsAtZero:!0,showStripes:!0,geometryType:"line",showAxisX:!0,showAxisY:!0,showLabelsX:!0,showLabelsY:!0,progressiveRenderingRate:300,brushThrottleWaitDuration:10,useProgressiveRendering:!0,renderer:"canvas",theme:null},fy.utils={override:function(e,t){for(var r in e)r in t&&(t[r]=e[r])},cloneJSON:function(e){return JSON.parse(JSON.stringify(e))},throttle:function(e,t){var r=!1,a=null;return function(){r||(e.apply(this,arguments),r=!0,clearTimeout(a),a=setTimeout(function(){r=!1},t))}},deepExtend:function(e,t){for(var r in t)t[r]&&t[r].constructor&&t[r].constructor===Object?(e[r]=e[r]||{},arguments.callee(e[r],t[r])):e[r]=t[r];return e},pipeline:function(){var e=arguments;return function(t,r){for(var a=0;a<e.length;a++)r=e[a].call(this,t,r);return r}}},fy.dataUtils={generateDataPoint:function(e){var t={x:e.epoch,y:100*Math.random()};return e.valueCount>1&&(t.y2=100*Math.random()),t},generateDataLine:function(e,t){var r=e.pointCount||1e3,a=d3.scale.category20().range();return e.epoch=e.startEpoch,{values:d3.range(r).map(function(){return e.epoch+=1e3,fy.dataUtils.generateDataPoint(e)}),color:a[t%(a.length-1)],name:"line i"}},generateData:function(e){e.startEpoch=(new Date).setMilliseconds(0);var t=e.lineCount||5;return d3.range(t).map(function(t,r){return fy.dataUtils.generateDataLine(e,r)})},hasValidData:function(e){return e.data&&0!==e.data.length&&0!==e.data[0].values.length},hasValidDataY2:function(e){return this.hasValidData(e)&&"number"==typeof e.data[0].values[0].y2?!!e.data[0].values[0]:!1},computeExtent:function(e,t){return d3.extent(d3.merge(e.data.map(function(e){return e.values.map(function(e){return e[t]})})))},getDataSlice:function(e,t){var r=fy.utils.cloneJSON(e.data).map(function(e){return e.values=e.values.filter(function(e){return e.x>=t[0]&&e.x<=t[1]}),e});return r}},fy.graphicUtils={getBrushExtent:function(e){return e.brush.extent()?e.brush.extent().map(function(e){return e.getTime()}):void 0},sampleWidthInPx:function(e){return e.scaleX(e.data[0].values[1].x)-e.scaleX(e.data[0].values[0].x)},getZoomExtent:function(e,t){return t.zoomedExtentX||fy.dataUtils.computeExtent(e,"x")}},fy.setupHovering=function(e,t){function r(){var e=fy.graphicUtils.sampleWidthInPx(t),r=fy.dataUtils.computeExtent(t,"x"),a=[];return a[0]=r[0]-s*n-o*i/e,a[1]=r[1]+s*n-o*i/e,a[1]-a[0]>=1001?a:void 0}if(e.useBrush||"function"==typeof t.interactionSvg.select(".hover-rect").on("mousemove"))return t;var a=this,n=0,i=0,s=10,o=1e3,l=!1;return document.onmousedown=function(){l=!0},document.onmouseup=function(){l=!1},d3.select(document).on("mousewheel",function(){n+=d3.event.wheelDelta;var e=r();t.dispatch.mouseWheelScroll.call(a,e)}),t.interactionSvg.select(".hover-rect").on("mousemove",function(){if(fy.dataUtils.hasValidData(t)){var n=d3.mouse(this)[0];if(l){i+=d3.event.movementX;var s=r();t.dispatch.mouseDragMove.call(a,s)}var o=fy._hovering.injectClosestPointsFromX(n,e,t);t.interactionSvg.select(".hover-group").style({visibility:"visible"}),"undefined"!=typeof o?(fy._hovering.displayHoveredGeometry(e,t),t.dispatch.chartHover.call(a,t.data),fy._hovering.displayVerticalGuide(o,e,t)):(fy._hovering.hideHoveredGeometry(e,t),fy._hovering.displayVerticalGuide(n,e,t))}}).on("mouseenter",function(){t.dispatch.chartEnter.call(a)}).on("mouseout",function(){var e=t.interactionSvg.node(),r=d3.event.relatedTarget;(e.contains&&!e.contains(r)||e.compareDocumentPosition&&!e.compareDocumentPosition(r))&&(t.interactionSvg.select(".hover-group").style({visibility:"hidden"}),t.dispatch.chartOut.call(a))}).select(".hover-group"),t},fy._hovering={injectClosestPointsFromX:function(e,t,r){var a,n,i=!1;return r.data.forEach(function(t){if(!i){var r=t.values.map(function(e){return e.scaledX});if("undefined"!=typeof r[0]){var s=.5*(r[1]-r[0]);a=d3.bisect(r,e-s),"undefined"!=typeof t.values[a]&&(n=t.values[a].scaledX,i=!!a)}}t.closestValue=t.values[a]}),n},displayHoveredGeometry:function(e,t){"bar"===e.geometryType||"percentBar"===e.geometryType||"stackedBar"===e.geometryType?fy._hovering.displayHoveredRects(e,t):fy._hovering.displayHoveredDots(e,t)},displayHoveredDots:function(e,t){var r=t.data.map(function(e){return e.closestValue});if(t.isMirror){var a=t.data.map(function(e){return e.closestValue});r=r.concat(a)}var n=t.interactionSvg.select(".hover-group").selectAll("circle.hovered-geometry").data(r);return n.enter().append("circle").attr({"class":"hovered-geometry"}).on("mousemove",function(r,a){var n=t.isMirror&&a>=t.data.length,i=n?r.scaledY2:r.scaledY,s=n?r.y2:r.y,o=e.container.getBoundingClientRect().top,l={posX:r.scaledX,posY:i,name:r.name,color:r.color,valueX:r.x,valueY:s,containerTop:o};t.dispatch.geometryHover.call(this,l,r)}).on("mouseout",function(){t.dispatch.geometryOut.call(this)}).on("click",function(){t.dispatch.geometryClick.call(this)}),n.filter(function(e){return"undefined"!=typeof e&&!isNaN(e.y)}).style({fill:function(e){return e.color||"silver"}}).attr({r:e.dotSize,cx:function(e){return e.scaledX},cy:function(e,r){var a=t.isMirror&&r>=t.data.length&&e.scaledY2?e.scaledY2:e.scaledY;return a}}),n.exit().remove(),this},displayHoveredRects:function(e,t){var r=t.data.map(function(e){return e.closestValue});if(t.isMirror){var a=t.data.map(function(e){return e.closestValue});r=r.concat(a)}var n=t.interactionSvg.select(".hover-group").selectAll("rect.hovered-geometry").data(r);return n.enter().append("rect").attr({"class":"hovered-geometry"}).on("mousemove",function(r,a){var n=t.isMirror&&a>=t.data.length,i=n?r.y2:r.y,s=e.container.getBoundingClientRect().top,o={posX:r.scaledX,posY:t.chartH-r.topY+e.margin.top+r.scaledY/2,name:r.name,color:r.color,valueX:r.x,valueY:i,containerTop:s};t.dispatch.geometryHover.call(this,o,r)}).on("mouseout",function(){t.dispatch.geometryOut.call(this)}).on("click",function(){t.dispatch.geometryClick.call(this)}),n.filter(function(e){return"undefined"!=typeof e&&!isNaN(e.y)}).style({fill:function(e){return e.color||"silver"}}).attr({x:function(e){return e.scaledX-e.barW/2},y:function(e){return e.scaledY},width:function(e){return e.barW},height:function(e){return e.stackTopY-e.scaledY}}),n.exit().remove(),this},hideHoveredGeometry:function(e,t){t.interactionSvg.select(".hover-group").selectAll("circle.hovered-geometry").remove()},displayVerticalGuide:function(e,t,r){return r.interactionSvg.select("line.hover-guide-x").attr({x1:e,x2:e,y1:0,y2:r.chartH}).style({"pointer-events":"none"}),this}},firespray.template='<div><svg xmlns="http://www.w3.org/2000/svg" class="bg"><g class="chart-group"><g class="background"><rect class="panel-bg" /></g><g class="axis-y axis-y2"></g><g class="axis-y axis-y1"></g><rect class="axis-x-bg" /><g class="axis-x"></g></g></svg><canvas class="geometry"></canvas><svg xmlns="http://www.w3.org/2000/svg" class="geometry-svg"></svg><svg xmlns="http://www.w3.org/2000/svg" class="axes"><g class="chart-group"><g class="axis-x"></g><rect class="axis-y-bg" /><g class="axis-y axis-y2"></g><g class="axis-y axis-y1"></g></g></svg><svg xmlns="http://www.w3.org/2000/svg" class="interaction"><g class="hover-group"><line class="hover-guide-x"/><rect class="hover-rect" width="100%" height="100%" pointer-events="all" fill="none"/></rect></g><g class="brush-group"></g></svg></div>',firespray.themes={"default":".firespray-chart .axis-x-bg {fill: white; }.firespray-chart .axis-y-bg {fill: rgba(220, 220, 220, 0.5);}.firespray-chart .extent {fill: rgba(200, 200, 200, .5); stroke: rgba(255, 255, 255, .5); }.firespray-chart .stripe { fill: none; }.firespray-chart .stripe.even { fill: rgb(250, 250, 250); }.firespray-chart .panel-bg { fill: white; }.firespray-chart .axis-y line { stroke: #eee; }.firespray-chart text { font-size: 10px; fill: #aaa; }.firespray-chart .hovered-geometry, .hover-guide-x{ stroke: #555; }.firespray-chart .domain{ display: none}",dark:".firespray-chart .axis-x-bg {fill: #222; }.firespray-chart .axis-y-bg {fill: rgba(50, 50, 50, 0.5);}.firespray-chart .extent {fill: rgba(200, 200, 200, .5); stroke: rgba(255, 255, 255, .5); }.firespray-chart .stripe { fill: none; }.firespray-chart .stripe.even { fill: #222; }.firespray-chart .panel-bg { fill: #111; }.firespray-chart .axis-y line { stroke: #111; }.firespray-chart text { font-size: 10px; fill: #aaa; }.firespray-chart .hovered-geometry, .hover-guide-x{ stroke: #555; }.firespray-chart .domain{ display: none}"},fy.setupScales=function(e,t){function r(){var r=fy.graphicUtils.getZoomExtent(t,e);t.scaleX.domain(r),t.extentX=r}function a(){var r=fy.dataUtils.computeExtent(t,"y");if(t.biggestY="y",t.isMirror!==!1&&fy.dataUtils.hasValidDataY2(t)){var a=fy.dataUtils.computeExtent(t,"y2");a[1]>r[1]&&(t.biggestY="y2"),r=[Math.min(r[0],a[0]),Math.max(r[1],a[1])]}if(t.scaleY.range(t.isMirror?[t.chartH/2,0]:[t.chartH,0]),"stackedLine"===e.geometryType||"stackedArea"===e.geometryType||"stackedBar"===e.geometryType){var n=d3.zip.apply(null,t.data.map(function(e){return e.values.map(function(e){return e.y})})).map(function(e){return d3.sum(e)}),i=d3.max(n);t.extentY=[0,i],t.scaleY.domain(t.extentY)}else t.extentY=e.axisYStartsAtZero?[0,r[1]]:r,t.scaleY.domain(t.extentY)}return r(),a(),t},fy.setupAxisX=function(e,t){if(!e.showAxisX)return t;var r=t.axesSvg.select(".axis-x");r.attr({transform:"translate("+[0,t.chartH]+")"});var a=d3.svg.axis().scale(t.scaleX).orient("bottom").tickSize(t.axisXHeight),n=12;if(e.showLabelsX){var i=[].concat(e.suggestedXTicks);i[0]&&a.ticks.apply(null,i);var s="linear"===e.scaleX?d3.format(e.tickFormatX):d3.time.format(e.tickFormatX);a.tickFormat(s),r.call(a);var o=t.axisXHeight/2+n/2;r.selectAll("text").attr({transform:function(){return"translate(3, -"+o+")"}}),e.showTicksX===!1?r.selectAll("line").remove():r.selectAll("line").attr({y2:t.axisXHeight}),r.select(".domain").style({display:"none"})}if(e.showGridX){var l=t.bgSvg.select(".axis-x");l.attr({transform:"translate("+[0,t.chartH]+")"}),l.call(a),l.selectAll("text").text(null),l.selectAll("line").attr({y1:0,y2:-t.chartH}).classed("grid-line x",!0),l.select(".domain").style({display:"none"})}return t},fy.setupAxisY=function(e,t){function r(r,a,n){var i=[].concat(e.suggestedYTicks);if(i[0]&&n.ticks.apply(null,i),e.showLabelsY){r.call(n);var s=r.selectAll("text").attr({transform:"translate("+e.labelYOffset+",0)"}).style({"text-anchor":e.labelYOffset>0?"start":"end"}).text(function(e){return parseFloat(e)});s.filter(function(e,t){return 0===t}).text(function(){return this.textContent+" "+e.suffix}),e.tickFormatY&&s.text(e.tickFormatY),r.selectAll("line").remove()}e.showTicksY&&(a.call(n),a.selectAll("text").text(null),a.selectAll("line").attr({x1:t.chartW}).classed("grid-line y",!0))}function a(e){var t=[];return e.each(function(){t.push(this.textContent?6*this.textContent.length:0)}),d3.max(t)}if(!e.showAxisY)return t;t.scaleY.range(t.isMirror?[t.chartH/2,0]:[t.chartH,0]);var n=t.scaleY.copy();if("stackedLine"===e.geometryType||"stackedArea"===e.geometryType||"stackedBar"===e.geometryType||"percentBar"===e.geometryType){var i=d3.zip.apply(null,t.data.map(function(e){return e.values.map(function(e){return e.y})})).map(function(e){return d3.sum(e)}),s=d3.max(i);n.domain([0,s])}var o=t.axesSvg.select(".axis-y1"),l=t.bgSvg.select(".axis-y1"),c=d3.svg.axis().scale(n).orient("left").tickSize(0);if(r(o,l,c),t.isMirror){var u=t.axesSvg.select(".axis-y2"),h=t.bgSvg.select(".axis-y2");n.range([t.chartH/2,t.chartH]),r(u,h,c)}else t.axesSvg.select(".axis-y2").selectAll("*").remove();if(e.showTicksY&&e.labelYOffset>0){var g=t.axesSvg.selectAll(".axis-y1 text, .axis-y2 text"),d=a(g),f=d?d+e.labelYOffset:0,y=e.axisYBgH?e.axisYBgH:t.chartH;t.axesSvg.select(".axis-y-bg").attr({width:f,height:y})}return t.axesSvg.select(".domain").style({fill:"none",stroke:"none"}),t},fy.setupStripes=function(e,t){if(!e.showStripes||!fy.dataUtils.hasValidData(t))return this;var r=fy.graphicUtils.sampleWidthInPx(t),a=Math.round(t.chartW/r),n=t.bgSvg.select(".background").selectAll("rect.stripe").data(d3.range(a));return n.enter().append("rect").attr({"class":"stripe"}),n.attr({x:function(e,t){return t*r},y:0,width:r,height:t.chartH}).classed("even",function(e,t){return t%2===0}).style({stroke:"none"}),n.exit().remove(),t},fy.setupBrush=function(e,t){if(t.brush&&(t.brush.x(t.scaleX).extent(t.brushExtent),t.interactionSvg.select(".brush-group").call(t.brush).call(t.brush.event)),!e.useBrush||t.brush)return t;t.brush=d3.svg.brush();var r=fy.utils.throttle(t.dispatch.brushChange,e.brushThrottleWaitDuration),a=fy.utils.throttle(t.dispatch.brushDragMove,e.brushThrottleWaitDuration);return t.brushExtent=t.brushExtent||t.scaleX.domain(),t.brush.x(t.scaleX).extent(t.brushExtent).on("brush",function(){r.call(this,t.brushExtent.map(function(e){return e.getTime()})),d3.event.sourceEvent&&(t.brushExtent=t.brush.extent(),a.call(this,t.brushExtent.map(function(e){return e.getTime()})))}).on("brushstart",function(){t.dispatch.brushDragStart.call(this,t.brushExtent.map(function(e){return e.getTime()}))}).on("brushend",function(){t.dispatch.brushDragEnd.call(this,t.brushExtent.map(function(e){return e.getTime()}))}),t.interactionSvg.select(".brush-group").call(t.brush).selectAll("rect").attr({height:t.chartH+t.axisXHeight,y:0}),t},fy.setupContainers=function(e,t){if(!e.container)throw"A container is needed";if(!t.root){var r=d3.select(e.container).append("div");r.html(fy.template),t.root=r.style({position:"absolute"}).classed("firespray-chart",!0),t.bgSvg=t.root.select("svg.bg"),t.axesSvg=t.root.select("svg.axes"),t.interactionSvg=t.root.select("svg.interaction").attr({id:Math.random()}),t.geometryCanvas=t.root.select("canvas.geometry"),t.geometrySVG=t.root.select("svg.geometry-svg"),t.root.selectAll("svg, canvas").style({position:"absolute"})}var a={time:d3.time.scale(),linear:d3.scale.linear()};return t.scaleX=a[e.scaleX],t.axisXHeight=e.showAxisX&&e.showLabelsX?e.axisXHeight:0,t.axisYWidth=e.showAxisY&&e.showLabelsY?e.axisYWidth:0,t.chartW=e.width-e.margin.right-e.margin.left-t.axisYWidth,t.chartH=e.height-e.margin.top-e.margin.bottom-t.axisXHeight,t.scaleX.range([0,t.chartW]),t.bgSvg.style({height:e.height+"px",width:e.width+"px"}).selectAll(".chart-group").attr({transform:"translate("+[e.margin.left,e.margin.top]+")"}),t.axesSvg.style({height:e.height+"px",width:e.width+"px"}).select(".chart-group").attr({transform:"translate("+[e.margin.left+t.axisYWidth,e.margin.top]+")"}),t.interactionSvg.style({height:e.height+"px",width:e.width+"px"}).select(".hover-group").attr({transform:"translate("+[e.margin.left+t.axisYWidth,e.margin.top]+")"}),t.interactionSvg.select(".hover-rect").attr({width:t.chartW,height:t.chartH}),t.interactionSvg.select(".brush-group").attr({transform:"translate("+[e.margin.left+t.axisYWidth,e.margin.top]+")"}),t.bgSvg.select(".panel-bg").attr({width:t.chartW,height:t.chartH}),t.bgSvg.select(".axis-x-bg").attr({width:t.chartW,height:t.axisXHeight,y:t.chartH}),t.isMirror="line"===e.geometryType?"boolean"==typeof e.isMirror?e.isMirror:fy.dataUtils.hasValidDataY2(t):!1,e.theme!==t.theme&&(t.root.select("style").remove(),t.root.append("style").html(fy.themes[e.theme]),t.theme=e.theme),t},fy.setupGeometries=function(e,t){return fy._computeGeometryData(e,t),"line"===e.geometryType||"stackedLine"===e.geometryType||"stackedArea"===e.geometryType?fy.setupLineGeometry(e,t):("bar"===e.geometryType||"percentBar"===e.geometryType||"stackedBar"===e.geometryType)&&fy.setupBarGeometry(e,t),t},fy.setupBarGeometry=function(e,t){"canvas"===e.renderer?fy._renderBarGeometry(e,t):fy._renderBarGeometrySVG(e,t)},fy.setupLineGeometry=function(e,t){"canvas"===e.renderer?fy._renderLineGeometry(e,t):"stackedArea"===e.geometryType?fy._renderAreaGeometrySVG(e,t):fy._renderLineGeometrySVG(e,t)},fy._computeGeometryData=function(e,t){t.scaleY.range(t.isMirror?[t.chartH/2,0]:[t.chartH,0]);var r,a=d3.zip.apply(null,t.data.map(function(e){return e.values.map(function(e){return e[t.biggestY]})}));r=a.map("stackedLine"===e.geometryType||"stackedArea"===e.geometryType||"stackedBar"===e.geometryType||"percentBar"===e.geometryType?function(e){return d3.sum(e)}:function(e){return d3.max(e)});var n=(d3.max(r),t.scaleY.copy()),i=t.scaleX(t.data[0].values[1].x),s=Math.max(i/4,1);i=Math.floor(i-s),i=Math.max(1,i);var o,l,c,u,h,g;for(o=0;o<t.data.length;o++)for(c=t.data[o],g=c.values[0],l=0;l<c.values.length;l++)"percentBar"===e.geometryType&&n.domain([0,r[l]]),u=c.values[l],h=Math.max(o-1,0),u.scaledX=t.scaleX(u.x),u.prevScaledX=g.scaledX,u.stackTopY=0===o||"line"===e.geometryType||"bar"===e.geometryType?n.range()[0]:t.data[h].values[l].scaledY,u.scaledY=u.stackTopY+n(u.y)-n.range()[0],u.prevStackTopY=g.stackTopY,u.prevScaledY=g.scaledY,u.color=c.color||"silver",u.name=c.name,u.barW=i,g={scaledX:u.scaledX,scaledY:u.scaledY,stackTopY:u.stackTopY};if(t.isMirror)for(n.range([t.chartH,t.chartH/2]),o=0;o<t.data.length;o++)for(c=t.data[o],g=c.values[0],l=0;l<c.values.length;l++)u=c.values[l],u.scaledY2=t.chartH+t.chartH/2-n(u.y2),u.prevScaledY2=g.scaledY2,g=u},fy._renderAreaGeometrySVG=function(e,t){t.geometrySVG.attr({width:t.chartW,height:t.chartH}).style({top:e.margin.top+"px",left:e.margin.left+"px"});var r=d3.svg.area().x(function(e){return e.scaledX}).y0(function(e){return e.stackTopY}).y1(function(e){return e.scaledY}),a=t.geometrySVG.selectAll("path.geometry").data(t.data);a.enter().append("path").classed("geometry",!0),a.attr({d:function(e){return r(e.values)}}).style({stroke:function(e){return e.color},fill:function(e){return e.color}})},fy._renderLineGeometrySVG=function(e,t){t.geometrySVG.attr({width:t.chartW,height:t.chartH}).style({top:e.margin.top+"px",left:e.margin.left+"px"});var r=d3.svg.line().x(function(e){return e.scaledX}).y(function(e){return e.scaledY}),a=t.geometrySVG.selectAll("path.geometry").data(t.data);a.enter().append("path").classed("geometry",!0),a.attr({d:function(e){return r(e.values)}}).style({stroke:function(e){return e.color},fill:"none"})},fy._renderLineGeometry=function(e,t){function r(r){a.strokeStyle=r.color,a.fillStyle=r.color,a.beginPath(),a.moveTo(r.prevScaledX,r.prevScaledY),a.lineTo(r.scaledX,r.scaledY),"stackedArea"===e.geometryType&&(a.lineTo(r.scaledX,r.stackTopY),a.lineTo(r.prevScaledX,r.prevStackTopY),a.lineTo(r.prevScaledX,r.prevScaledY)),t.isMirror&&(a.moveTo(r.prevScaledX,r.prevScaledY2),a.lineTo(r.scaledX,r.scaledY2)),a.fill(),a.stroke()}t.geometryCanvas.attr({width:t.chartW,height:t.chartH}).style({top:e.margin.top+"px",left:e.margin.left+"px"});var a=t.geometryCanvas.node().getContext("2d");if(e.useProgressiveRendering&&"undefined"!=typeof renderQueue){for(i=0;i<t.data.length;i++)t.queues.push(renderQueue(r).rate(e.progressiveRenderingRate)),t.queues.splice(t.data.length);t.data.forEach(function(e,r){t.queues[r](e.values)})}else t.data.forEach(function(e){e.values.forEach(function(e){r(e)})})},fy._renderBarGeometrySVG=function(e,t){t.geometrySVG.attr({width:t.chartW,height:t.chartH}).style({top:e.margin.top+"px",left:e.margin.left+"px"});var r=t.geometrySVG.selectAll("g.geometry-group").data(t.data);r.enter().append("g").classed("geometry-group",!0),r.exit().remove();var a=r.selectAll("rect.geometry").data(function(e){return e.values});a.enter().append("rect").classed("geometry",!0),a.attr({x:function(e){return e.scaledX-e.barW/2},y:function(e){return e.scaledY},width:function(e){return e.barW},height:function(e){return e.stackTopY-e.scaledY}}).style({stroke:function(e){return e.color},fill:function(e){return e.color}})},fy._renderBarGeometry=function(e,t){function r(e){a.strokeStyle=e.color,a.lineWidth=e.barW,a.beginPath(),a.moveTo(Math.floor(e.scaledX),Math.floor(e.scaledY)),a.lineTo(Math.floor(e.scaledX),Math.floor(e.stackTopY)),a.stroke()}t.geometryCanvas.attr({width:t.chartW,height:t.chartH}).style({top:e.margin.top+"px",left:e.margin.left+"px"});var a=t.geometryCanvas.node().getContext("2d");if(a.globalCompositeOperation="source-over",e.useProgressiveRendering&&"undefined"!=typeof renderQueue){for(i=0;i<2*t.data.length;i++)t.queues.push(renderQueue(r).rate(e.progressiveRenderingRate)),t.queues.splice(t.data.length);t.data.forEach(function(e,r){t.queues[r](e.values)})}else t.data.forEach(function(e){e.values.forEach(function(e){r(e)})})};