quoslibero
Version:
FusionCharts JavaScript charting framework
1 lines • 2.8 kB
JavaScript
import{pluck,pluckNumber}from'../../../../fc-core/src/lib';import{trim}from'../utils';import AnnotationShape from'./annotation-shape';function getCharacterType(a){return'9'>=a&&'0'<=a||'-'===a||'.'===a?0:'z'>=a&&'a'<=a||'Z'>=a&&'A'<=a?1:2}class PathAnnotation extends AnnotationShape{getName(){return'path'}configureAttributes(a={}){super.configureAttributes(a);let b=this,c=b.rawConfig;b.config.pathStr=pluck(c.path),b.config.x=pluckNumber(c.x,0),b.config.y=pluckNumber(c.y,0),b.config.tox=pluckNumber(c.toX,b.config.x),b.config.toy=pluckNumber(c.toY,b.config.y),b.config.elementType='path'}getScaledPath(){let a,b,c,d,e,f=this,g=f.config.pathStr,h=[],k='';for(e=g&&g.length,c=0;c<e;c++){for(d=c,b='',a=getCharacterType(g[c]);d<e&&getCharacterType(g[d])===a;)b+=g[d],d++;b=trim(b),''!==b&&2>a&&h.push(b),c=d===c?d:d-1}for(e=h.length,c=0;c<e;)switch(k+=h[c],h[c].toLowerCase()){case'm':case'l':case't':k+=f.getScaledVal(+h[c+1],!0).toString()+',',k+=f.getScaledVal(+h[c+2],!1).toString(),c+=3;break;case's':case'q':k+=f.getScaledVal(+h[c+1],!0).toString()+',',k+=f.getScaledVal(+h[c+2],!1).toString()+',',k+=f.getScaledVal(+h[c+3],!0).toString()+',',k+=f.getScaledVal(+h[c+4],!1).toString(),c+=5;break;case'h':k+=f.getScaledVal(+h[c+1],!0).toString(),c+=2;break;case'v':k+=f.getScaledVal(+h[c+1],!1).toString(),c+=2;break;case'c':k+=f.getScaledVal(+h[c+1],!0).toString()+',',k+=f.getScaledVal(+h[c+2],!1).toString()+',',k+=f.getScaledVal(+h[c+3],!0).toString()+',',k+=f.getScaledVal(+h[c+4],!1).toString()+',',k+=f.getScaledVal(+h[c+5],!0).toString()+',',k+=f.getScaledVal(+h[c+6],!1).toString(),c+=7;break;case'a':k+=f.getScaledVal(+h[c+1],!0).toString()+',',k+=f.getScaledVal(+h[c+2],!1).toString()+',',k+=f.getScaledVal(+h[c+3],!0).toString()+',',k+=h[c+4]+',',k+=h[c+5]+',',k+=f.getScaledVal(+h[c+6],!0).toString()+',',k+=f.getScaledVal(+h[c+7],!1).toString(),c+=8;break;case'z':default:c++;}return k.toString()}updateAttr(){let a,b,c,d,e=this,f=e.config,g=f.calculatedAttrs,h={};a=pluckNumber(g.x,e.getScaledVal(f.x,!0)),b=pluckNumber(g.y,e.getScaledVal(f.y,!1)),c=pluckNumber(g.toX,a,e.getScaledVal(f.tox,!0)),d=pluckNumber(g.toY,b,e.getScaledVal(f.toy,!1)),f.pathStr?(h.path=e.getScaledPath(),h.transform=`T${a},${b}`):h.path=`M${a},${b}L${c},${d}`,e._setConfig('attr',h)}_getAnnotationAttrs(){let a,b,c,d,e,f=this,g=f.config,h=f._getConfig('attr')||{},i=g.borderThickness,j=g.dashArrayStr,k=g.color;return(h.stroke=k,f.rawConfig.color&&(h.fill=k),h['stroke-width']=f.getScaledVal(i),h['stroke-dasharray']=j,a=h.x||f.getScaledVal(g.x,!0),b=h.y||f.getScaledVal(g.y,!1),c=h.toX||f.getScaledVal(g.tox,!0),d=h.toY||f.getScaledVal(g.toy,!1),h.path)?h:(e=f.getScaledPath(),e?(h.path=e,h.transform=h.transform||`T${a},${b}`):h.path=h.path||`M${a},${b}L${c},${d}`,h)}}export default PathAnnotation;