UNPKG

chartjs-plugin-funnel

Version:
3 lines (2 loc) 7.94 kB
!function(e){if("object"==typeof exports&&"undefined"!=typeof module){ module.exports=e(); }else if("function"==typeof define&&define.amd){ define([],e); }else{var t;((t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Chart||(t.Chart={})).Funnel=e()}}(function(){return function(){return function e(t,r,o){function a(i,l){if(!r[i]){if(!t[i]){var s="function"==typeof require&&require;if(!l&&s){ return s(i,!0); }if(n){ return n(i,!0); }var d=new Error("Cannot find module '"+i+"'");throw d.code="MODULE_NOT_FOUND",d}var u=r[i]={exports:{}};t[i][0].call(u.exports,function(e){return a(t[i][1][e]||e)},u,u.exports,e,t,r,o)}return r[i].exports}for(var n="function"==typeof require&&require,i=0;i<o.length;i++){ a(o[i]); }return a}}()({1:[function(e,t,r){},{}],2:[function(e,t,r){"use strict";var o=e(1);o="function"==typeof o?o:window.Chart,e(4)(o),e(3)(o),t.exports=o},{1:1,3:3,4:4}],3:[function(e,t,r){"use strict";t.exports=function(e){var t=e.helpers;e.defaults.funnel={hover:{mode:"label"},sort:"asc",gap:0,bottomWidth:null,topWidth:0,keep:"auto",elements:{borderWidth:0},tooltips:{callbacks:{title:function(e,t){return""},label:function(e,t){return t.labels[e.index]+": "+t.datasets[e.datasetIndex].data[e.index]}}},legendCallback:function(e){var t=[];t.push('<ul class="'+e.id+'-legend">');var r=e.data,o=r.datasets,a=r.labels;if(o.length){ for(var n=0;n<o[0].data.length;++n){ t.push('<li><span style="background-color:'+o[0].backgroundColor[n]+'"></span>'),a[n]&&t.push(a[n]),t.push("</li>"); } }return t.push("</ul>"),t.join("")},legend:{labels:{generateLabels:function(e){var r=e.data;return r.labels.length&&r.datasets.length?r.labels.map(function(o,a){var n=e.getDatasetMeta(0),i=r.datasets[0],l=n.data[a],s=l.custom||{},d=t.getValueAtIndexOrDefault,u=e.options.elements.trapezium;return{text:o,fillStyle:s.backgroundColor?s.backgroundColor:d(i.backgroundColor,a,u.backgroundColor),strokeStyle:s.borderColor?s.borderColor:d(i.borderColor,a,u.borderColor),lineWidth:s.borderWidth?s.borderWidth:d(i.borderWidth,a,u.borderWidth),hidden:isNaN(i.data[a])||n.data[a].hidden,index:a,_index:l._index}}):[]}},onClick:function(e,t){var r,o,a,n=t.index,i=this.chart;for(r=0,o=(i.data.datasets||[]).length;r<o;++r){ (a=i.getDatasetMeta(r)).data[n].hidden=!a.data[n].hidden; }i.update()}},scales:{xAxes:[{position:"left",type:"category",display:!1,categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{position:"left",type:"category",display:!1,categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}]}},e.controllers.funnel=e.DatasetController.extend({dataElementType:e.elements.Trapezium,initialize:function(r,o){if(e.controllers.bar.prototype.initialize.call(this,r,o),void 0!==r.options&&void 0!==r.options.sort&&"data"!==r.options.sort.substr(0,4)){var a=r.data.datasets[o],n=[];a.data.slice();t.each(a.data,function(e,t){n.push({index:t,value:e})}),n.sort(function(e,t){return"asc"===r.options.sort?e.value-t.value:t.value-e.value});var i=r.data.labels.map(function (e,t){ return r.data.labels[n[t].index]; });r.data.labels=i;for(var l=Object.keys(a),s=0,d=l.length;s<d;s++){var u=l[s],h=a[u];if(a.hasOwnProperty(u)&&Array.isArray(h)){var c=h.map(function (e,t){ return h[n[t].index]; });a[u]=c}}}},linkScales:function(){var e=this,t=e.getMeta(),r=e.getDataset();null!==t.yAxisID&&t.yAxisID in e.chart.scales||(t.yAxisID=r.yAxisID||e.chart.options.scales.yAxes[0].id),null!==t.xAxisID&&t.xAxisID in e.chart.scales||(t.xAxisID=r.xAxisID||e.chart.options.scales.xAxes[0].id)},update:function(e){var r=this,o=r.chart,a=o.chartArea,n=o.options,i=r.getMeta().data,l=n.elements.borderWidth||0,s=a.right-a.left-2*l,d=a.bottom-a.top-2*l,u=s,h=(n.topWidth<s?n.topWidth:s)||0;n.bottomWidth&&(u=n.bottomWidth<s?n.bottomWidth:s);var c=r.getDataset(),f=[],p=0,b=0;t.each(c.data,function(e,r){var a=t.getValueAtIndexOrDefault(c.backgroundColor,r),n=i[r].hidden;f.push({hidden:n,orgIndex:r,val:e,backgroundColor:a,borderColor:t.getValueAtIndexOrDefault(c.borderColor,r,a),label:t.getValueAtIndexOrDefault(c.label,r,o.data.labels[r])}),i[r].hidden||(p++,b=e>b?e:b)});var g=u/b,x=0;t.each(f,function(e,t){e._viewIndex=e.hidden?-1:x++});var v=n.gap||0,y=(d-(p-1)*v)/p;r.topWidth=h,r.dwRatio=g,r.elHeight=y,r.valAndLabels=f,t.each(i,function(t,o){r.updateElement(t,o,e)},r)},updateElement:function(e,r,o){var a,n,i,l,s,d,u=this,h=u.chart,c=h.chartArea,f=h.options,p=f.sort,b=u.dwRatio,g=u.elHeight,x=f.gap||0,v=f.elements.borderWidth||0,y="isosceles",m=u.valAndLabels[r],C=m._viewIndex<0?r:m._viewIndex,W=c.top+(C+1)*(g+x)-x,k=u.getMeta();if(e._xScale=u.getScaleForId(k.xAxisID),"asc"!==p&&"data-asc"!==p&&p){if("desc"===p||"data-desc"===p){var A=t.findNextWhere(u.valAndLabels,function(e){return!e.hidden},r);s=m.val*b,d=A?A.val*b:u.topWidth}}else{var _=t.findPreviousWhere(u.valAndLabels,function(e){return!e.hidden},r);s=_?_.val*b:u.topWidth,d=m.val*b}n=c.top+m.orgIndex*(g+x),"left"===f.keep?(y="scalene",i=c.left+s/2,l=c.left+d/2,a=i):"right"===f.keep?(y="scalene",i=c.right-s/2,l=c.right-d/2,a=i):a=(c.left+c.right)/2,t.extend(e,{_datasetIndex:u.index,_index:m.orgIndex,_model:{type:y,y:n,base:W>c.bottom?c.bottom:W,x:a,x1:i,x2:l,upperWidth:o||m.hidden?0:s,bottomWidth:o||m.hidden?0:d,borderWidth:v,backgroundColor:m&&m.backgroundColor,borderColor:m&&m.borderColor,label:m&&m.label}}),e.pivot()},removeHoverStyle:function(t){e.DatasetController.prototype.removeHoverStyle.call(this,t,this.chart.options.elements.trapezium)}})}},{}],4:[function(e,t,r){"use strict";t.exports=function(e){e.helpers;var t=e.defaults.global;t.elements.trapezium={backgroundColor:t.defaultColor,borderWidth:0,borderColor:t.defaultColor,borderSkipped:"bottom",type:"isosceles"};e.elements.Trapezium=e.elements.Rectangle.extend({getCorners:function(){var e=this._view,r=t.elements.trapezium,o=[],a=e.type||r.type,n=e.y,i=e.borderWidth||r.borderWidth,l=e.upperWidth/2,s=e.bottomWidth/2,d=i/2;if(d=d<0?0:d,"isosceles"==a){var u=e.x;o=[[u-s+d,e.base],[u-l+d,n+d],[u+l-d,n+d],[u+s-d,e.base]]}else if("scalene"==a){var h=e.x1,c=e.x2;o=[[c-s+d,e.base],[h-l+d,n+d],[h+l-d,n+d],[c+s-d,e.base]]}return o},draw:function(){var e=this._chart.ctx,r=this._view,o=t.elements.trapezium,a=this.getCorners();this._cornersCache=a,e.beginPath(),e.fillStyle=r.backgroundColor||o.backgroundColor,e.strokeStyle=r.borderColor||o.borderColor,e.lineWidth=r.borderWidth||o.borderWidth;var n=["bottom","left","top","right"].indexOf(r.borderSkipped||o.borderSkipped,0);function i(e){return a[(n+e)%4]}-1===n&&(n=0),e.moveTo.apply(e,i(0));for(var l=1;l<4;l++){ e.lineTo.apply(e,i(l)); }e.fill(),r.borderWidth&&e.stroke()},height:function(){var e=this._view;return e?e.base-e.y:0},inRange:function(e,t){return!!this._view&&function(e,t){for(var r=e[0],o=e[1],a=!1,n=0,i=t.length-1;n<t.length;i=n++){var l=t[n][0],s=t[n][1],d=t[i][0],u=t[i][1];s>o!=u>o&&r<(d-l)*(o-s)/(u-s)+l&&(a=!a)}return a}([e,t],this._cornersCache?this._cornersCache:this.getCorners())},inLabelRange:function(e){var t=this._view;if(!t){ return!1; }if("scalene"==t.type){ return t.x1>t.x2?e>=t.x2-t.bottomWidth/2&&e<=t.x1+t.upperWidth/2:e<=t.x2+t.bottomWidth/2&&e>=t.x1-t.upperWidth/2; }var r=Math.max(t.upperWidth,t.bottomWidth);return e>=t.x-r/2&&e<=t.x+r/2},tooltipPosition:function(){var e=this._view;return{x:e.x||e.x2,y:e.base-(e.base-e.y)/2}},getArea:function(){this._view;for(var e=0,t=this._cornersCache?this._cornersCache:this.getCorners(),r=0,o=t.length;r<o;r++){e+=t[r][0]*t[r==t.length-1?0:r+1][1]*.5,e-=t[r==t.length-1?0:r+1][0]*t[r][1]*.5}return Math.abs(e)},getCenterPoint:function(){var e,t,r,o,a,n=this._cornersCache?this._cornersCache:this.getCorners(),i=(this._view,0),l=0;for(e=0,t=n.length-1;e<n.length;t=e,e++){ o=n[e],a=n[t],r=o[0]*a[1]-a[0]*o[1],i+=(o[0]+a[0])*r,l+=(o[1]+a[1])*r; }return{x:i/(r=6*this.getArea()),y:l/r}}})}},{}]},{},[2])(2)}); //# sourceMappingURL=chart.funnel.min.js.map