From 485772e24d7bf8bd8893273071606ac8e6c2b99f Mon Sep 17 00:00:00 2001 From: jcarver Date: Sun, 6 Mar 2016 15:10:38 -0800 Subject: [PATCH] fixes #24 - users can now pass a DOM node or a CSS selector to initialize the chart --- dist/suave-charts.min.js | 4 ++-- src/coffeescript/svg.coffee | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/dist/suave-charts.min.js b/dist/suave-charts.min.js index f850804..e286834 100644 --- a/dist/suave-charts.min.js +++ b/dist/suave-charts.min.js @@ -1,5 +1,5 @@ -(function(){var Svg$$module$target$coffeescript$svg,module$target$coffeescript$svg=Svg$$module$target$coffeescript$svg=function(){function d(c,b,a){this.margin=a;a=b.split(":");b=a[0];a=a[1];this.aspectRatio=[parseInt(b),parseInt(a)];this.domElement=document.querySelector(c);this.container=d3.select(this.domElement).append("svg").attr("preserveAspectRatio","xMinYMin");this.chart=this.container.append("g")}d.prototype.resize=function(c){var b,a;null==c&&(c=this.margin);a=this.domElement.offsetWidth;b=a/this.aspectRatio[0]* -this.aspectRatio[1];this.width=a-c.left-c.right;this.height=b-c.bottom-c.top;this.container.attr("width",a).attr("height",b);return this.chart.attr("transform","translate("+c.left+","+c.top+")")};return d}();var defaultBarOptions$$module$target$coffeescript$defaults,defaultDonutOptions$$module$target$coffeescript$defaults,defaultHistogramOptions$$module$target$coffeescript$defaults,defaultLineOptions$$module$target$coffeescript$defaults,mergeOptions$$module$target$coffeescript$defaults;mergeOptions$$module$target$coffeescript$defaults=function(d,c){var b,a;a={};for(b in d)a[b]=d[b];for(b in c)a[b]=c[b];return a}; +(function(){var Svg$$module$target$coffeescript$svg,module$target$coffeescript$svg=Svg$$module$target$coffeescript$svg=function(){function d(c,b,a){this.margin=a;a=b.split(":");b=a[0];a=a[1];this.aspectRatio=[parseInt(b),parseInt(a)];this.domElement="string"===typeof c?document.querySelector(c):c;this.container=d3.select(this.domElement).append("svg").attr("preserveAspectRatio","xMinYMin");this.chart=this.container.append("g")}d.prototype.resize=function(c){var b,a;null==c&&(c=this.margin);a=this.domElement.offsetWidth; +b=a/this.aspectRatio[0]*this.aspectRatio[1];this.width=a-c.left-c.right;this.height=b-c.bottom-c.top;this.container.attr("width",a).attr("height",b);return this.chart.attr("transform","translate("+c.left+","+c.top+")")};return d}();var defaultBarOptions$$module$target$coffeescript$defaults,defaultDonutOptions$$module$target$coffeescript$defaults,defaultHistogramOptions$$module$target$coffeescript$defaults,defaultLineOptions$$module$target$coffeescript$defaults,mergeOptions$$module$target$coffeescript$defaults;mergeOptions$$module$target$coffeescript$defaults=function(d,c){var b,a;a={};for(b in d)a[b]=d[b];for(b in c)a[b]=c[b];return a}; defaultLineOptions$$module$target$coffeescript$defaults={autoMargins:!0,aspectRatio:"16:9",dotSize:6,grid:!0,xScale:"ordinal",yScale:"linear",smoothLines:!1,stack:!1,tooltips:!0,xLabelFormat:null,yLabelFormat:null,tooltipFormat:function(d){return d3.format(",.0f")(d)},margin:{top:50,bottom:50,right:80,left:80}}; defaultBarOptions$$module$target$coffeescript$defaults={aspectRatio:"16:9",grid:!0,tooltips:!0,layout:"vertical",xLabelFormat:null,yLabelFormat:null,tooltipFormat:function(d){return d3.format(",.0f")(d)},barSpacing:.1,margin:{top:50,bottom:50,right:80,left:80}}; defaultHistogramOptions$$module$target$coffeescript$defaults={aspectRatio:"16:9",grid:!0,tooltips:!0,layout:"vertical",xLabelFormat:null,yLabelFormat:null,tooltipFormat:function(d){return d3.format(",.0f")(d)},bins:20,ticks:20,domain:null,margin:{top:50,bottom:50,right:80,left:80}};defaultDonutOptions$$module$target$coffeescript$defaults={aspectRatio:"16:9",holeSize:.5,margin:{top:0,bottom:0,right:0,left:0}}; diff --git a/src/coffeescript/svg.coffee b/src/coffeescript/svg.coffee index 38d79b8..5ba4cbe 100644 --- a/src/coffeescript/svg.coffee +++ b/src/coffeescript/svg.coffee @@ -3,7 +3,12 @@ class Svg [w, h] = aspectRatio.split(":") @aspectRatio = [parseInt(w), parseInt(h)] - @domElement = document.querySelector(selector) + # allow users to pass in a node or a selector string + @domElement = if typeof selector == "string" + document.querySelector(selector) + else + selector + @container = d3 .select(@domElement) .append("svg")