funnel-graph-js
Advanced tools
Comparing version 1.3.4 to 1.3.5
@@ -0,1 +1,5 @@ | ||
### 1.3.5 (Mar 1, 2019) | ||
* Add method to create center line for shapes | ||
### 1.3.4 (Feb 27, 2019) | ||
@@ -2,0 +6,0 @@ |
@@ -566,2 +566,37 @@ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.FunnelGraph = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){ | ||
}, { | ||
key: "getPathMedian", | ||
value: function getPathMedian(i) { | ||
if (this.isVertical()) { | ||
var _cross = this.getCrossAxisPoints()[i]; | ||
var _next = this.getCrossAxisPoints()[i + 1]; | ||
var _Y2 = this.getMainAxisPoints(); | ||
var _X2 = []; | ||
var XNext = []; | ||
_cross.forEach(function (point, index) { | ||
var m = (point + _next[index]) / 2; | ||
_X2.push(m - 1); | ||
XNext.push(m + 1); | ||
}); | ||
return (0, _path.createVerticalPath)(i, _X2, XNext, _Y2); | ||
} | ||
var X = this.getMainAxisPoints(); | ||
var cross = this.getCrossAxisPoints()[i]; | ||
var next = this.getCrossAxisPoints()[i + 1]; | ||
var Y = []; | ||
var YNext = []; | ||
cross.forEach(function (point, index) { | ||
var m = (point + next[index]) / 2; | ||
Y.push(m - 1); | ||
YNext.push(m + 1); | ||
}); | ||
return (0, _path.createPath)(i, X, Y, YNext); | ||
} | ||
}, { | ||
key: "drawPaths", | ||
@@ -568,0 +603,0 @@ value: function drawPaths() { |
@@ -1,1 +0,1 @@ | ||
!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).FunnelGraph=t()}}(function(){return function a(o,s,c){function l(e,t){if(!s[e]){if(!o[e]){var n="function"==typeof require&&require;if(!t&&n)return n(e,!0);if(u)return u(e,!0);var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}var i=s[e]={exports:{}};o[e][0].call(i.exports,function(t){return l(o[e][1][t]||t)},i,i.exports,a,o,s,c)}return s[e].exports}for(var u="function"==typeof require&&require,t=0;t<c.length;t++)l(c[t]);return l}({1:[function(t,e,n){"use strict";e.exports=t("./src/js/main").default},{"./src/js/main":3}],2:[function(t,e,n){"use strict";function i(t){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}Object.defineProperty(n,"__esModule",{value:!0}),n.defaultColors=n.removeAttrs=n.setAttrs=n.createSVGElement=n.areEqual=n.getDefaultColors=n.generateLegendBackground=void 0;var a=function(e,n){"object"===i(n)&&Object.keys(n).forEach(function(t){e.setAttribute(t,n[t])})};n.setAttrs=a;n.removeAttrs=function(e){for(var t=arguments.length,n=new Array(1<t?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];n.forEach(function(t){e.removeAttribute(t)})};n.createSVGElement=function(t,e,n){var r=document.createElementNS("http://www.w3.org/2000/svg",t);return"object"===i(n)&&a(r,n),void 0!==e&&e.appendChild(r),r};n.generateLegendBackground=function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"horizontal";return"string"==typeof t?"background-color: ".concat(t):1===t.length?"background-color: ".concat(t[0]):"background-image: linear-gradient(".concat("horizontal"===e?"to right, ":"").concat(t.join(", "),")")};var o=["#FF4589","#FF5050","#05DF9D","#4FF2FD","#2D9CDB","#A0BBFF","#FFD76F","#F2C94C","#FF9A9A","#FFB178"];n.defaultColors=o;n.getDefaultColors=function(t){for(var e=[].concat(o),n=[],r=0;r<t;r++){var i=Math.abs(Math.round(Math.random()*(e.length-1)));n.push(e[i]),e.splice(i,1)}return n};n.areEqual=function(t,e){var n=Object.prototype.toString.call(t);if(n!==Object.prototype.toString.call(e))return!1;if("[object Array]"!==n)return!1;if(t.length!==e.length)return!1;for(var r=0;r<t.length;r++){var i=Object.prototype.toString.call(t[r]);if(i!==Object.prototype.toString.call(e[r]))return!1;if("[object Array]"===i){if(t[r].length!==e[r].length)return!1;for(var a=0;a<t[r].length;a++)if(t[r][a]!==e[r][a])return!1}else if(t[r]!==e[r])return!1}return!0}},{}],3:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var f=t("./number"),h=t("./path"),l=t("./graph");function i(t){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function g(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function a(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var r=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.containerSelector=t.container,this.gradientDirection=t.gradientDirection&&"vertical"===t.gradientDirection?"vertical":"horizontal",this.direction=t.direction&&"vertical"===t.direction?"vertical":"horizontal",this.labels=e.getLabels(t),this.subLabels=e.getSubLabels(t),this.values=e.getValues(t),this.percentages=this.createPercentages(),this.colors=t.data.colors||(0,l.getDefaultColors)(this.is2d()?this.getSubDataSize():2),this.displayPercent=t.displayPercent||!1,this.data=t.data,this.height=t.height,this.width=t.width}var t,n,r;return t=e,r=[{key:"getSubLabels",value:function(t){if(!t.data)throw new Error("Data is missing");var e=t.data;return void 0===e.subLabels?[]:e.subLabels}},{key:"getLabels",value:function(t){if(!t.data)throw new Error("Data is missing");var e=t.data;return void 0===e.labels?[]:e.labels}},{key:"getValues",value:function(t){if(!t.data)return[];var e=t.data;return"object"===i(e)?e.values:[]}}],(n=[{key:"getMainAxisPoints",value:function(){for(var t=this.getDataSize(),e=[],n=this.isVertical()?this.getHeight():this.getWidth(),r=0;r<=t;r++)e.push((0,f.roundPoint)(n*r/t));return e}},{key:"getCrossAxisPoints",value:function(){var t=[],e=this.getFullDimension(),n=e/2;if(this.is2d()){var r=this.getValues2d(),i=Math.max.apply(Math,g(r));r.push(g(r).pop()),t.push(r.map(function(t){return(0,f.roundPoint)((i-t)/i*n)}));for(var a=this.getPercentages2d(),o=t[0],s=1;s<this.getSubDataSize();s++){for(var c=t[s-1],l=[],u=0;u<this.getDataSize();u++)l.push((0,f.roundPoint)(c[u]+(e-2*o[u])*(a[u][s-1]/100)));l.push([].concat(l).pop()),t.push(l)}t.push(o.map(function(t){return e-t}))}else{var h=Math.max.apply(Math,g(this.values)),d=g(this.values).concat(g(this.values).pop());t.push(d.map(function(t){return(0,f.roundPoint)((h-t)/h*n)})),t.push(t[0].map(function(t){return e-t}))}return t}},{key:"getGraphType",value:function(){return this.values&&this.values[0]instanceof Array?"2d":"normal"}},{key:"is2d",value:function(){return"2d"===this.getGraphType()}},{key:"isVertical",value:function(){return"vertical"===this.direction}},{key:"getDataSize",value:function(){return this.values.length}},{key:"getSubDataSize",value:function(){return this.values[0].length}},{key:"getFullDimension",value:function(){return this.isVertical()?this.getWidth():this.getHeight()}},{key:"addLabels",value:function(){var u=this,h=document.createElement("div");h.setAttribute("class","svg-funnel-js__labels"),this.percentages.forEach(function(t,n){var e=document.createElement("div");e.setAttribute("class","svg-funnel-js__label label-".concat(n+1));var r=document.createElement("div");r.setAttribute("class","label__title"),r.textContent=u.labels[n]||"";var i=document.createElement("div");i.setAttribute("class","label__value");var a=u.is2d()?u.getValues2d()[n]:u.values[n];i.textContent=(0,f.formatNumber)(a);var o=document.createElement("div");if(o.setAttribute("class","label__percentage"),100!==t&&(o.textContent="".concat(t.toString(),"%")),e.appendChild(i),e.appendChild(r),u.displayPercent&&e.appendChild(o),u.is2d()){var s=document.createElement("div");s.setAttribute("class","label__segment-percentages");var c='<ul class="segment-percentage__list">',l=u.getPercentages2d();u.subLabels.forEach(function(t,e){c+="<li>".concat(u.subLabels[e],':\n <span class="percentage__list-label">').concat(l[n][e],"%</span>\n </li>")}),c+="</ul>",s.innerHTML=c,e.appendChild(s)}h.appendChild(e)}),this.container.appendChild(h)}},{key:"addSubLabels",value:function(){var n=this;if(this.subLabels){var t=document.createElement("div");t.setAttribute("class","svg-funnel-js__subLabels");var r="";this.subLabels.forEach(function(t,e){r+='<div class="svg-funnel-js__subLabel svg-funnel-js__subLabel-'.concat(e+1,'">\n <div class="svg-funnel-js__subLabel--color" \n style="').concat((0,l.generateLegendBackground)(n.colors[e],n.gradientDirection),'"></div>\n <div class="svg-funnel-js__subLabel--title">').concat(t,"</div>\n</div>")}),t.innerHTML=r,this.container.appendChild(t)}}},{key:"createContainer",value:function(){if(!this.containerSelector)throw new Error("Container is missing");this.container=document.querySelector(this.containerSelector),this.container.classList.add("svg-funnel-js"),this.graphContainer=document.createElement("div"),this.graphContainer.classList.add("svg-funnel-js__container"),this.container.appendChild(this.graphContainer),"vertical"===this.direction&&this.container.classList.add("svg-funnel-js--vertical")}},{key:"setValues",value:function(t){return this.values=t,this}},{key:"setDirection",value:function(t){return this.direction=t,this}},{key:"setHeight",value:function(t){return this.height=t,this}},{key:"setWidth",value:function(t){return this.width=t,this}},{key:"getValues2d",value:function(){var e=[];return this.values.forEach(function(t){e.push(t.reduce(function(t,e){return t+e},0))}),e}},{key:"getPercentages2d",value:function(){var n=[];return this.values.forEach(function(t){var e=t.reduce(function(t,e){return t+e},0);n.push(t.map(function(t){return(0,f.roundPoint)(100*t/e)}))}),n}},{key:"createPercentages",value:function(){var t=[];t=this.is2d()?this.getValues2d():g(this.values);var e=Math.max.apply(Math,g(t));return t.map(function(t){return(0,f.roundPoint)(100*t/e)})}},{key:"applyGradient",value:function(t,e,n,r){var i=null===t.querySelector("defs")?(0,l.createSVGElement)("defs",t):t.querySelector("defs"),a="funnelGradient-".concat(r),o=(0,l.createSVGElement)("linearGradient",i,{id:a});"vertical"===this.gradientDirection&&(0,l.setAttrs)(o,{x1:"0",x2:"0",y1:"0",y2:"1"});for(var s=n.length,c=0;c<s;c++)(0,l.createSVGElement)("stop",o,{"stop-color":n[c],offset:"".concat(Math.round(100*c/(s-1)),"%")});(0,l.setAttrs)(e,{fill:'url("#'.concat(a,'")'),stroke:'url("#'.concat(a,'")')})}},{key:"makeSVG",value:function(){for(var t=(0,l.createSVGElement)("svg",this.graphContainer,{width:this.getWidth(),height:this.getHeight()}),e=this.getCrossAxisPoints().length-1,n=0;n<e;n++){var r=(0,l.createSVGElement)("path",t),i=this.is2d()?this.colors[n]:this.colors,a="string"==typeof i||1===i.length?"solid":"gradient";"solid"===a?(0,l.setAttrs)(r,{fill:i,stroke:i}):"gradient"===a&&this.applyGradient(t,r,i,n+1),t.appendChild(r)}this.graphContainer.appendChild(t)}},{key:"getSVG",value:function(){var t=this.container.querySelector("svg");if(!t)throw new Error("No SVG found inside of the container");return t}},{key:"getWidth",value:function(){return this.width||this.graphContainer.clientWidth}},{key:"getHeight",value:function(){return this.height||this.graphContainer.clientHeight}},{key:"getPathDefinitions",value:function(){for(var t=this.getCrossAxisPoints().length-1,e=[],n=0;n<t;n++)if(this.isVertical()){var r=this.getCrossAxisPoints()[n],i=this.getCrossAxisPoints()[n+1],a=this.getMainAxisPoints(),o=(0,h.createVerticalPath)(n,r,i,a);e.push(o)}else{var s=this.getMainAxisPoints(),c=this.getCrossAxisPoints()[n],l=this.getCrossAxisPoints()[n+1],u=(0,h.createPath)(n,s,c,l);e.push(u)}return e}},{key:"drawPaths",value:function(){var n=this.getSVG().querySelectorAll("path");this.getPathDefinitions().forEach(function(t,e){n[e].setAttribute("d",t)})}},{key:"draw",value:function(){this.createContainer(),this.makeSVG(),this.addLabels(),this.is2d()&&this.addSubLabels(),this.drawPaths()}},{key:"makeVertical",value:function(){if("vertical"===this.direction)return!0;this.direction="vertical",this.container.classList.add("svg-funnel-js--vertical");var t=this.getSVG(),e=this.getHeight(),n=this.getWidth();return(0,l.setAttrs)(t,{height:e,width:n}),this.drawPaths(),!0}},{key:"makeHorizontal",value:function(){if("horizontal"===this.direction)return!0;this.direction="horizontal",this.container.classList.remove("svg-funnel-js--vertical");var t=this.getSVG(),e=this.getHeight(),n=this.getWidth();return(0,l.setAttrs)(t,{height:e,width:n}),this.drawPaths(),!0}},{key:"toggleDirection",value:function(){"horizontal"===this.direction?this.makeVertical():this.makeHorizontal()}},{key:"gradientMakeVertical",value:function(){return"vertical"===this.gradientDirection||(this.gradientDirection="vertical",this.graphContainer.querySelectorAll("linearGradient").forEach(function(t){(0,l.setAttrs)(t,{x1:"0",x2:"0",y1:"0",y2:"1"})})),!0}},{key:"gradientMakeHorizontal",value:function(){return"horizontal"===this.gradientDirection||(this.gradientDirection="horizontal",this.graphContainer.querySelectorAll("linearGradient").forEach(function(t){(0,l.removeAttrs)(t,"x1","x2","y1","y2")})),!0}},{key:"gradientToggleDirection",value:function(){"horizontal"===this.gradientDirection?this.gradientMakeVertical():this.gradientMakeHorizontal()}},{key:"updateWidth",value:function(t){this.width=t;var e=this.getSVG(),n=this.getWidth();return(0,l.setAttrs)(e,{width:n}),this.drawPaths(),!0}},{key:"updateHeight",value:function(t){this.height=t;var e=this.getSVG(),n=this.getHeight();return(0,l.setAttrs)(e,{height:n}),this.drawPaths(),!0}},{key:"updateData",value:function(t){void 0!==t.labels&&(this.container.querySelector(".svg-funnel-js__labels").remove(),this.labels=e.getLabels({data:t}),this.addLabels()),void 0!==t.colors&&(this.colors=t.colors||(0,l.getDefaultColors)(this.is2d()?this.getSubDataSize():2)),void 0!==t.values&&(Object.prototype.toString.call(t.values[0])!==Object.prototype.toString.call(this.values[0])?(this.container.querySelector("svg").remove(),this.values=e.getValues({data:t}),this.makeSVG()):this.values=e.getValues({data:t}),this.drawPaths()),void 0!==t.subLabels&&(this.container.querySelector(".svg-funnel-js__subLabels").remove(),this.subLabels=e.getSubLabels({data:t}),this.addSubLabels())}},{key:"update",value:function(t){var i=this;void 0!==t.displayPercent&&this.displayPercent!==t.displayPercent&&(!0===this.displayPercent?this.container.querySelectorAll(".label__percentage").forEach(function(t){t.remove()}):this.container.querySelectorAll(".svg-funnel-js__label").forEach(function(t,e){var n=i.percentages[e],r=document.createElement("div");r.setAttribute("class","label__percentage"),100!==n&&(r.textContent="".concat(n.toString(),"%"),t.appendChild(r))})),void 0!==t.height&&this.updateHeight(t.height),void 0!==t.width&&this.updateWidth(t.width),void 0!==t.gradientDirection&&("vertical"===t.gradientDirection?this.gradientMakeVertical():"horizontal"===t.gradientDirection&&this.gradientMakeHorizontal()),void 0!==t.direction&&("vertical"===t.direction?this.makeVertical():"horizontal"===t.direction&&this.makeHorizontal()),void 0!==t.data&&this.updateData(t.data)}}])&&a(t.prototype,n),r&&a(t,r),e}();n.default=r},{"./graph":2,"./number":4,"./path":5}],4:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.formatNumber=n.roundPoint=void 0;n.roundPoint=function(t){return Math.round(10*t)/10};n.formatNumber=function(t){return Number(t).toFixed().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,")}},{}],5:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.createVerticalPath=n.createPath=n.createVerticalCurves=n.createCurves=void 0;var i=t("./number");function s(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}var c=function(t,e,n,r){return" C".concat((0,i.roundPoint)((n+t)/2),",").concat(e," ")+"".concat((0,i.roundPoint)((n+t)/2),",").concat(r," ").concat(n,",").concat(r)};n.createCurves=c;var l=function(t,e,n,r){return" C".concat(t,",").concat((0,i.roundPoint)((r+e)/2)," ")+"".concat(n,",").concat((0,i.roundPoint)((r+e)/2)," ").concat(n,",").concat(r)};n.createVerticalCurves=l;n.createPath=function(t,e,n,r){for(var i="M".concat(e[0],",").concat(n[0]),a=0;a<e.length-1;a++)i+=c(e[a],n[a],e[a+1],n[a+1]);i+=" L".concat(s(e).pop(),",").concat(s(r).pop());for(var o=e.length-1;0<o;o--)i+=c(e[o],r[o],e[o-1],r[o-1]);return i+=" Z"};n.createVerticalPath=function(t,e,n,r){for(var i="M".concat(e[0],",").concat(r[0]),a=0;a<e.length-1;a++)i+=l(e[a],r[a],e[a+1],r[a+1]);i+=" L".concat(s(n).pop(),",").concat(s(r).pop());for(var o=e.length-1;0<o;o--)i+=l(n[o],r[o],n[o-1],r[o-1]);return i+=" Z"}},{"./number":4}]},{},[1])(1)}); | ||
!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).FunnelGraph=t()}}(function(){return function a(o,s,c){function u(e,t){if(!s[e]){if(!o[e]){var n="function"==typeof require&&require;if(!t&&n)return n(e,!0);if(l)return l(e,!0);var i=new Error("Cannot find module '"+e+"'");throw i.code="MODULE_NOT_FOUND",i}var r=s[e]={exports:{}};o[e][0].call(r.exports,function(t){return u(o[e][1][t]||t)},r,r.exports,a,o,s,c)}return s[e].exports}for(var l="function"==typeof require&&require,t=0;t<c.length;t++)u(c[t]);return u}({1:[function(t,e,n){"use strict";e.exports=t("./src/js/main").default},{"./src/js/main":3}],2:[function(t,e,n){"use strict";function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}Object.defineProperty(n,"__esModule",{value:!0}),n.defaultColors=n.removeAttrs=n.setAttrs=n.createSVGElement=n.areEqual=n.getDefaultColors=n.generateLegendBackground=void 0;var a=function(e,n){"object"===r(n)&&Object.keys(n).forEach(function(t){e.setAttribute(t,n[t])})};n.setAttrs=a;n.removeAttrs=function(e){for(var t=arguments.length,n=new Array(1<t?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];n.forEach(function(t){e.removeAttribute(t)})};n.createSVGElement=function(t,e,n){var i=document.createElementNS("http://www.w3.org/2000/svg",t);return"object"===r(n)&&a(i,n),void 0!==e&&e.appendChild(i),i};n.generateLegendBackground=function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"horizontal";return"string"==typeof t?"background-color: ".concat(t):1===t.length?"background-color: ".concat(t[0]):"background-image: linear-gradient(".concat("horizontal"===e?"to right, ":"").concat(t.join(", "),")")};var o=["#FF4589","#FF5050","#05DF9D","#4FF2FD","#2D9CDB","#A0BBFF","#FFD76F","#F2C94C","#FF9A9A","#FFB178"];n.defaultColors=o;n.getDefaultColors=function(t){for(var e=[].concat(o),n=[],i=0;i<t;i++){var r=Math.abs(Math.round(Math.random()*(e.length-1)));n.push(e[r]),e.splice(r,1)}return n};n.areEqual=function(t,e){var n=Object.prototype.toString.call(t);if(n!==Object.prototype.toString.call(e))return!1;if("[object Array]"!==n)return!1;if(t.length!==e.length)return!1;for(var i=0;i<t.length;i++){var r=Object.prototype.toString.call(t[i]);if(r!==Object.prototype.toString.call(e[i]))return!1;if("[object Array]"===r){if(t[i].length!==e[i].length)return!1;for(var a=0;a<t[i].length;a++)if(t[i][a]!==e[i][a])return!1}else if(t[i]!==e[i])return!1}return!0}},{}],3:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var f=t("./number"),h=t("./path"),u=t("./graph");function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function g(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function a(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}var i=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.containerSelector=t.container,this.gradientDirection=t.gradientDirection&&"vertical"===t.gradientDirection?"vertical":"horizontal",this.direction=t.direction&&"vertical"===t.direction?"vertical":"horizontal",this.labels=e.getLabels(t),this.subLabels=e.getSubLabels(t),this.values=e.getValues(t),this.percentages=this.createPercentages(),this.colors=t.data.colors||(0,u.getDefaultColors)(this.is2d()?this.getSubDataSize():2),this.displayPercent=t.displayPercent||!1,this.data=t.data,this.height=t.height,this.width=t.width}var t,n,i;return t=e,i=[{key:"getSubLabels",value:function(t){if(!t.data)throw new Error("Data is missing");var e=t.data;return void 0===e.subLabels?[]:e.subLabels}},{key:"getLabels",value:function(t){if(!t.data)throw new Error("Data is missing");var e=t.data;return void 0===e.labels?[]:e.labels}},{key:"getValues",value:function(t){if(!t.data)return[];var e=t.data;return"object"===r(e)?e.values:[]}}],(n=[{key:"getMainAxisPoints",value:function(){for(var t=this.getDataSize(),e=[],n=this.isVertical()?this.getHeight():this.getWidth(),i=0;i<=t;i++)e.push((0,f.roundPoint)(n*i/t));return e}},{key:"getCrossAxisPoints",value:function(){var t=[],e=this.getFullDimension(),n=e/2;if(this.is2d()){var i=this.getValues2d(),r=Math.max.apply(Math,g(i));i.push(g(i).pop()),t.push(i.map(function(t){return(0,f.roundPoint)((r-t)/r*n)}));for(var a=this.getPercentages2d(),o=t[0],s=1;s<this.getSubDataSize();s++){for(var c=t[s-1],u=[],l=0;l<this.getDataSize();l++)u.push((0,f.roundPoint)(c[l]+(e-2*o[l])*(a[l][s-1]/100)));u.push([].concat(u).pop()),t.push(u)}t.push(o.map(function(t){return e-t}))}else{var h=Math.max.apply(Math,g(this.values)),d=g(this.values).concat(g(this.values).pop());t.push(d.map(function(t){return(0,f.roundPoint)((h-t)/h*n)})),t.push(t[0].map(function(t){return e-t}))}return t}},{key:"getGraphType",value:function(){return this.values&&this.values[0]instanceof Array?"2d":"normal"}},{key:"is2d",value:function(){return"2d"===this.getGraphType()}},{key:"isVertical",value:function(){return"vertical"===this.direction}},{key:"getDataSize",value:function(){return this.values.length}},{key:"getSubDataSize",value:function(){return this.values[0].length}},{key:"getFullDimension",value:function(){return this.isVertical()?this.getWidth():this.getHeight()}},{key:"addLabels",value:function(){var l=this,h=document.createElement("div");h.setAttribute("class","svg-funnel-js__labels"),this.percentages.forEach(function(t,n){var e=document.createElement("div");e.setAttribute("class","svg-funnel-js__label label-".concat(n+1));var i=document.createElement("div");i.setAttribute("class","label__title"),i.textContent=l.labels[n]||"";var r=document.createElement("div");r.setAttribute("class","label__value");var a=l.is2d()?l.getValues2d()[n]:l.values[n];r.textContent=(0,f.formatNumber)(a);var o=document.createElement("div");if(o.setAttribute("class","label__percentage"),100!==t&&(o.textContent="".concat(t.toString(),"%")),e.appendChild(r),e.appendChild(i),l.displayPercent&&e.appendChild(o),l.is2d()){var s=document.createElement("div");s.setAttribute("class","label__segment-percentages");var c='<ul class="segment-percentage__list">',u=l.getPercentages2d();l.subLabels.forEach(function(t,e){c+="<li>".concat(l.subLabels[e],':\n <span class="percentage__list-label">').concat(u[n][e],"%</span>\n </li>")}),c+="</ul>",s.innerHTML=c,e.appendChild(s)}h.appendChild(e)}),this.container.appendChild(h)}},{key:"addSubLabels",value:function(){var n=this;if(this.subLabels){var t=document.createElement("div");t.setAttribute("class","svg-funnel-js__subLabels");var i="";this.subLabels.forEach(function(t,e){i+='<div class="svg-funnel-js__subLabel svg-funnel-js__subLabel-'.concat(e+1,'">\n <div class="svg-funnel-js__subLabel--color" \n style="').concat((0,u.generateLegendBackground)(n.colors[e],n.gradientDirection),'"></div>\n <div class="svg-funnel-js__subLabel--title">').concat(t,"</div>\n</div>")}),t.innerHTML=i,this.container.appendChild(t)}}},{key:"createContainer",value:function(){if(!this.containerSelector)throw new Error("Container is missing");this.container=document.querySelector(this.containerSelector),this.container.classList.add("svg-funnel-js"),this.graphContainer=document.createElement("div"),this.graphContainer.classList.add("svg-funnel-js__container"),this.container.appendChild(this.graphContainer),"vertical"===this.direction&&this.container.classList.add("svg-funnel-js--vertical")}},{key:"setValues",value:function(t){return this.values=t,this}},{key:"setDirection",value:function(t){return this.direction=t,this}},{key:"setHeight",value:function(t){return this.height=t,this}},{key:"setWidth",value:function(t){return this.width=t,this}},{key:"getValues2d",value:function(){var e=[];return this.values.forEach(function(t){e.push(t.reduce(function(t,e){return t+e},0))}),e}},{key:"getPercentages2d",value:function(){var n=[];return this.values.forEach(function(t){var e=t.reduce(function(t,e){return t+e},0);n.push(t.map(function(t){return(0,f.roundPoint)(100*t/e)}))}),n}},{key:"createPercentages",value:function(){var t=[];t=this.is2d()?this.getValues2d():g(this.values);var e=Math.max.apply(Math,g(t));return t.map(function(t){return(0,f.roundPoint)(100*t/e)})}},{key:"applyGradient",value:function(t,e,n,i){var r=null===t.querySelector("defs")?(0,u.createSVGElement)("defs",t):t.querySelector("defs"),a="funnelGradient-".concat(i),o=(0,u.createSVGElement)("linearGradient",r,{id:a});"vertical"===this.gradientDirection&&(0,u.setAttrs)(o,{x1:"0",x2:"0",y1:"0",y2:"1"});for(var s=n.length,c=0;c<s;c++)(0,u.createSVGElement)("stop",o,{"stop-color":n[c],offset:"".concat(Math.round(100*c/(s-1)),"%")});(0,u.setAttrs)(e,{fill:'url("#'.concat(a,'")'),stroke:'url("#'.concat(a,'")')})}},{key:"makeSVG",value:function(){for(var t=(0,u.createSVGElement)("svg",this.graphContainer,{width:this.getWidth(),height:this.getHeight()}),e=this.getCrossAxisPoints().length-1,n=0;n<e;n++){var i=(0,u.createSVGElement)("path",t),r=this.is2d()?this.colors[n]:this.colors,a="string"==typeof r||1===r.length?"solid":"gradient";"solid"===a?(0,u.setAttrs)(i,{fill:r,stroke:r}):"gradient"===a&&this.applyGradient(t,i,r,n+1),t.appendChild(i)}this.graphContainer.appendChild(t)}},{key:"getSVG",value:function(){var t=this.container.querySelector("svg");if(!t)throw new Error("No SVG found inside of the container");return t}},{key:"getWidth",value:function(){return this.width||this.graphContainer.clientWidth}},{key:"getHeight",value:function(){return this.height||this.graphContainer.clientHeight}},{key:"getPathDefinitions",value:function(){for(var t=this.getCrossAxisPoints().length-1,e=[],n=0;n<t;n++)if(this.isVertical()){var i=this.getCrossAxisPoints()[n],r=this.getCrossAxisPoints()[n+1],a=this.getMainAxisPoints(),o=(0,h.createVerticalPath)(n,i,r,a);e.push(o)}else{var s=this.getMainAxisPoints(),c=this.getCrossAxisPoints()[n],u=this.getCrossAxisPoints()[n+1],l=(0,h.createPath)(n,s,c,u);e.push(l)}return e}},{key:"getPathMedian",value:function(t){if(this.isVertical()){var e=this.getCrossAxisPoints()[t],i=this.getCrossAxisPoints()[t+1],n=this.getMainAxisPoints(),r=[],a=[];return e.forEach(function(t,e){var n=(t+i[e])/2;r.push(n-1),a.push(n+1)}),(0,h.createVerticalPath)(t,r,a,n)}var o=this.getMainAxisPoints(),s=this.getCrossAxisPoints()[t],c=this.getCrossAxisPoints()[t+1],u=[],l=[];return s.forEach(function(t,e){var n=(t+c[e])/2;u.push(n-1),l.push(n+1)}),(0,h.createPath)(t,o,u,l)}},{key:"drawPaths",value:function(){var n=this.getSVG().querySelectorAll("path");this.getPathDefinitions().forEach(function(t,e){n[e].setAttribute("d",t)})}},{key:"draw",value:function(){this.createContainer(),this.makeSVG(),this.addLabels(),this.is2d()&&this.addSubLabels(),this.drawPaths()}},{key:"makeVertical",value:function(){if("vertical"===this.direction)return!0;this.direction="vertical",this.container.classList.add("svg-funnel-js--vertical");var t=this.getSVG(),e=this.getHeight(),n=this.getWidth();return(0,u.setAttrs)(t,{height:e,width:n}),this.drawPaths(),!0}},{key:"makeHorizontal",value:function(){if("horizontal"===this.direction)return!0;this.direction="horizontal",this.container.classList.remove("svg-funnel-js--vertical");var t=this.getSVG(),e=this.getHeight(),n=this.getWidth();return(0,u.setAttrs)(t,{height:e,width:n}),this.drawPaths(),!0}},{key:"toggleDirection",value:function(){"horizontal"===this.direction?this.makeVertical():this.makeHorizontal()}},{key:"gradientMakeVertical",value:function(){return"vertical"===this.gradientDirection||(this.gradientDirection="vertical",this.graphContainer.querySelectorAll("linearGradient").forEach(function(t){(0,u.setAttrs)(t,{x1:"0",x2:"0",y1:"0",y2:"1"})})),!0}},{key:"gradientMakeHorizontal",value:function(){return"horizontal"===this.gradientDirection||(this.gradientDirection="horizontal",this.graphContainer.querySelectorAll("linearGradient").forEach(function(t){(0,u.removeAttrs)(t,"x1","x2","y1","y2")})),!0}},{key:"gradientToggleDirection",value:function(){"horizontal"===this.gradientDirection?this.gradientMakeVertical():this.gradientMakeHorizontal()}},{key:"updateWidth",value:function(t){this.width=t;var e=this.getSVG(),n=this.getWidth();return(0,u.setAttrs)(e,{width:n}),this.drawPaths(),!0}},{key:"updateHeight",value:function(t){this.height=t;var e=this.getSVG(),n=this.getHeight();return(0,u.setAttrs)(e,{height:n}),this.drawPaths(),!0}},{key:"updateData",value:function(t){void 0!==t.labels&&(this.container.querySelector(".svg-funnel-js__labels").remove(),this.labels=e.getLabels({data:t}),this.addLabels()),void 0!==t.colors&&(this.colors=t.colors||(0,u.getDefaultColors)(this.is2d()?this.getSubDataSize():2)),void 0!==t.values&&(Object.prototype.toString.call(t.values[0])!==Object.prototype.toString.call(this.values[0])?(this.container.querySelector("svg").remove(),this.values=e.getValues({data:t}),this.makeSVG()):this.values=e.getValues({data:t}),this.drawPaths()),void 0!==t.subLabels&&(this.container.querySelector(".svg-funnel-js__subLabels").remove(),this.subLabels=e.getSubLabels({data:t}),this.addSubLabels())}},{key:"update",value:function(t){var r=this;void 0!==t.displayPercent&&this.displayPercent!==t.displayPercent&&(!0===this.displayPercent?this.container.querySelectorAll(".label__percentage").forEach(function(t){t.remove()}):this.container.querySelectorAll(".svg-funnel-js__label").forEach(function(t,e){var n=r.percentages[e],i=document.createElement("div");i.setAttribute("class","label__percentage"),100!==n&&(i.textContent="".concat(n.toString(),"%"),t.appendChild(i))})),void 0!==t.height&&this.updateHeight(t.height),void 0!==t.width&&this.updateWidth(t.width),void 0!==t.gradientDirection&&("vertical"===t.gradientDirection?this.gradientMakeVertical():"horizontal"===t.gradientDirection&&this.gradientMakeHorizontal()),void 0!==t.direction&&("vertical"===t.direction?this.makeVertical():"horizontal"===t.direction&&this.makeHorizontal()),void 0!==t.data&&this.updateData(t.data)}}])&&a(t.prototype,n),i&&a(t,i),e}();n.default=i},{"./graph":2,"./number":4,"./path":5}],4:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.formatNumber=n.roundPoint=void 0;n.roundPoint=function(t){return Math.round(10*t)/10};n.formatNumber=function(t){return Number(t).toFixed().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,")}},{}],5:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.createVerticalPath=n.createPath=n.createVerticalCurves=n.createCurves=void 0;var r=t("./number");function s(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}var c=function(t,e,n,i){return" C".concat((0,r.roundPoint)((n+t)/2),",").concat(e," ")+"".concat((0,r.roundPoint)((n+t)/2),",").concat(i," ").concat(n,",").concat(i)};n.createCurves=c;var u=function(t,e,n,i){return" C".concat(t,",").concat((0,r.roundPoint)((i+e)/2)," ")+"".concat(n,",").concat((0,r.roundPoint)((i+e)/2)," ").concat(n,",").concat(i)};n.createVerticalCurves=u;n.createPath=function(t,e,n,i){for(var r="M".concat(e[0],",").concat(n[0]),a=0;a<e.length-1;a++)r+=c(e[a],n[a],e[a+1],n[a+1]);r+=" L".concat(s(e).pop(),",").concat(s(i).pop());for(var o=e.length-1;0<o;o--)r+=c(e[o],i[o],e[o-1],i[o-1]);return r+=" Z"};n.createVerticalPath=function(t,e,n,i){for(var r="M".concat(e[0],",").concat(i[0]),a=0;a<e.length-1;a++)r+=u(e[a],i[a],e[a+1],i[a+1]);r+=" L".concat(s(n).pop(),",").concat(s(i).pop());for(var o=e.length-1;0<o;o--)r+=u(n[o],i[o],n[o-1],i[o-1]);return r+=" Z"}},{"./number":4}]},{},[1])(1)}); |
{ | ||
"name": "funnel-graph-js", | ||
"version": "1.3.4", | ||
"version": "1.3.5", | ||
"description": "SVG Funnel Graph Javascript Library", | ||
@@ -5,0 +5,0 @@ "main": "main.js", |
@@ -427,2 +427,34 @@ /* eslint-disable no-trailing-spaces */ | ||
getPathMedian(i) { | ||
if (this.isVertical()) { | ||
const cross = this.getCrossAxisPoints()[i]; | ||
const next = this.getCrossAxisPoints()[i + 1]; | ||
const Y = this.getMainAxisPoints(); | ||
const X = []; | ||
const XNext = []; | ||
cross.forEach((point, index) => { | ||
const m = (point + next[index]) / 2; | ||
X.push(m - 1); | ||
XNext.push(m + 1); | ||
}); | ||
return createVerticalPath(i, X, XNext, Y); | ||
} | ||
const X = this.getMainAxisPoints(); | ||
const cross = this.getCrossAxisPoints()[i]; | ||
const next = this.getCrossAxisPoints()[i + 1]; | ||
const Y = []; | ||
const YNext = []; | ||
cross.forEach((point, index) => { | ||
const m = (point + next[index]) / 2; | ||
Y.push(m - 1); | ||
YNext.push(m + 1); | ||
}); | ||
return createPath(i, X, Y, YNext); | ||
} | ||
drawPaths() { | ||
@@ -429,0 +461,0 @@ const svg = this.getSVG(); |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
116843
1836