UNPKG

@fusioncharts/widgets

Version:

FusionCharts JavaScript charting framework

1 lines 12.4 kB
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _extends=require("@babel/runtime/helpers/extends");exports.__esModule=true;exports.default=void 0;var _inheritsLoose2=_interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _task=_interopRequireWildcard(require("./task"));var _lib=require("@fusioncharts/core/src/lib");var _connectorGantt=_interopRequireDefault(require("./connector-gantt.animation"));var _dependencyManager=require("@fusioncharts/core/src/dependency-manager");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var o,i,f=_extends({},null,{default:e});if(null===e||"object"!=typeof e&&"function"!=typeof e)return f;if(o=t?n:r){if(o.has(e))return o.get(e);o.set(e,f)}for(var _t in e)"default"!==_t&&{}.hasOwnProperty.call(e,_t)&&((i=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,_t))&&(i.get||i.set)?o(f,_t,i):f[_t]=e[_t]);return f})(e,t)}var connectorClick=function connectorClick(chart){return function(e){var ele=this;chart.plotEventHandler(ele,e,"ConnectorClick")}},rollOverHandler=function rollOverHandler(chart){return function(event){var ele=this,data=ele.data("dataObj"),config=data.config,chartComponents=chart.components,taskMap=chartComponents.tasksMap,stTObj=taskMap[config.fromTaskId],endTObj=taskMap[config.toTaskId],attr={stroke:config.hoverColor,"stroke-dasharray":config.dashedStyle,"stroke-width":config.hoverThickness},connector=data.graphics.connector;chart.plotEventHandler(ele,event,"ConnectorRollOver");if(config.showHoverEffect){[stTObj,endTObj].forEach((function(obj){var attrib={fill:obj.config.hoverFillColor,stroke:obj.config.hoverBorderColor},percentComplete=obj.config.percentComplete,slackGraphic=obj.graphics.slackElem,element=obj.graphics.element,percentCompleteGraphic=obj.graphics.taskFill;if(percentComplete&&!obj.config.showAsGroup){slackGraphic&&slackGraphic.attr({fill:obj.config.slackHoverColor});percentCompleteGraphic&&percentCompleteGraphic.attr({fill:obj.config.hoverFillColor,stroke:obj.config.hoverBorderColor});delete attrib.fill}element&&element.attr(attrib)}));connector&&connector.attr(attr)}}},rollOutHandler=function rollOutHandler(chart){return function(event){var ele=this,data=ele.data("dataObj"),config=data.config,chartComponents=chart.components,taskMap=chartComponents.tasksMap,stTObj=taskMap[config.fromTaskId],endTObj=taskMap[config.toTaskId],attr={stroke:config.color,"stroke-width":config.thickness,"stroke-dasharray":config.dashedStyle},connector=data.graphics.connector;chart.plotEventHandler(ele,event,"ConnectorRollOut");if(config.showHoverEffect){[stTObj,endTObj].forEach((function(obj){var attrib={fill:obj.config.color,stroke:obj.config.borderColor,"stroke-width":obj.config.borderThickness,"stroke-dasharray":obj.config.dashedStyle},percentComplete=obj.config.percentComplete,slackGraphic=obj.graphics.slackElem,element=obj.graphics.element,percentCompleteGraphic=obj.graphics.taskFill;if(percentComplete&&!obj.config.showAsGroup){slackGraphic&&slackGraphic.attr({fill:obj.config.slackColor});percentCompleteGraphic&&percentCompleteGraphic.attr({fill:obj.config.color});delete attrib.fill}element&&element.attr(attrib)}));connector&&connector.attr(attr)}}};(0,_dependencyManager.addDep)({name:"connectorAnimation",type:"animationRule",extension:_connectorGantt.default});var Connector=function(_Task){function Connector(){return _Task.apply(this,arguments)||this}(0,_inheritsLoose2.default)(Connector,_Task);var _proto=Connector.prototype;_proto.getName=function getName(){return"connector"};_proto.__setDefaultConfig=function __setDefaultConfig(){_Task.prototype.__setDefaultConfig.call(this);var config=this.config;config.isdashed=1;config.thickness=1};_proto.configureAttributes=function configureAttributes(){var dataset=this,jsonData=dataset.getFromEnv("dataSource"),userConfig=(0,_lib.extend2)({},jsonData.connectors&&jsonData.connectors.length?jsonData.connectors[0]:jsonData.connectors||{});(0,_lib.parseConfiguration)(userConfig,dataset.config,dataset.getFromEnv("chart").config,{connector:true});if(!dataset.components){dataset.components={}}dataset._setConfigure();dataset.setState("dirty",true)};_proto._setConfigure=function _setConfigure(newDataset){var dataset=this,datasetConfig=dataset.config,chart=dataset.getFromEnv("chart"),jsonData=dataset.getFromEnv("dataSource"),JSONData=jsonData.connectors&&jsonData.connectors.length?jsonData.connectors[0]:jsonData.connectors||{},setDataArr=newDataset||JSONData.length?JSONData:JSONData.connector,setDataLen=setDataArr&&setDataArr.length||0,colorM=chart.getFromEnv("color-manager"),chartConfig=chart.config,dataStore=dataset.components.data,i,dataObj,setData,config,cnColor,cnAlpha,cnThickness,cnIsDashed;if(!dataStore){dataStore=dataset.components.data=[]}for(i=0;i<setDataLen;i+=1){setData=setDataArr[i];dataObj=dataStore[i];if(!dataObj){dataObj=dataStore[i]={config:{}}}!dataObj.config&&(dataObj.config={});config=dataObj.config;cnColor=(0,_lib.pluck)(setData.color,datasetConfig.color,colorM.getColor("plotBorderColor"));cnAlpha=(0,_lib.pluckNumber)(setData.alpha,datasetConfig.alpha,100);cnThickness=(0,_lib.pluckNumber)(setData.thickness,datasetConfig.thickness,1);cnIsDashed=(0,_lib.pluckNumber)(setData.isdashed,datasetConfig.isdashed,1);config.fromTaskId=(0,_lib.getFirstValue)(setData.fromtaskid,"").toLowerCase();config.toTaskId=(0,_lib.getFirstValue)(setData.totaskid,"").toLowerCase();config.fromTaskConnectStart=(0,_lib.pluckNumber)(setData.fromtaskconnectstart,0);config.toTaskConnectStart=(0,_lib.pluckNumber)(setData.totaskconnectstart,1);config.color=(0,_lib.convertColor)(cnColor);config.alpha=cnAlpha*.01;config.link=setData.link;config.showHoverEffect=(0,_lib.pluckNumber)(setData.showhovereffect,datasetConfig.showhovereffect,chartConfig.showconnectorhovereffect,1);config.hoverColor=(0,_lib.convertColor)((0,_lib.pluck)(setData.hovercolor,datasetConfig.hovercolor,chartConfig.connectorhovercolor,(0,_lib.getDarkColor)(cnColor,80)),(0,_lib.pluckNumber)(setData.hoveralpha,datasetConfig.hoveralpha,chartConfig.connectorhoveralpha,cnAlpha));config.hoverThickness=(0,_lib.pluckNumber)(setData.hoverthickness,datasetConfig.hoverthickness,chartConfig.connectorhoverthickness,cnThickness);config.thickness=cnThickness;config.dashedStyle=cnIsDashed?(0,_lib.getDashStyle)((0,_lib.pluckNumber)(setData.dashlen,datasetConfig.dashlen,5),(0,_lib.pluckNumber)(setData.dashgap,datasetConfig.dashgap,cnThickness),cnThickness):"none"}if((0,_lib.pluckNumber)(JSONData.visible,1)){dataset.setState("visible",true)}else{dataset.setState("visible",false)}};_proto.draw=function draw(){var dataset=this,chart=dataset.getFromEnv("chart"),chartComponents=chart.components,dataStore=dataset.components.data,animationManager=dataset.getFromEnv("animationManager"),chartConfig=chart.config,ln=dataStore.length,taskMap=chartComponents.tasksMap,cExt=chartConfig.connectorextension,canvas=chart.getChildren("canvas")[0],parentContainer=canvas.getChildContainer("connectorGroup"),container=dataset.getContainer("connectorContainer"),visible=dataset.getState("visible"),isContextChanged=dataset._contextChanged(),removeDataArr=dataset.components.removeDataArr||[],removeDataArrLen=removeDataArr.length,startTaskId,endTaskId,stTObj,endTObj,dataObj,isStraightLine,stY,etY,stx1,stx2,etx1,etx2,diff,cnCase,config,stTConfig,endTConfig,cPath,tH,graphics,connectorDummy,connector,eventArgs,trackerElementDummy,trackerElement,i;if(!dataset.getState("removed")&&!dataset.getState("dirty")&&!(isContextChanged&&visible)&&!dataset.getState("dragged")){return}if(!container){container=dataset.addContainer("connectorContainer",animationManager.setAnimation({el:"group",attr:{name:"connectors"},container:parentContainer,component:dataset}));if(!visible){container.hide()}else{container.show()}}for(i=0;i<=ln;i+=1){dataObj=dataStore[i];if(!dataObj){continue}config=dataObj.config;!dataObj.graphics&&(dataObj.graphics={});graphics=dataObj.graphics;startTaskId=config.fromTaskId&&config.fromTaskId.toLowerCase();endTaskId=config.toTaskId&&config.toTaskId.toLowerCase();stTObj=taskMap[startTaskId];endTObj=taskMap[endTaskId];connectorDummy=graphics.connector;if(stTObj&&endTObj){stTConfig=stTObj.config;endTConfig=endTObj.config;stY=stTConfig.yPos+stTConfig.height*.5;etY=endTConfig.yPos+endTConfig.height*.5;isStraightLine=stY===etY;stx1=stTConfig.xPos;stx2=stTConfig.xPos+stTConfig.width;etx1=endTConfig.xPos;etx2=endTConfig.xPos+endTConfig.width;if((0,_task.checkInvalidValue)(stx1,stx2,etx1,etx2)===false){continue}diff=0;cnCase=0;if(config.fromTaskConnectStart===0&&config.toTaskConnectStart===1){cnCase=1}if(config.fromTaskConnectStart===0&&config.toTaskConnectStart===0){cnCase=2}if(config.fromTaskConnectStart===1&&config.toTaskConnectStart===1){cnCase=3}if(config.fromTaskConnectStart===1&&config.toTaskConnectStart===0){cnCase=4}if(isStraightLine){tH=stTConfig.height;switch(cnCase){case 1:diff=(etx1-stx2)/10;cPath=["M",stx2,stY,stx2+diff,stY,"L",stx2+diff,stY,stx2+diff,stY-tH,"L",stx2+diff,stY-tH,etx1-diff,stY-tH,"L",etx1-diff,stY-tH,etx1-diff,stY,"L",etx1-diff,stY,etx1,etY];break;case 2:cPath=["M",stx2,stY,stx2+cExt,stY,"L",stx2+cExt,stY,stx2+cExt,stY-tH,"L",stx2+cExt,stY-tH,etx2+cExt,stY-tH,"L",etx2+cExt,etY-tH,etx2+cExt,etY,etx2,etY];break;case 3:cPath=["M",stx1,stY,stx1-cExt,stY,"L",stx1-cExt,stY,stx1-cExt,stY-tH,"L",stx1-cExt,stY-tH,etx1-cExt,stY-tH,"L",etx1-cExt,stY-tH,etx1-cExt,stY,"L",etx1-cExt,stY,etx1,stY];break;case 4:cPath=["M",stx1,stY,stx1-cExt,stY,"L",stx1-cExt,stY,stx1-cExt,stY-tH,"L",stx1-cExt,stY-tH,etx2+cExt,stY-tH,"L",etx2+cExt,stY-tH,etx2+cExt,stY,"L",etx2+cExt,stY,etx2,stY];break}}else{switch(cnCase){case 1:cPath=["M",stx2,stY,stx2+(etx1-stx2)/2,stY,"L",stx2+(etx1-stx2)/2,stY,stx2+(etx1-stx2)/2,etY,"L",stx2+(etx1-stx2)/2,etY,etx1,etY];if(stx2<=etx1){cPath=["M",stx2,stY,stx2+(etx1-stx2)/2,stY,"L",stx2+(etx1-stx2)/2,stY,stx2+(etx1-stx2)/2,etY,"L",stx2+(etx1-stx2)/2,etY,etx1,etY]}else{cPath=["M",stx2,stY,stx2+cExt,stY,"L",stx2+cExt,stY,stx2+cExt,stY+(etY-stY)/2,"L",stx2+cExt,stY+(etY-stY)/2,etx1-cExt,stY+(etY-stY)/2,"L",etx1-cExt,stY+(etY-stY)/2,etx1-cExt,etY,"L",etx1-cExt,etY,etx1,etY]}break;case 2:diff=etx2-stx2<0?0:etx2-stx2;cPath=["M",stx2,stY,stx2+cExt+diff,stY,"L",stx2+cExt+diff,stY,stx2+cExt+diff,etY,"L",stx2+cExt+diff,etY,etx2,etY];break;case 3:diff=stx1-etx1<0?0:stx1-etx1;cPath=["M",stx1,stY,stx1-cExt-diff,stY,"L",stx1-cExt-diff,stY,stx1-cExt-diff,etY,"L",stx1-cExt-diff,etY,etx1,etY];break;case 4:if(stx1>etx2){cPath=["M",stx1,stY,stx1-(stx1-etx2)/2,stY,"L",stx1-(stx1-etx2)/2,stY,stx1-(stx1-etx2)/2,etY,"L",stx1-(stx1-etx2)/2,etY,etx2,etY]}else{cPath=["M",stx1,stY,stx1-cExt,stY,"L",stx1-cExt,stY,stx1-cExt,stY+(etY-stY)/2,"L",stx1-cExt,stY+(etY-stY)/2,etx2+cExt,stY+(etY-stY)/2,"L",etx2+cExt,stY+(etY-stY)/2,etx2+cExt,etY,"L",etx2+cExt,etY,etx2,etY]}break}}connector=graphics.connector=animationManager.setAnimation({el:connectorDummy||"path",label:"path",attr:{path:cPath,stroke:config.color,"stroke-opacity":config.alpha,"stroke-width":config.thickness,"stroke-dasharray":config.dashedStyle},container:container,component:dataset});connector.show();eventArgs={fromTaskId:config.fromTaskId,toTaskId:config.toTaskId,fromTaskConnectStart:config.fromTaskConnectStart,toTaskConnectStart:config.toTaskConnectStart,link:config.link,sourceType:"connector"};trackerElementDummy=graphics.trackerElement;trackerElement=graphics.trackerElement=animationManager.setAnimation({el:trackerElementDummy||"path",attr:{path:cPath,stroke:_lib.TRACKER_FILL,"stroke-width":Math.max(config.thickness,1),cursor:config.link?"pointer":""},container:container,component:dataset});if(!trackerElementDummy){trackerElement.on("fc-click",connectorClick(chart)).hover(rollOverHandler(chart),rollOutHandler(chart))}trackerElement.data("dataObj",dataObj).data("eventArgs",eventArgs)}else{connectorDummy&&animationManager.setAnimation({el:connectorDummy,component:dataset,callback:_task.hideFn,doNotRemove:true});graphics.trackerElement&&animationManager.setAnimation({el:graphics.trackerElement,component:dataset,callback:_task.hideFn,doNotRemove:true})}}for(i=0;i<removeDataArrLen;i++){dataset._removeDataVisuals(removeDataArr.shift())}};return Connector}(_task.default);var _default=exports.default=Connector;