quoslibero
Version:
FusionCharts JavaScript charting framework
1 lines • 3.13 kB
JavaScript
import{SmartRenderer}from'../../../../../fc-core/src/component-interface';import TimeConverter from'../../../../../fc-utils/src/time-converter';import{getTouchEvent}from'../../../../../fc-core/src/lib';const START='start',END='end';class Label extends SmartRenderer{constructor(){super(),this._dimensions={}}configureAttributes(a={}){super.configureAttributes(a);let b=this.config,c=this.getFromEnv('baseTextStyle');for(let c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);b.style={label:Object.assign({},b._defaultLabelStyle,c,b.style.label),labelBg:Object.assign({},b._defaultLabelBgStyle,b.style.labelBg)}}__setDefaultConfig(){super.__setDefaultConfig();let a=this.config;a.showLabel=!1,a._defaultLabelStyle={fill:'#f3f3f3',"font-size":'11px',"font-weight":600,"vertical-align":'middle',cursor:'move'},a._defaultLabelBgStyle={fill:'#5f5f5f',cursor:'move'},a['border-horizontal-padding']=5,a['border-vertical-padding']=3,a.formatter=TimeConverter.formatter('%b %d, %Y')}setDimension(a){this._dimensions=a}getDimension(){return this._dimensions}attachHandlers(){let a,b,c,d,f,g,h=this,i=h.getFromEnv('animationManager'),j=h.getLinkedParent(),k=j.getFromEnv('timeNavigator');h.addEventListener('fc-dragstart',h.dragstartHandler||(h.dragstartHandler=function(d){c=getTouchEvent(d).clientX,a=j.getCurrentBrushDimensions(),k.config.labelsGettingDragged=!0,b=d.originalEvent.target,j.config.pointerReleasedOnParent=!1})),h.addEventListener('fc-dragmove',h.dragmoveHandler||(h.dragmoveHandler=function(b){i.setAnimationState('timenavSqueeze'),d=getTouchEvent(b).clientX-c,'leftLabel'===h.config.type?(f=a.x+d,g=a.x+a.width):(f=a.x,g=a.x+a.width+d),k.validateDomain([f,g],h.config.type)})),h.addEventListener('fc-dragend',h.dragendHandler||(h.dragendHandler=function(a){i.setAnimationState('timenavSqueeze'),k.config.labelsGettingDragged=!1,b!==a.originalEvent.target&&j.hideAllLabels()}))}getLabelDimension(){let a=this,b=a.config,c=a.getFromEnv('smartLabel'),d=b.formatter;return c.setStyle(b.style.label),c.getOriSize(d.format(b.value))}draw(){let a,b,c,d,e,f,g,h,i,j=this,k=j.config,l=k.style.label,m=k.style.labelBg,n=j.getLinkedParent(),o=j.getFromEnv('timeNavigator').config,p=j.getFromEnv('smartLabel'),q=n.getMaxBrushDimensions(),r=j.getDimension(),s=r.x,t=k.formatter,u='leftLabel'===k.type?o.values[0]:o.values[1],v=t.format(u),w=r.y;p.setStyle(l),c=p.getOriSize(v),'leftLabel'===k.type?s-c.width>=q.x?(b=END,a=1):(b=START,a=-1):s+c.width<=q.x+q.width?(b=START,a=-1):(b=END,a=1),l['text-anchor']=b,k.showLabel&&(f=c.width,g=c.height,h=f+2*k['border-horizontal-padding'],i=g+2*k['border-vertical-padding'],d=s-a*k['border-horizontal-padding'],e=w-(g+2*k['border-vertical-padding'])/2,j.addGraphicalElement({el:'rect',attr:{x:b===START?s:s-h,y:w-i,width:h,height:i},css:m,shadow:[!0,1],label:'dragableLabelBackground',id:k.type+'dragableLabelBackground',component:j,container:{id:'brushGroup',label:'brushGroup',isParent:!0}}),j.addGraphicalElement({el:'text',attr:{x:d,y:e,text:v},css:l,id:k.type+'dragableLabel',label:'dragableLabel',component:j,container:{id:'brushGroup',label:'brushGroup',isParent:!0}}))}}export default Label;