UNPKG

quoslibero

Version:

FusionCharts JavaScript charting framework

1 lines 7.78 kB
import DragNodeDataset from'./dragnode';import{pluck,pluckNumber,parseUnsafeString,getDashStyle,DASH_DEF,preDefStr,BLANKSTRING,hashify,dropHash,HASHSTRING,extend2,POSITION_CENTER,visibleStr,PXSTRING,setLineHeight,isIE}from'../../../../fc-core/src/lib';import{addDep}from'../../../../fc-core/src/dependency-manager';import draggablelabelAnimation from'./draggablelabel-animation';let PX=preDefStr.PX,EVENTARGS='eventArgs',TRACKER_FILL='rgba(192,192,192,'+(isIE?.002:1e-6)+')';class DragNodeLabels extends DragNodeDataset{constructor(){super(),addDep({name:'draggablelabelAnimation',type:'animationRule',extension:draggablelabelAnimation})}getType(){return'dataset'}getName(){return'dragNodeLabels'}configure(a){if(a)this.trimData(a),this.config.JSONData=a.label;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.length,h=c.components.data;for(e.viewMode=pluckNumber(d.viewmode,0),h||(h=c.components.data=[]),b=0;b<g;b++)c._setConfigure(b)}_setConfigure(a,b){var c,d,e,f,g=this,h=g.config.JSONData,i=b||h[a],j=g.components.data,k=g.getFromEnv('style').inCanvasStyle,l=k.fontSize;c=j[a],c||(c=j[a]={}),c.graphics||(c.graphics={}),e=c.config=c.config||(c.config={}),d=parseUnsafeString(pluck(i.text,i.label)),e._options=i,e.add=i.add,d&&(e.text=d,e.x=i.x||0,e.y=i.y||0,e.labelFontSize=f=pluckNumber(i.fontsize,l),e.labelColor=hashify(pluck(i.color,k.color)),e.alpha=pluckNumber(i.alpha,100)/100,e.allowDrag=pluckNumber(i.allowdrag,1),e.padding=pluckNumber(i.padding,5),e.labelCSS=i.fontsize?{fontSize:f+PX}:{},e.labelBGColor=pluck(i.bgcolor&&i.bgcolor.replace(dropHash,HASHSTRING)),e.labelBDColor=pluck(i.bordercolor&&i.bordercolor.replace(dropHash,HASHSTRING)),e.link=i.link,e.borderThickness=i.borderthickness,e.dashLen=i.dashlen,e.dashGap=i.dashgap,e.dashed=i.dashed,e.radius=i.radius)}getJSONData(){var a,b,c=this,d=c.components.data,e=d.length,f=[];for(b=0;b<e;b++)a=d[b],!a.removed&&a.config._options&&f.push(a.config._options);return f}createContainer(){var a=this,b=a.getFromEnv('animationManager'),c=a.getLinkedParent().getChildContainer();a.getContainer('dragLabelGroup')||a.addContainer('dragLabelGroup',b.setAnimation({el:'group',attr:{name:'dragLabelGroup'},label:'group',component:a,container:c.defaultVcanvasGroup}))}allocatePosition(){this.parsePlotAttributes()}parsePlotAttributes(){var a,b,c,d,e,f,g,h,j,k,l,m,n,o,p,q,r,s,t,u,v,w=this,z=w.components.data,A=w.getFromEnv('yAxis'),B=w.getFromEnv('xAxis'),C=w.getFromEnv('smartLabel'),D=w.getFromEnv('dataLabelStyle'),E=z&&z.length,F=w.getFromEnv('chartConfig');for(u=0;u<E;u++)(n=z[u],!n.removed)&&(l=n.config,n.graphics||(n.graphics={}),l.index=u,d=B.getPixel(l.x),e=A.getPixel(l.y),g=l.text,h=l.labelBGColor,j=l.labelBDColor,k=l.padding,o=l.allowDrag,p=l.labelFontSize,f=l.labelColor,q=l.radius,c=l.dashed,s=l.borderThickness,a=l.dashLen,b=l.dashGap,s=l.borderThickness,v=l.labelCSS,m={x:d,y:e,text:g,align:POSITION_CENTER,fill:f,"text-bound":[h||BLANKSTRING,j||BLANKSTRING,pluckNumber(s,1),k,pluckNumber(q,0),pluckNumber(c,0)?getDashStyle(pluckNumber(a,5),pluckNumber(b,4)):DASH_DEF],visibility:visibleStr},t={backgroundColor:h,borderColor:j,borderPadding:k,fontSize:p+PXSTRING,fontStyle:D.fontStyle,fontWeight:D.fontWeight,borderRadius:0,borderDash:DASH_DEF,fontFamily:D.fontFamily},setLineHeight(t),C.useEllipsesOnOverflow(F.useEllipsesWhenOverflow),C.setStyle(t),v['line-height']=t.lineHeight,l.eventArgs={link:l.link,text:g,x:d,y:e,allowdrag:o,sourceType:'labelnode'},l.props={element:{attr:m}},l.labelCSSApplied=v,r=C.getOriSize(g),l.width=r.width,l.height=r.height,l.xPos=d,l.yPos=e)}draw(){var a,b,c,d,e,f,g,h=this,j=h.components.data,k=h.getFromEnv('animationManager'),l=h.getFromEnv('dataLabelStyle'),m=j&&j.length,n=h.components.removeDataArr||[],o=n.length;for(h.createContainer(),f=h.getContainer('dragLabelGroup'),f.css({"font-weight":l.fontWeight,"font-style":l.fontStyle,"font-size":l.fontSize,"font-family":l.fontFamily}),e=0;e<m;e++)(b=j[e],!b.removed)&&(a=b.config,d=b.graphics.element,c=k.setAnimation({el:d||'text',container:f,css:a.labelCSS,attr:a.props.element.attr,component:h}),d?(a.labelCSSApplied&&!g&&c.removeCSS(),c.show().css(a.labelCSS)):b.graphics.element=c,c.data('eventArgs',a.eventArgs));for(h.drawTracker(),e=0;e<o;e++)h._removeDataVisuals(n.shift())}drawTracker(){var a,b,c,d,e,f,g,h,j,k,l,m,n,o,p=this,q=p.components.data,r=p.getFromEnv('animationManager'),s=p.getFromEnv('chart'),t=p.getLinkedParent(),u=p.config,v=p.getContainer('dragLabelGroup'),w=q&&q.length,z=function(){var a=this,b=a.data('drag-options'),c=b.dataset,d=b.index,e=c.components.data[d];a.data('fire_click_event',1),t.clearLongPress(),t.triggerLabelUI(a,e)},A=function(){var a=this;a.data('fire_click_event')&&(a.data('fire_click_event',0),t.clearLongPress())},B=function(a){var b=this,c=b.data('fire_click_event');t.clearLongPress(),c&&s.plotEventHandler(b,a,'LabelClick')},C=function(a){var b=this;s.plotEventHandler(b,a,'LabelRollover')},D=function(a){var b=this;s.plotEventHandler(b,a,'LabelRollout')},E=function(a,b){var c=this;p._labelDragMove.call(c,a,b,s)},F=function(a){var b=this;p._labelDragStart.call(b,a,s)},G=function(a){var b=this;p._labelDragUp.call(b,a)};for(o=0;o<w;o++)(a=q[o],!a.removed)&&(b=a.config,c=b.padding||0,m=b.width,n=b.height,k=b.xPos-m/2,l=b.yPos-n/2,f=b.allowDrag,g=b.text,j=a.graphics.trackerElement,e={x:k-c,y:l-c,width:m+2*c,height:n+2*c,cursor:b.allowDrag?'move':BLANKSTRING,fill:TRACKER_FILL,stroke:TRACKER_FILL},d={link:b.link,text:g,x:k,y:l,allowdrag:f,sourceType:'labelnode'},h=r.setAnimation({el:j||'rect',container:v,attr:e,component:p}),j||(a.graphics.trackerElement=h,h.on('fc-mousedown',z).on('fc-mousemove',A).on('fc-mouseup',B).data('viewMode',u.viewMode).data(preDefStr.EVENTARGS,d).hover(C,D),b.allowDrag&&h.drag(E,F,G)),h.data('drag-options',{index:o,dataset:p}))}_labelDragStart(){var a=this,b=a.getBBox(),c=a.data('drag-options'),d=c.dataset,e=d.getLinkedParent(),f=c.index,g=d.components.data[f],h=g.graphics.element,i=g.dragStart=g.dragStart||(g.dragStart={});c.ox=h.attr('x'),c.oy=h.attr('y'),c.bBox=b,i.xPos=g.config.xPos,i.yPos=g.config.yPos,i.bBox=b,a.data('fire_click_event',1),a.data('fire_dragend',0),e.clearLongPress(),e.triggerLabelUI(a,g)}_labelDragMove(a,b){var c,d,e=this,f=e.data('drag-options'),g=f.index,h=f.dataset,i=h.getFromEnv('chart'),j=h.getFromEnv('chartConfig'),k=j.canvasLeft,l=j.canvasRight,m=j.canvasBottom,n=j.canvasTop,o=h.getLinkedParent(),p=h.components.data[g],q=p.graphics.element,r=p.dragStart,s=r.bBox,t=b[0],u=b[1],v=r.bBox.x+t,w=r.bBox.x2+t,x=r.bBox.y+u,y=r.bBox.y2+u,z=h.getFromEnv('yAxis'),A=h.getFromEnv('xAxis');v<k&&(t+=k-v),w>l&&(t-=w-l),x<n&&(u+=n-x),y>m&&(u-=y-m),r.draged=!0,e.attr({x:s.x+t,y:s.y+u}),c=f.ox+t,d=f.oy+u,q.attr({x:f.ox+t,y:f.oy+u}),p.config.x=A.getValue(c),p.config.y=z.getValue(d),e.data('fire_dragend')||(i.plotEventHandler(e,a,'LabelDragStart'),e.data('fire_dragend',1)),e.data('fire_click_event')&&(e.data('fire_click_event',0),o.clearLongPress())}_labelDragUp(a){var b=this,c=b.data('drag-options'),d=c.index,e=c.dataset,f=e.getFromEnv('chart'),g=f.getChildren('xAxis')[0],h=f.getChildren('yAxis')[0],i=e.getLinkedParent(),j=e.components.data[d],k=j.dragStart,l=b.data(EVENTARGS);l.x=g.getValue(b.attr('x')),l.y=h.getValue(b.attr('y')),k.draged=!1,b.data('fire_dragend')&&(f.fireChartInstanceEvent('chartupdated',extend2({sourceEvent:'labeldragend'},l),a),f.fireChartInstanceEvent('chartupdated',l,a),f.plotEventHandler(b,a,'labeldragend')),i.clearLongPress()}removeData(a,b){var c=this,d=c.components,e=d.data;d.removeDataArr=e.splice(a,b)}trimData(a){if(this.config.JSONData){let b=this,c=b.config.JSONData,d=c&&c.length,e=a.label&&a.label.length||0,f=d-e;0<f&&b.removeData(e,f)}}}export default DragNodeLabels;