UNPKG

quoslibero

Version:

FusionCharts JavaScript charting framework

1 lines 9.06 kB
import DragNodeDataset from'./dragnode';import{pluck,pluckNumber,getValidValue,parseUnsafeString,getDashStyle,HUNDREDSTRING,DASH_DEF,preDefStr,BLANK,toRaphaelColor,POINTER,BLANKSTRING,SHAPE_RECT,parseTooltext,getFirstColor}from'../../../../fc-core/src/lib';import{addDep}from'../../../../fc-core/src/dependency-manager';import connectorAnimation from'./connector-animation';let EVENTARGS=preDefStr.EVENTARGS,L='L',M='M',configStr=preDefStr.configStr,_getlinePath=function(a){var b,c=a.config,d=c.fromPointObj,e=c.toPointObj,f=c.fromX,g=c.fromY,h=c.toX,i=c.toY,j=[M,f,g];return c.arrowAtStart&&(b=d.config,j=b.shapeType===SHAPE_RECT?j.concat(DragNodeConnector._drawArrow(f,g,h,i,b.shapeArg.width,b.shapeArg.height)):j.concat(DragNodeConnector._drawArrow(f,g,h,i,b.shapeArg.radius))),c.arrowAtEnd&&(b=e.config,j=b.shapeType===SHAPE_RECT?j.concat(DragNodeConnector._drawArrow(h,i,f,g,b.shapeArg.width,b.shapeArg.height)):j.concat(DragNodeConnector._drawArrow(h,i,f,g,b.shapeArg.radius))),j.push(L,h,i),j},createGroup=function(a,b,c){var d=c.getFromEnv('animationManager');return d.setAnimation({el:'group',attr:{name:a},container:b,component:c,label:'group'})};addDep({name:'connectorAnimation',type:'animationRule',extension:connectorAnimation});class DragNodeConnector extends DragNodeDataset{getType(){return'dataset'}getName(){return'dragNodeConnector'}_setDatasetIndex(){var a=this,b=a.getLinkedParent().getChildren('connector');a.config.datasetIndex=b.indexOf(a)}configureAttributes(a){if(a)this.trimData(a),this.config.JSONData=a;else if(!a&&!this.config.JSONData)return!1;var b,c=this,d=c.getFromEnv('chart-attrib'),e=c.config,f=c.config.JSONData,g=f.connector,h=g&&g.length;for(e.connectorsTooltext=getValidValue(parseUnsafeString(pluck(f.connectortooltext,d.connectortooltext))),e.stdThickness=pluckNumber(f.stdthickness,1),e.conColor=getFirstColor(pluck(f.color,'FF5904')),e.conAlpha=pluck(f.alpha,HUNDREDSTRING),e.conDashGap=pluckNumber(f.dashgap,5),e.conDashLen=pluckNumber(f.dashlen,5),e.conDashed=!!pluckNumber(f.dashed,0),e.arrowAtStart=!!pluckNumber(f.arrowatstart,1),e.arrowAtEnd=!!pluckNumber(f.arrowatend,1),e.conStrength=pluckNumber(f.strength,1),e.toolTipSepChar=pluck(d.tooltipsepchar,' - '),e.showTooltip=pluckNumber(d.showtooltip,1),e.viewMode=pluckNumber(d.viewmode,1),e._refreshData=!0,c._setDatasetIndex('connector'),b=0;b<h;b+=1)this._setConfigure(b,g[b]);e._refreshData=!0}_setConfigure(a,b){var c,d,e,f=this,g=f.components.data||(f.components.data=[]),h=g[a]||(g[a]=g[a]={}),i=f.config,j=parseUnsafeString(pluck(b.label,b.name)),k=pluck(b.alpha,i.conAlpha),l=f.getFromEnv('smartLabel'),m=i.toolTipSepChar,n={FCcolor:{color:getFirstColor(pluck(b.color,i.conColor)),alpha:k}},o=i.connectorsTooltext,p=getValidValue(parseUnsafeString(pluck(b.tooltext,o))),q=!!pluckNumber(b.dashed,i.conDashed);l.setStyle(f.getFromEnv('dataLabelStyle')),l.useEllipsesOnOverflow(f.getFromEnv('chartConfig').useEllipsesWhenOverflow),e=l.getOriSize(j),d=h.config=h.config||(h.config={}),h.graphics||(h.graphics={}),c=!!i.showTooltip&&pluck(p,j?'$label':'$fromLabel'+m+'$toLabel'),d=h.config={_options:b,id:pluck(b.id,a).toString(),from:pluck(b.from,BLANK),to:pluck(b.to,BLANK),label:j,toolText:c,customToolText:p,color:n,index:a,dashStyle:q?getDashStyle(pluckNumber(b.dashlen,i.conDashLen),pluckNumber(b.dashgap,i.conDashGap)):DASH_DEF,dashed:b.dashed,dashlen:b.dashlen,dashgap:b.dashgap,arrowAtStart:!!pluckNumber(b.arrowatstart,i.arrowAtStart),arrowAtEnd:!!pluckNumber(b.arrowatend,i.arrowAtEnd),conStrength:pluckNumber(b.strength,i.conStrength),link:b.link,stdThickness:i.stdThickness,labelWidth:e.widht,labelHeight:e.height},d.datasetIndex=f.config.datasetIndex,d.add=b.add,d.update=b.update,i._refreshData&&delete h.removed}createContainer(){var a=this,b=a.getLinkedParent().getChildContainer();a.getContainer('connectorGroup')||a.addContainer('connectorGroup',createGroup('connectorGroup',b.connectorGroup,a)),a.getContainer('connectorDataLabelGroup')||a.addContainer('connectorDataLabelGroup',createGroup('connectorDataLabelGroup',b.connectorGroup,a))}draw(){var a,b,c,d,e,f,g,h=this,j=h.getLinkedParent(),k=h.config,l=h.components.data,m=h.getFromEnv('dataLabelStyle'),n=l.length,o=h.components.removeDataArr||[],p=o.length;for(h.createContainer(),k.cleared=!1,h.getContainer('connectorDataLabelGroup').css(m),f=0;f<n;f++)a=l[f],g=a.config,b=g.from,c=g.to,d=j.getNode(b),e=j.getNode(c),d&&e&&!0!==g.deleted&&h.drawConnector(a,d,e,f);for(h.config.drawn=!0,f=0;f<p;f++)h._removeDataVisuals(o.shift())}parsePlotAttributes(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p=this,q=p.getFromEnv('number-formatter'),r=a.config,s=r.eventArgs||(r.eventArgs={});r.fromPointObj=b,r.toPointObj=c,l=b.config,m=c.config,r.fromX=d=l._xPos,r.fromY=f=l._yPos,r.toX=e=m._xPos,r.toY=g=m._yPos,r._labelX=(d+e)/2,r._labelY=(f+g)/2,r.strokeWidth=h=r.conStrength*r.stdThickness,n=r.color,r.textBgColor=n&&n.FCcolor&&n.FCcolor.color,s.label=r.label,s.arrowAtStart=r.arrowAtStart,s.arrowAtEnd=r.arrowAtEnd,s.link=r.link,s.id=r.id,s.fromNodeId=l.id,s.toNodeId=m.id,r.toolText=parseTooltext(r.toolText,[3,83,84,85,86,87,88,89,90,91,92],{label:r.label,fromXValue:q.dataLabels(b.config.x),fromYValue:q.dataLabels(b.config.y),fromXDataValue:b.config.x,fromYDataValue:b.config.y,fromLabel:pluck(b.config.displayValue,b.config.id),toXValue:q.dataLabels(c.config.x),toYValue:q.dataLabels(c.config.y),toXDataValue:c.config.x,toYDataValue:c.config.y,toLabel:pluck(c.config.displayValue,c.config.id)}),l=b.config,m=c.config,j=l.startConnectors||(l.startConnectors={}),k=m.endConnectors||(m.endConnectors={}),o=a.config.id+'-'+l.id+'-'+m.id,j[o]=a,k[o]=a,i=_getlinePath(a),r.props={element:{attr:{path:i,"stroke-width":h,"stroke-dasharray":r.dashStyle,cursor:r.link?POINTER:BLANKSTRING,stroke:toRaphaelColor(n)}}}}allocatePosition(){var a,b,c,d,e,f,g,h=this,j=h.getLinkedParent(),k=h.components.data,l=k.length;for(a=0;a<l;a++)b=k[a],c=b.config,d=c.from,e=c.to,f=j.getNode(d),g=j.getNode(e),f&&g&&!0!==c.deleted&&h.parsePlotAttributes(b,f,g,a)}drawConnector(a){var b,c,d=this,e=d.getFromEnv('toolTipController'),f=d.getFromEnv('animationManager'),g=a.graphics,h=d.getContainer('connectorGroup'),i=a.config,j=i.toolText,k=i.eventArgs||(i.eventArgs={}),l=d.config,m=d.components.pool||{};a.removed||(b=c=g.graphic,!g.graphic&&m.graphic&&m.graphic.path&&m.graphic.path.length&&(c=g.graphic=m.graphic.path.shift()),b=f.setAnimation({el:c||'path',container:h,attr:i.props.element.attr,label:'path',component:d}),!c&&(g.graphic=b,b.on('fc-mousedown',d.mouseDown).on('fc-mousemove',d.mousemove).on('fc-mouseup',d.mouseup).hover(d.hoverIn,d.hoverOut)),b.show().data(EVENTARGS,k).data('viewMode',l.viewMode).data(configStr,i).data('dataset',d),l.showTooltip?e.enableToolTip(b,j):e.disableToolTip(b),d.drawLabel(a))}drawLabel(a){var b,c,d,e,f,g,h,j,k,l,m,n,o=this,p=o.getFromEnv('toolTipController'),q=o.config,r=o.getFromEnv('animationManager'),s=o.getContainer('connectorDataLabelGroup'),t=o.getFromEnv('dataLabelStyle'),u=o.components.data,v=o.components.pool||{},w=u.length,x=function(a){b=a.config,d=b.toolText,h=a.graphics,c=b.label,l=b._labelX,m=b._labelY,n=b.textBgColor,c?(g=h.text=h.text||v.element&&v.element.text&&v.element.text.shift(),e={text:c,fill:t.color,direction:BLANKSTRING,cursor:b.link?POINTER:BLANKSTRING,"text-bound":[pluck(t.backgroundColor,n),pluck(t.borderColor,n),1,'2'],x:l,y:m},f=r.setAnimation({el:g||'text',attr:e,container:s,label:'text',component:o}),f.show(),!g&&(h.text=f,f.on('fc-mousedown',o.mouseDown).on('fc-mousemove',o.mousemove).on('fc-mouseup',o.mouseup).hover(o.hoverIn,o.hoverOut)),f.data(EVENTARGS,b.eventArgs).data('viewMode',q.viewMode).data(configStr,b).data('dataset',o),q.showTooltip?p.enableToolTip(f,d):p.disableToolTip(f)):h.text&&h.text.hide()};if(a)x(a);else for(k=0;k<w;k++)j=u[k],x(j)}mouseDown(){var a=this,b=a.data('dataset'),c=b.getLinkedParent();c.clearLongPress(),a.data('fire_click_event',1),c.triggerConnectorUI(a)}mousemove(){var a=this,b=a.data('dataset'),c=b.getLinkedParent();a.data('fire_click_event',0),c.clearLongPress()}mouseup(){var a=this,b=a.data('dataset'),c=b.getLinkedParent();c.clearLongPress()}hoverIn(a){var b=this,c=b.data('dataset'),d=c.getFromEnv('chart');d.plotEventHandler(b,a,'ConnectorRollover')}hoverOut(a){var b=this,c=b.data('dataset'),d=c.getFromEnv('chart');d.plotEventHandler(b,a,'ConnectorRollout')}static _drawArrow(a,b,c,d,e,f){var g,h,i,j,k=Math.tan,l=Math.abs,m=Math.sin,n=Math.cos,o=Math.PI,p=Math.atan((b-d)/(a-c)),q=[];return 0>p&&(p=2*o+p),d>b?(c>=a&&p>o||c<a&&p>o)&&(p-=o):(c>=a&&p<o&&0!=p||c<a&&p<o)&&(p+=o),'undefined'==typeof f?(g=a+e*n(p),h=b+e*m(p)):(i=l(e)/2,j=l(f)/2,g=a+(i=a<c?i:-i),h=b+i*k(p),l(b-h)>l(j)&&(h=b+(j=b<d?j:-j),g=a+j/k(p))),q.push(L,g,h,g+10*n(p+.79),h+10*m(p+.79),M,g+10*n(p-.79),h+10*m(p-.79),L,g,h),q}removeData(a,b){var c=this,d=c.components,e=d.data;0>a&&(a=0),d.removeDataArr=e.splice(a,b)}trimData(a){if(this.config.JSONData){let b=this,c=b.components,d=c.data&&c.data.length,e=a.connector&&a.connector.length||0,f=d-e;0<f&&b.removeData(e,f)}}}export default DragNodeConnector;