quoslibero
Version:
FusionCharts JavaScript charting framework
1 lines • 2.89 kB
JavaScript
import ColumnDataset from'../column';import{toRaphaelColor,getFirstValue,regex,HASHSTRING,fcEach,pluckNumber,getLightColor}from'../../../../fc-core/src/lib';import marimekkoAnimation from'./index.animation';import{addDep}from'../../../../fc-core/src/dependency-manager';let dropHash=regex.dropHypeash,math=Math,mathRound=math.round,mathAbs=math.abs;addDep({name:'marimekkoAnimation',type:'animationRule',extension:marimekkoAnimation});class MarimekkoDataset extends ColumnDataset{constructor(){super(),this.config.groupName='column'}getType(){return'dataset'}getName(){return'marimekko'}configure(a){fcEach(a.data,function(a){a&&(a.value=mathAbs(a.value))}),super.configure(a)}_addLegend(){var a,b,c,d,e,f=this,g=f.config,h=f.getFromEnv('legend'),i=pluckNumber(f.getFromEnv('chart-attrib').useplotgradientcolor,1),j=g.legendSymbolColor;a=getLightColor(j,60).replace(dropHash,HASHSTRING),i?(e=getLightColor(j,40),b={FCcolor:{color:j+','+j+','+e+','+j+','+j,ratio:'0,70,30',angle:270,alpha:'100,100,100,100,100'}}):b={FCcolor:{color:j,angle:0,ratio:'0',alpha:'100'}},c={enabled:g.includeInLegend,type:f.type,label:getFirstValue(f.config.JSONData.seriesname)},g.includeinlegend?(d=h.getItem(f.config.legendItemId),!d&&(f.config.legendItemId=h.createItem(f),d=h.getItem(f.config.legendItemId),f.addExtEventListener('fc-click',function(){d.itemClickFn()},d)),d.configure(c),d.setStateCosmetics('default',{symbol:{fill:toRaphaelColor(b),rawFillColor:b.FCcolor.color,stroke:toRaphaelColor(a)}}),f.getState('visible')?d.removeLegendState('hidden'):d.setLegendState('hidden')):f.config.legendItemId&&h.disposeItem(f.config.legendItemId)}searchIndex(a,b){for(var c,d,e=this,f=e.getFromEnv('xAxis'),g=0,h=b.length-1,i=h;g<=i;)if(c=Math.round((g+i)/2)||0,d=f.getPixel(b[c].x)+b[c].columnWidth/2,d<a)g=c+1;else if(d>a)i=c-1;else return c;return g}allocatePosition(){this.getLinkedParent()._setStackDimensions(),super.allocatePosition()}_getHoveredPlot(a,b){var c,d,e,f,g=this,h=g.getLinkedParent(),i=h.getstackConf(),j=g.getFromEnv('chartConfig'),k=h.config,l=j.plotborderthickness,m=j.showplotborder,n=i.length-1;return l=m?l:0,c=l/2,c=0==c%2?c+1:Math.round(c),d=a+c,f=e&&k.datasetIndex||g.searchIndex(d,i),k.datasetIndex||(k.datasetIndex=f),e=g._checkPointerOverColumn(f,a,b),e?delete k.datasetIndex:g.index===n&&delete k.datasetIndex,e}setColumnPosition(){return this}fineTunePlotDimension(a,b,c,d,e){var f=this,g=f.getLinkedParent(),h=g.getstackConf(),i=f.getFromEnv('chart'),j=i.config,k=j.plotborderthickness,l=i.getChildren('canvas')[0].config,m=l.canvasBorderWidth,n=0<m,o=l.canvasRight,p=l.canvasTop,q=l.canvasLeft;return h.length?(d=h[e].columnWidth,a-=d/2,parseInt(b,10)<=p&&(c-=p-b-+n,b=p-+n),1>=k&&(mathRound(a)<=q&&(d+=a,a=q-k/2+ +!!k-+n,d-=a),mathRound(a+d)>=o&&(d=o-a+k/2-+!!k+ +n)),{xPos:a,yPos:b,width:d,height:c}):{xPos:a,yPos:b,width:d,height:c}}}export default MarimekkoDataset;