quoslibero
Version:
FusionCharts JavaScript charting framework
1 lines • 3.58 kB
JavaScript
import merge from'ramda/es/merge';import{componentFactory,BLANKSTRING,extend2,pluck}from'../../../../../fc-core/src/lib';import Axis from'../../../_internal/components/axis';import Canvas from'../../../_internal/components/canvas';import panelConfig from'./_utils/panel-configurer';import usConfig from'../../../../../fc-utils/src/number-converter/locales/en-US';const canvases=a=>a.match(/^canvas/),removeComponent=a=>a.remove(),getSpecifier=function(a,b){return'axis'===a?'log'===b?'$~s':'$s':'tooltip'===a?'$.2s':'crossline'===a?'$.2s':'referenceline'===a?'$.1~s':void 0},getSpecifierForValues=(a,b)=>{let c=Math.abs(b);if(0!==c&&1e-4>c)return'$e';return 1e-4<=c&&1>c||0===c?'$':a},visibleAxes=a=>a.visible,isLeftAligned=a=>'left'===a.align,isRightAligned=a=>'right'===a.align,isTopAligned=a=>'top'===a.align,isBottomAligned=a=>'bottom'===a.align,mergeBorderConfig=a=>{const b={leftBorder:!1,rightBorder:!1,topBorder:!1,bottomBorder:!1},{xConfigs:c,yConfigs:d}=a;return(c.find(isLeftAligned)||d.find(isLeftAligned))&&(b.leftBorder=!0),(c.find(isRightAligned)||d.find(isRightAligned))&&(b.rightBorder=!0),(c.find(isTopAligned)||d.find(isTopAligned))&&(b.topBorder=!0),(c.find(isBottomAligned)||d.find(isBottomAligned))&&(b.bottomBorder=!0),merge(a,b)};export default(a=>{let b,c=[],d=[],e=a.getFromEnv('baseTextStyle'),f={orientation:'bottom',align:'bottom',tickpadding:2,visible:!0,overlap:!1,domainline:!1,style:{"label-major":Object.assign({fill:'#818181'},e),"label-context":Object.assign({fill:'#818181'},e)}},g={tickarguments:[4,'s'],ticksize:5,tickpadding:7,visible:!0,overlap:!1,domainline:!1,style:{"label-major":Object.assign({"font-size":'11px'},e),"tick-mark-major":Object.assign({stroke:'#efefef'},e)}};const h=merge(f),i=merge(g),j=a.config,k=j.focusAxesX,l=j.focusAxesY,m=j.focusPanels.map(a=>merge(a,{x:a.x.map(a=>{let b=k[a.index],c=pluck(k[a.index].format,{});return b.timeFormatterFn='function'==typeof c.formatter?a=>c.formatter.call(b.scale,a):a=>b.scale.getFormattedTime&&b.scale.getFormattedTime(a),merge(h(a),panelConfig(k,a.index))}),y:a.y.map(a=>{let b=l[a.index],c=pluck(l[a.index].format,{});return b.formatLabelPrefix=c.prefix||BLANKSTRING,b.formatLabelSuffix=c.suffix||BLANKSTRING,b.scale.setLocale(extend2(extend2({},usConfig),{prefix:b.formatLabelPrefix,suffix:b.formatLabelSuffix})),b.formatterFn='function'==typeof c.formatter?a=>{let b=c.formatter(a);return b+''}:d=>{let e;return e='string'==typeof c.formatter?c.formatter:getSpecifierForValues(getSpecifier(d.type,l[a.index].type),d.value),b.scale.tickFormat(4,e)(d.value)},merge(i(a),panelConfig(l,a.index))})})),n=a.config.canvasAxisMap,o=a=>'left'===a||'right'===a;m.forEach(({x:b,y:d,plots:e},f)=>{const g=`canvas_${f}`;n[g]||(n[g]={x:[],y:[]}),b.filter(visibleAxes).forEach((b,c)=>{const d=`axesX_${f}_${c}`;b.align=b.align.toLowerCase(),['bottom','top'].includes(b.align)||(b.align='bottom'),n[g].x.push(d),componentFactory(a,Axis,d,1,[b])});let h={left:0,right:0};d.filter(visibleAxes).forEach((b,c)=>{const d=`axesY_${f}_${c}`;o(b.orientation)&&(b.align=b.orientation),b.orientation=b.align,b.domainline=0<h[b.align],h[b.align]++,'log'===b.type&&(b.tickarguments=[4,'~s']),n[g].y.push(d),componentFactory(a,Axis,d,1,[b])}),c.push(g),componentFactory(a,Canvas,g,1,[mergeBorderConfig({plotConfigs:e,tableMap:a.config.focusTableMap,xConfigs:b,yConfigs:d,enableGridLines:!0,enableMouseTracking:1,enableMarkers:1,enableInteraction:1})])}),b=Object.keys(a.getChildren()).filter(canvases),d=b.filter(a=>!c.includes(a)),d.forEach(b=>{a.getChildren(b).forEach(removeComponent)}),j.focusPanels=m});