quoslibero
Version:
FusionCharts JavaScript charting framework
1 lines • 7.36 kB
JavaScript
import Task,{extractLabelStyle,checkInvalidValue,hideFn}from'./task';import{extend2,parseConfiguration,getFirstValue,pluck,pluckNumber,getValidValue,parseUnsafeString,parseTooltext,setLineHeight,getDarkColor,mapSymbolName,getFirstColor}from'../../../../fc-core/src/lib';import milestoneAnimation from'./milestone-gantt.animation';import{addDep}from'../../../../fc-core/src/dependency-manager';import{priorityList}from'../../../../fc-core/src/schedular';let UNDEF;const clickHandler=a=>function(b){var c=this;a.plotEventHandler(c,b,'MilestoneClick')},rollOverHandler=a=>function(b){var c=this,d=c.data('dataObj'),e=d.config;a.plotEventHandler(c,b,'MilestoneRollOver'),e.showHoverEffect&&d.graphics.element.attr({fill:e.hoverFillColor,stroke:e.hoverBorderColor,"fill-opacity":e.hoverFillAlpha,"stroke-opacity":e.hoverBorderAlpha})},rollOutHandler=a=>function(b){var c=this,d=c.data('dataObj'),e=d.config;a.plotEventHandler(c,b,'MilestoneRollOut'),e.showHoverEffect&&d.graphics.element.attr({fill:e.fillColor,stroke:e.borderColor,"fill-opacity":e.fillAlpha,"stroke-opacity":e.borderAlpha})};addDep({name:'milestoneAnimation',type:'animationRule',extension:milestoneAnimation});class Milestone extends Task{getName(){return'milestone'}__setDefaultConfig(){super.__setDefaultConfig();let a=this.config;a.showpercentlabel=0,a.showstartdate=0,a.showenddate=0,a.showlabels=UNDEF,a.showborder=1,a.borderthickness=1,a.showHoverEffect=1,a.slackFillColor='FF5E5E',a.font='',a.fontcolor='',a.fontsize='',a.color='',a.alpha='100',a.bordercolor='',a.borderalpha='100',a.hoverFillColor='',a.hoverFillAlpha='100',a.slackHoverFillColor=10,a.slackHoverFillAlpha='100'}configureAttributes(){let a=this,b=a.config,c=a.getFromEnv('dataSource'),d=extend2({},c.milestones&&c.milestones.length?c.milestones[0]:c.milestones||{});parseConfiguration(d,b,{milestones:!0}),a.components||(a.components={}),a._setConfigure(),a.setState('dirty',!0)}_setConfigure(a){let b,c,d,e,f,g,h,j,k,l,m,n,o,p,q=this,r=q.getFromEnv('chart'),s=r.getChildren('yAxis')[0],t=s.config,u=q.getFromEnv('dataSource'),v=u.milestones&&u.milestones.length?u.milestones[0]:u.milestones||{},w=a||v.length?v:v.milestone,x=w&&w.length,y=q.getFromEnv('color-manager'),z=r.config,A=q.getFromEnv('number-formatter'),B=q.components.data,C=r.config.style,D=C.inCanvasStyle,E=r.components.tasksMap,F=t.processes.processMap,G=t.processes.process.process,H=r.config.milestoneLabelStyle;for(B||(B=q.components.data=[]),e=0;e<x;e+=1)g=w[e],b=B[e],b||(b=B[e]={config:{}}),d=b.config,n=getFirstValue(g.taskid,'').toLowerCase(),k=pluck(g.shape,'polygon').toLowerCase(),h=pluckNumber(g.numsides,5),l=0,'star'===k?l=.4:(k=mapSymbolName(h),k=mapSymbolName(h).split('-')[0]),j=pluck(g.color,y.getColor('legendBorderColor')),m=getValidValue(parseUnsafeString(pluck(g.tooltext,g.hovertext,z.milestonetooltext))),o=A.getDateValue(g.date).ms,p=A.getFormattedDate(o),m!==UNDEF&&E[n]?(c=E[n].config,f=F[n]?F[n].catObj.label||F[n].catObj.name:G[e]&&(G[e].label||G[e].name),m=parseTooltext(m,[28,32,33,34,35,36],{date:p,taskStartDate:c._startDate,taskEndDate:c._endDate,taskLabel:c.label,taskPercentComplete:-1===c.percentComplete?'':A.percentValue(c.percentComplete),processName:f},g)):m=p,C=d.style=extractLabelStyle({fontSize:g.fontsize,fontFamily:g.font,fontWeight:g.fontbold,fontStyle:g.fontitalic}),d.textColor=getFirstColor(pluck(g.fontcolor,z.milestonefontcolor,D.color)),setLineHeight(C),d.lineHeight=pluck(C&&C.lineHeight,H&&H.lineHeight),d.numSides=h,d.startAngle=pluckNumber(g.startangle,90),d.radius=g.radius,d.origDate=g.date,d.date=A.getDateValue(g.date),d.fillColor=getFirstColor(j),d.fillAlpha=.01*pluckNumber(g.fillalpha,g.alpha,100),d.borderColor=getFirstColor(pluck(g.bordercolor,j)),d.borderAlpha=.01*pluckNumber(g.borderalpha,g.alpha,100),d.displayValue=parseUnsafeString(g.label),d.style=C,d.hoverFillColor=getFirstColor(pluck(g.hoverfillcolor,z.milestonehoverfillcolor,getDarkColor(j,80))),d.hoverFillAlpha=.01*pluckNumber(g.hoverfillalpha,z.milestonehoverfillalpha,g.fillalpha,g.alpha,100),d.hoverBorderColor=getFirstColor(pluck(g.hoverbordercolor,z.milestonehoverbordercolor,getDarkColor(pluck(g.bordercolor,j),80))),d.hoverBorderAlpha=.01*pluckNumber(g.hoverborderalpha,z.milestonehoverborderalpha,g.borderalpha,g.alpha,100),d.showHoverEffect=pluckNumber(g.showhovereffect,z.showmilestonehovereffect,z.showhovereffect,1),d.depth=l,d.taskId=n,d.borderThickness=pluckNumber(g.borderthickness,1),d.link=g.link,d.toolText=m;pluckNumber(v.visible,1)?q.setState('visible',!0):q.setState('visible',!1)}drawLabel(){let a,b,c,d,e,f,g,h,j,k,l,m=this,n=m.getFromEnv('chart'),o=m.getFromEnv('animationManager'),p=n.components.tasksMap,q=m.getFromEnv('toolTipController'),r=m.getContainer('milestoneLabelContainer'),s=m.components.data;for(d=0,g=s.length;d<g;d++)c=s[d],a=c.config,k=p[a.taskId],h=c.graphics,e=h.labelElement,b=a.eventArgs,j=a._labelAttrs,l=a.style,''!==a.displayValue&&a.displayValue!==UNDEF&&k?(f=h.labelElement=o.setAnimation({el:e||'text',attr:j,container:r,component:m}),e?(f.removeCSS(),f.show()):f.on('fc-click',clickHandler(n)).hover(rollOverHandler(n),rollOutHandler(n)),f.css(l),q.enableToolTip(f,a.toolText),f.data('eventArgs',b).data('dataObj',c)):e&&o.setAnimation({el:e,component:m,callback:hideFn,doNotRemove:!0})}draw(){let a,b,c,d,e,f,g,h,j,k,l,m,n,o,p,q=this,r=q.getFromEnv('chart'),s=r.components,t=q.components,u=q.getFromEnv('toolTipController'),v=r.getChildren('xAxis')[0],w=t.data,x=s.tasksMap,y=r.config,z=r.getChildren('canvas')[0],A=q.getContainer('milestoneContainer'),B=z.getChildContainer('milestoneGroup'),C=q.getContainer('milestoneLabelContainer'),D=q.getState('visible'),E=q.getFromEnv('animationManager'),F=q.components.removeDataArr||[],G=F.length,H=y.showtooltip;for(A||(A=q.addContainer('milestoneContainer',E.setAnimation({el:'group',attr:{name:'milestone'},container:B,component:q}))),D?A.show():A.hide(),C||(C=q.addContainer('milestoneLabelContainer',E.setAnimation({el:'group',attr:{name:'labels'},container:B,component:q}))),D?C.show():C.hide(),o=w&&w.length,n=0;n<o;n+=1)if(a=w[n],!!a)if(d=a.config,c=a.graphics,b=x[d.taskId],a.graphics||(a.graphics={}),g=c.element,b){if(f=b.config,e=d.eventArgs={sides:d.sides,date:d.origDate,radius:d.radius,taskId:d.taskId,toolText:d.toolText,link:d.link,numSides:d.numSides},j=v.getPixel(d.date.ms),k=f.yPos+.5*f.height,m=pluckNumber(d.radius,.6*f.height),!1===checkInvalidValue(j,k,m))continue;l=[d.numSides,j,k,m,d.startAngle,d.depth],h=c.element=E.setAnimation({el:g||'polypath',label:'polypath',attr:{polypath:l,fill:d.fillColor,"fill-opacity":d.fillAlpha,stroke:d.borderColor,"stroke-opacity":d.borderAlpha,groupId:'gId'+n,cursor:d.link?'pointer':'',"stroke-width":d.borderThickness},component:q,container:A}),h.on('fc-click',clickHandler(r)).hover(rollOverHandler(r),rollOutHandler(r)),h.show().data('eventArgs',e).data('dataObj',a),H?u.enableToolTip(h,d.toolText):u.disableToolTip(h),p=d._labelAttrs||(d._labelAttrs={}),p.x=j,p.y=k,p.text=d.displayValue,p.groupId='gId'+n,p.cursor=d.link?'pointer':'',p.direction=y.textDirection,p['text-anchor']='middle',p.fill=d.textColor}else g&&E.setAnimation({el:g,component:q,callback:hideFn,doNotRemove:!0});for(q.drawn?q.drawLabel():q.addJob('drawMilestoneLabels',q.drawLabel.bind(q),priorityList.label),q.drawn=!0,n=0;n<G;n++)q._removeDataVisuals(F.shift())}}export default Milestone;