@fusioncharts/maps
Version:
FusionCharts JavaScript charting framework
1 lines • 38.6 kB
JavaScript
;var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule=true;exports.default=void 0;var _inheritsLoose2=_interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _componentInterface=require("@fusioncharts/core/src/component-interface");var _extAnnotation=_interopRequireDefault(require("@fusioncharts/features/src/annotation/ext-annotation"));var _dependencyManager=require("@fusioncharts/core/src/dependency-manager");var _mapEntities=_interopRequireDefault(require("../_internal/map-entities.animation"));var _lib=require("@fusioncharts/core/src/lib");var _schedular=require("@fusioncharts/core/src/schedular");var _redraphaelShapes=_interopRequireDefault(require("@fusioncharts/core/src/_internal/redraphael/redraphael-shapes/redraphael-shapes.litepath"));var Raphael=(0,_dependencyManager.getDep)("redraphael","plugin"),UNDEF,userAgent=window.navigator.userAgent,isIE=/msie/i.test(userAgent)&&!window.opera,COMMA=",",BLANK="",POSITION_TOP="top",POSITION_BOTTOM="bottom",POSITION_RIGHT="right",POSITION_LEFT="left",POSITION_MIDDLE="middle",POSITION_CENTER="center",ENTITYLABEL="entityLabel",TEXT_STR="text",CRISP="crisp",math=window.Math,mathMin=math.min,mathMax=math.max,isStrokeReg=/stroke/gi,isWebKit=/AppleWebKit/.test(userAgent),mathCeil=math.ceil,colorize=function colorize(original,obj){var col=!obj?{FCcolor:original}:(0,_lib.extend2)(original.FCcolor,obj,false,true);col.toString=_lib.toRaphaelColor;return col},pruneStrokeAttrs=function pruneStrokeAttrs(obj,thicknessModifier){var key,returnObj={},finalThicknessModifier;finalThicknessModifier=thicknessModifier||1;if(!obj||typeof obj!=="object"){return returnObj}for(key in obj){if(!isStrokeReg.test(key)){if(key==="stroke-width"){returnObj[key]=Number(obj[key])/finalThicknessModifier;if(isWebKit){returnObj[key]=returnObj[key]&&mathCeil(returnObj[key])||0}}else{returnObj[key]=obj[key]}}}return returnObj},getTextWrapWidth={right:function right(){return arguments[1]},left:function left(w,x){return w-x},center:function center(w,x){return mathMin(x,w-x)*2}},getTextWrapHeight={top:function top(){return arguments[1]},middle:function middle(h,y){return mathMin(y,h-y)*2},bottom:function bottom(h,y){return h-y}},setCustomAttrs=function setCustomAttrs(entityObj,attrs){entityObj&&entityObj.graphics.outlines.attr(attrs)},convertArrayToIdMap=function convertArrayToIdMap(arr){var i=arr&&arr.length||0,ret={},item;while(i--){item=arr[i];if(item.id!==UNDEF){ret[item.id.toLowerCase()]=item}}return ret};(0,_dependencyManager.addDep)({name:"mapsAnimation",type:"animationRule",extension:_mapEntities.default});(0,_redraphaelShapes.default)(Raphael);var Entities=function(_ComponentInterface){function Entities(){var _this;_this=_ComponentInterface.call(this)||this;_this.components={};return _this}(0,_inheritsLoose2.default)(Entities,_ComponentInterface);var _proto=Entities.prototype;_proto.getName=function getName(){return"entities"};_proto.getType=function getType(){return"dataset"};_proto.configureAttributes=function configureAttributes(entityJSONDataOb){if(!entityJSONDataOb){return}this.JSONData={data:entityJSONDataOb};var dataset=this,chart=dataset.getFromEnv("chart"),rawData=chart.jsonData,conf=dataset.config,mapAttrs=rawData.map||rawData.chart,entityJSONData,entities,dataItem,entityItem,item,minMaxArray=[],minMaxArrayLen,i,d,colorManager=dataset.getFromEnv("colorManager"),entityDef=rawData.entitydef||[];if(!conf.attachEvent&&colorManager){dataset.addExtEventListener("legendUpdate",(function(){d=arguments[1];if(d.component==="legend"){dataset.legendInteractivity(d.legendItem,d.colorObj)}else{minMaxArray=d.maxMinArray;minMaxArrayLen=minMaxArray.length;for(i=0;i<minMaxArrayLen;i++){dataset.updateEntityColors(minMaxArray[i].min,minMaxArray[i].max)}}}),colorManager);conf.attachEvent=true}if(rawData.data&&rawData.data[0]&&rawData.data[0].data){entityJSONData=dataset.JSONData=rawData.data[0].data||[]}else{entityJSONData=dataset.JSONData=rawData.data||[]}conf.useSNameAsId=(0,_lib.pluckNumber)(mapAttrs.usesnameasid,0);this._redefineEntities(entityDef);entities=dataset.components.data;conf.showTooltip=(0,_lib.pluckNumber)(mapAttrs.showtooltip,1);conf.showHoverEffect=(0,_lib.pluckNumber)(mapAttrs.showhovereffect,0);entityJSONData=convertArrayToIdMap(entityJSONData);dataset.calculateDataLimits();!rawData.colorrange&&dataset._detachChild(dataset.getChildren("colorRange")&&dataset.getChildren("colorRange")[0]);for(item in entities){dataItem=entityJSONData[item];entityItem=entities[item];if(dataItem){this._configureEntity(item,entityItem,(0,_lib.imprint)(Entities._sanitizeEntityOptions((0,_lib.extend2)({},dataItem)),entityItem.config))}else{this._configureEntity(item,entityItem,entityItem.config)}}};_proto.updateEntityColors=function updateEntityColors(minValue,maxValue){var dataset=this,entities=dataset.components.data,chart=dataset.getFromEnv("chart"),_chart$config$entityO=chart.config.entityOpts,nullEntityAlpha=_chart$config$entityO.nullEntityAlpha,nullEntityColor=_chart$config$entityO.nullEntityColor,entityObj,config,value,name,alphaArr,visibleEntityAttr,nullAttr=colorize({fill:nullEntityColor,alpha:nullEntityAlpha}),hiddenAttr={"fill-opacity":0};for(name in entities){if(entities.hasOwnProperty(name)){entityObj=entities[name];config=entityObj.config;value=config.cleanValue;alphaArr=config.alphaArr||[];visibleEntityAttr={"fill-opacity":alphaArr[0]/100||1};if(value==null){setCustomAttrs(entityObj,nullAttr);entityObj.hidden=false}else if(value<minValue||value>maxValue){setCustomAttrs(entityObj,hiddenAttr);entityObj.hidden=true}else{setCustomAttrs(entityObj,visibleEntityAttr);entityObj.hidden=false}}}};_proto.legendInteractivity=function legendInteractivity(legendItem,entityColorObj){var dataset=this,chart=dataset.getFromEnv("chart"),entities=dataset.components.data,i,entity,config=legendItem.config,visible=legendItem.hasState("hidden"),cleanValue,colorRange=dataset.getFromEnv("colorManager"),entityAttrs,visibleEntityAttr={},applyAttr,hiddenAttr={"fill-opacity":0},colorObj;chart.getFromEnv("animationManager").setAnimationState("legendInteraction");for(i in entities){if(entities.hasOwnProperty(i)){entity=entities[i];config=entity.config;cleanValue=config.cleanValue;colorObj=colorRange.getColorObj(cleanValue);entityAttrs=config.visibleEntityAttr;visibleEntityAttr["fill-opacity"]=entityAttrs["fill-opacity"];applyAttr=!visible?hiddenAttr:visibleEntityAttr;if(entityColorObj.code===(!colorObj.outOfRange&&colorObj.code)){entity.hidden=!visible;setCustomAttrs(entity,applyAttr);if(!visible){legendItem.setLegendState("hidden")}else{legendItem&&legendItem.removeLegendState("hidden")}}}}};_proto.calculateDataLimits=function calculateDataLimits(){var dataset=this,chart=dataset.getFromEnv("chart"),conf=dataset.config,jsonData=chart.jsonData,dataArr=jsonData.data||[],numberFormatter=this.getFromEnv("number-formatter"),cleanValue,value,minValue=+Infinity,maxValue=-Infinity,len,i;for(i=0,len=dataArr.length;i<len;i++){value=dataArr[i].value;cleanValue=numberFormatter.getCleanValue(value);minValue=mathMin(minValue,cleanValue);maxValue=mathMax(maxValue,cleanValue)}conf.max=maxValue;conf.min=minValue};_proto._configureEntity=function _configureEntity(id,entityItem,entityJSON){var dataset=this,chart=dataset.getFromEnv("chart"),conf=dataset.config,numberFormatter=this.getFromEnv("number-formatter"),chartConf=chart.config,entityOpts=chartConf.entityOpts,entityConf=entityItem.config,labelConfig=entityItem.labelConfig,value=entityJSON.value,cleanValue=entityConf.cleanValue=numberFormatter.getCleanValue(value),formattedValue=entityConf.formattedValue=cleanValue!==UNDEF?numberFormatter.dataLabels(cleanValue):UNDEF,showTooltip=(0,_lib.pluckNumber)(entityJSON.showtooltip,entityOpts.showTooltip),defaultTooltip=this._getDefaultTooltip(entityItem,entityJSON,dataset),tooltextMacroObj={formattedValue:formattedValue,sName:entityJSON.shortLabel,lName:entityJSON.label},styleObj=entityOpts.dataLabels.style,toolText=entityConf.toolText=showTooltip?(0,_lib.parseUnsafeString)((0,_lib.pluck)((0,_lib.parseTooltext)((0,_lib.pluck)(entityJSON.tooltext,entityOpts.tooltext,defaultTooltip),[1,2,7,38,39],tooltextMacroObj,entityJSON)),false):BLANK,borderColor=entityConf.borderColor=(0,_lib.pluck)(entityJSON.bordercolor,entityOpts.borderColor),borderAlpha=entityConf.borderAlpha=(0,_lib.pluck)(entityJSON.borderalpha,entityOpts.borderAlpha),borderThickness=entityConf.borderThickness=(0,_lib.pluckNumber)(entityJSON.borderthickness,entityOpts.borderThickness),hoverOnNull=entityOpts.hoverOnNull,useHoverColor=entityConf.useHoverColor=(0,_lib.pluckNumber)(entityJSON.showhovereffect,entityJSON.usehovercolor,hoverOnNull?entityOpts.showHoverEffect:isNaN(value)?0:entityOpts.showHoverEffect),labelAlignment=entityConf.labelAlignment,colorManager=dataset.getFromEnv("colorManager"),colorObj,link,align,valign,color,alpha,angle,ratio,fillColor,fontColor,fontFamily,fontBold,emptyColorObject,fillColorObject,hoverColor,bgColor,bgAlpha,labels,labelObj,oriLabels,i,alphaArr;entityItem.hidden=false;entityConf.showLabel=(0,_lib.pluckNumber)(entityJSON.showlabel,entityOpts.showLabels);entityConf.labelPadding=(0,_lib.pluckNumber)(entityJSON.labelpadding,entityOpts.labelPadding);entityConf.fontFamily=(0,_lib.pluck)(entityJSON.font,styleObj.fontFamily);entityConf.fontSize=(0,_lib.pluckNumber)(parseInt(entityJSON.fontsize,10),parseInt(styleObj.fontSize,10));entityConf.fontBold=(0,_lib.pluckNumber)(entityJSON.fontbold,0);entityConf.fontColor=(0,_lib.pluck)(entityJSON.labelcolor,entityJSON.fontcolor,styleObj.color);entityConf.labelBgColor=(0,_lib.pluck)(entityJSON.labelbgcolor,styleObj.bgColor)||BLANK;entityConf.labelBorderColor=(0,_lib.pluck)(entityJSON.labelbordercolor,styleObj.borderColor)||BLANK;entityConf.connectorColor=(0,_lib.pluck)(entityJSON.labelconnectorcolor,entityOpts.connectorColor);entityConf.connectorAlpha=(0,_lib.pluck)(entityJSON.labelconnectoralpha,entityOpts.connectorAlpha);entityConf.hoverBorderThickness=(0,_lib.pluckNumber)(entityJSON.borderhoverthickness,entityJSON.hoverborderthickness,entityOpts.hoverBorderThickness);entityConf.hoverBorderColor=(0,_lib.pluck)(entityJSON.borderhovercolor,entityJSON.hoverbordercolor,entityOpts.hoverBorderColor,entityConf.borderColor);entityConf.hoverBorderAlpha=(0,_lib.pluck)(entityJSON.borderhoveralpha,entityJSON.hoverborderalpha,entityOpts.hoverBorderAlpha,entityConf.borderAlpha);entityConf.connectorThickness=(0,_lib.pluckNumber)(entityJSON.labelconnectorthickness,entityOpts.connectorThickness);entityConf.origConnectorThickness=entityConf.connectorThickness;entityConf.borderThickness=borderThickness;entityConf.link=entityJSON.link;entityConf.isVisible=true;entityConf.id=id;entityConf.originalId=entityJSON.origId;if(cleanValue!==null){colorObj=colorManager&&colorManager.getColor(cleanValue);if(colorObj&&!colorObj.outOfRange){bgColor=colorObj.code;if(colorObj.oriAlpha!==UNDEF){bgAlpha=colorObj.oriAlpha+""}}}if((0,_lib.pluck)(entityJSON.color,entityJSON.alpha,entityJSON.angle,entityJSON.ratio)!==UNDEF){color=(0,_lib.pluck)(entityJSON.color,bgColor,entityOpts.fillColor);alpha=(0,_lib.pluck)(entityJSON.alpha,bgAlpha,entityOpts.fillAlpha);angle=(0,_lib.pluck)(entityJSON.angle,entityOpts.fillAngle);ratio=(0,_lib.pluck)(entityJSON.ratio,entityOpts.fillRatio);fillColor=colorize({color:color,alpha:alpha,angle:angle,ratio:ratio})}else{fillColorObject=colorize({color:(0,_lib.pluck)(bgColor,entityOpts.fillColor),alpha:(0,_lib.pluck)(bgAlpha,entityOpts.fillAlpha),angle:(0,_lib.pluck)(entityOpts.fillAngle),ratio:(0,_lib.pluck)(entityOpts.fillRatio)});emptyColorObject=colorize({color:(0,_lib.pluck)(entityOpts.nullEntityColor),alpha:(0,_lib.pluck)(entityOpts.nullEntityAlpha),angle:(0,_lib.pluck)(entityOpts.nullEntityAngle),ratio:(0,_lib.pluck)(entityOpts.nullEntityRatio)});fillColor=cleanValue===null?emptyColorObject:fillColorObject;color=fillColor.FCcolor.color;alpha=fillColor.FCcolor.alpha;angle=fillColor.FCcolor.angle;ratio=fillColor.FCcolor.ratio}if(toolText===BLANK){conf.showTooltip=0}entityConf.visibleEntityAttr={stroke:(0,_lib.convertColor)(borderColor,borderAlpha),fill:(entityConf.fillColor=fillColor).toString(),"fill-opacity":alpha/100};alphaArr=alpha.split(COMMA);entityConf.alphaArr=alphaArr;if(useHoverColor){if((0,_lib.pluck)(entityJSON.fillhovercolor,entityJSON.fillhoveralpha,entityJSON.fillhoverangle,entityJSON.fillhoverratio,entityJSON.hoverfillcolor,entityJSON.hoverfillalpha,entityJSON.hoverfillratio,entityJSON.hoverfillangle)!==UNDEF){color=(0,_lib.pluck)(entityJSON.fillhovercolor,entityJSON.hoverfillcolor,entityOpts.hoverFillColor);alpha=(0,_lib.pluck)(entityJSON.fillhoveralpha,entityJSON.hoverfillalpha,entityOpts.hoverFillAlpha);angle=(0,_lib.pluck)(entityJSON.fillhoverangle,entityJSON.hoverfillangle,entityOpts.hoverFillAngle);ratio=(0,_lib.pluck)(entityJSON.fillhoverratio,entityJSON.hoverfillratio,entityOpts.hoverFillRatio);hoverColor=colorize({color:color,alpha:alpha,angle:angle,ratio:ratio})}else{if(!entityOpts.hoverColorObject){entityOpts.hoverColorObject=colorize({color:entityOpts.hoverFillColor,alpha:entityOpts.hoverFillAlpha,angle:entityOpts.hoverFillAngle,ratio:entityOpts.hoverFillRatio})}hoverColor=entityOpts.hoverColorObject}entityConf.hoverColor=hoverColor}!labelConfig&&(labelConfig=entityItem.labelConfig={});fontColor=entityConf.fontColor;fontFamily=entityConf.fontFamily;fontBold=entityConf.fontBold;toolText=entityConf.toolText;link=entityConf.link;if(labelAlignment){align=labelAlignment[0];valign=labelAlignment[1]}else{align=POSITION_CENTER;valign=POSITION_MIDDLE}labelConfig.align=align;labelConfig.vAlign=valign;labelConfig.fontColor=fontColor;labelConfig.bgColor=entityConf.labelBgColor;labelConfig.borderColor=entityConf.labelBorderColor;labelConfig.fontFamily=fontFamily;labelConfig.fontBold=fontBold;labelConfig.toolText=toolText;labelConfig.link=link;if(typeof entityConf.options==="object"){labels=entityConf.entityLabels=entityConf.entityLabels||[];oriLabels=entityConf.labels||[];i=oriLabels.length;while(i--){if(!labels[i]){labels[i]={config:{}}}labelConfig=labels[i].config;labelAlignment=oriLabels[i].labelAlignment;if(labelAlignment){align=labelAlignment[0];valign=labelAlignment[1]}else{align=POSITION_CENTER;valign=POSITION_MIDDLE}labelConfig.align=align;labelConfig.vAlign=valign;labelConfig.displayValue=dataset.getDisplayValue(entityItem,oriLabels[i],entityConf.options.isDataEnabled,!i,entityJSON);labelConfig.toolText=toolText;labelConfig.align=align;labelConfig.vAlign=valign;labelConfig.bgColor=entityConf.labelBgColor;labelConfig.borderColor=entityConf.labelBorderColor;labelConfig.fontColor=fontColor;labelConfig.fontFamily=fontFamily;labelConfig.fontBold=fontBold;labelConfig.toolText=toolText}}else{labelObj={shortText:entityConf.shortLabel,text:entityConf.label};labelConfig.displayValue=dataset.getDisplayValue(entityItem,labelObj,true,true,entityJSON)}};_proto.getDisplayValue=function getDisplayValue(entity,labelObj,userValue,userDV,entityJSON){var chart=this.getFromEnv("chart"),entityOpts=chart.config.entityOpts,entityConf=entity.config,cleanValue=entityConf.cleanValue,formattedValue=entityConf.formattedValue,labelSepChar=entityOpts.labelSepChar,displayValue;if(userValue){if(userDV&&typeof entityJSON.displayvalue!=="undefined"){displayValue=entityJSON.displayvalue}else{displayValue=(0,_lib.pluck)(entityOpts.includeNameInLabels?entityOpts.useShortName?labelObj.shortText:labelObj.text:"");if(entityOpts.includeValueInLabels&&cleanValue!==null){displayValue=displayValue===UNDEF?formattedValue:displayValue+labelSepChar+formattedValue}}}else{displayValue=entityConf.label}return displayValue};Entities._sanitizeEntityOptions=function _sanitizeEntityOptions(options){delete options.outlines;delete options.label;delete options.shortlabel;delete options.labelposition;delete options.labelalignment;delete options.labelconnectors;return options};_proto._redefineEntities=function _redefineEntities(entityDef){var dataset=this,conf=dataset.config,chart=dataset.getFromEnv("chart"),redefinedEntities={},processedIds={},entities=chart.config.entities,useSNameAsId=conf.useSNameAsId,i,defObj,oldId,newId,sName,lName,id,newObj,entityCount=0,entityStore,entityDataStore,item,entityObj;i=entityDef.length;while(i--){defObj=entityDef[i];oldId=defObj.internalid;newId=defObj.newid?defObj.newid:oldId;sName=defObj.sname;lName=defObj.lname;entityObj=entities[oldId];oldId=(0,_lib.trimString)(oldId);newId=(0,_lib.trimString)(newId);newId=newId&&newId.toLowerCase();if(entityObj){redefinedEntities[newId]=newObj={origId:oldId};processedIds[oldId]=true;for(item in entityObj){newObj[item]=entityObj[item]}newObj.shortLabel=sName||entityObj.shortLabel;newObj.label=lName||entityObj.label;newObj.showhovereffect=defObj.showhovereffect;newObj.fillhovercolor=defObj.fillhovercolor;newObj.fillhoveralpha=defObj.fillhoveralpha;newObj.fillhoverangle=defObj.fillhoverangle;newObj.fillhoverratio=defObj.fillhoverratio;newObj.borderhoverthickness=defObj.borderhoverthickness}}entityDataStore=dataset.components.data;if(!entityDataStore){entityDataStore=dataset.components.data={}}for(id in redefinedEntities){id=id.toLowerCase();if(!entityDataStore[id]){entityDataStore[id]={config:{}}}entityDataStore[id].config=redefinedEntities[id];entityCount+=1}entityStore=entityDataStore;for(id in entities){newObj=entities[id];id=(0,_lib.trimString)(id);if(!processedIds[id]){if(useSNameAsId){entityObj=entityStore[newObj.shortLabel.toLowerCase()];if(!entityObj){entityObj=entityStore[newObj.shortLabel.toLowerCase()]={}}entityObj.config={};entityObj.origId=newObj.shortLabel}else{entityObj=entityStore[id.toLowerCase()];if(!entityObj){entityObj=entityStore[id.toLowerCase()]={}}entityObj.config={};entityObj.config.origId=id}for(item in newObj){entityObj.config[item]=newObj[item]}entityCount+=1}}conf.entityCount=entityCount};_proto.draw=function draw(){var dataset=this,conf=dataset.config,chart=dataset.getFromEnv("chart"),BATCH_SIZE=_lib.hasSVG?200:10,doBatchRendering;dataset.createContainer();this.config.ready=false;conf.BATCH_SIZE=BATCH_SIZE;conf.labelBatchSize=_lib.hasSVG?200:20;doBatchRendering=this._batchRender();doBatchRendering(0);chart.config.entityFlag=true;chart.checkComplete()};_proto._batchRender=function _batchRender(){var dataset=this,conf=dataset.config,chart=dataset.getFromEnv("chart"),firstEntity=chart.config.entities.firstEntity,entities=dataset.components.data,batchSize=conf.BATCH_SIZE,keys=conf.entityKeys=firstEntity?dataset._getKeys(firstEntity,entities):Object.keys(entities),keysLength=conf.entityLength=keys.length,i,entityObj,count,ent,outlinesDrawn,_drawEntities=function drawEntities(entityStartIndex){i=entityStartIndex;count=0;while(keys[i]!==UNDEF){entityObj=entities[keys[i]];outlinesDrawn=dataset.drawEntity(entityObj,batchSize);count+=outlinesDrawn;if(entityObj.config.drawn){ent=i===keysLength-1?entityObj:entities[keys[i-1]];if(ent){ent.config.drawn=false;ent.config.outlineStartIndex=UNDEF}i++}if(count>=batchSize){dataset.addJob("entityDraw",_drawEntities.bind(dataset,i),_schedular.priorityList.entitydraw);break}}if(i===keysLength){dataset._addEventListenersToEntities(0);dataset.initComplete()}};return _drawEntities};_proto._addEventListenersToEntities=function _addEventListenersToEntities(startIndex){var dataset=this,entities=dataset.components.data,conf=dataset.config,batchSize=conf.BATCH_SIZE,keys=conf.entityKeys,i,len=conf.entityLength,entity,count=0,options,entityConf;for(i=startIndex;i<len;i++){entity=entities[keys[i]];entityConf=entity.config;options=entityConf.options;if(!(options&&options.isDataEnabled===false)){dataset.addMouseGestures(entity)}count++;if(count===batchSize){dataset.addJob("_addEventListenersToEntities",dataset._addEventListenersToEntities.bind(this,i),_schedular.priorityList.entitydraw);break}}};Entities._getKeys=function _getKeys(firstEntity,entities){var keys=[firstEntity],item=firstEntity;while(entities[item]){item=entities[item].nextId;keys.push(item)}return keys};_proto._getDefaultTooltip=function _getDefaultTooltip(entity,entityJSON){var dataset=this,value=entity.config.cleanValue,formattedValue=entity.config.formattedValue,entityOpts=dataset.getFromEnv("chart").config.entityOpts,tooltip,labelObj;if(typeof entity.config.options==="object"){labelObj=entityJSON.labels&&entityJSON.labels[0];if(!labelObj){return UNDEF}tooltip=(entityOpts.useSNameInTooltip?labelObj.shortText:labelObj.text)+(value===null?BLANK:entityOpts.tooltipSepChar+formattedValue)}else{tooltip=(entityOpts.useSNameInTooltip?entityJSON.shortLabel:entityJSON.label)+(value===null?BLANK:entityOpts.tooltipSepChar+formattedValue)}return tooltip};_proto.drawEntity=function drawEntity(entity,outlinesDrawCount){var dataset=this,chart=dataset.getFromEnv("chart"),animationManager=chart.getFromEnv("animationManager"),entityConf=entity.config,pathStr=_lib.hasSVG||!isIE?"litepath":"path",entityOpts=chart.config.entityOpts,outlines=entityConf.outlines,toolTipController=dataset.getFromEnv("toolTipController"),addTo=this.getLinkedParent().getChildContainer("plot"),shadowGroup=this.getLinkedParent().getChildContainer("plotShadow"),toolText=entityConf.toolText,showShadow=entityOpts.shadow,i,outlinePath=[],path,visibleEntityAttr,applyAttr,outlineGraphics,outline,count,customStrokeWidthModifier,finalAttr={},shadowOptions;dataset._configureEntityDrawingParams(entity);entityConf=entity.config;visibleEntityAttr=entityConf.visibleEntityAttr;shadowOptions=entityConf.shadowOptions;i=entityConf.outlineStartIndex===UNDEF?outlines.length:entityConf.outlineStartIndex;if(!entity.graphics){entity.graphics={}}count=0;outlinePath=entityConf.outlinePath||(entityConf.outlinePath=[]);customStrokeWidthModifier=entityConf.customStrokeWidthModifier;if(typeof entityConf.options==="object"){while(i--){outlinePath=outlines[i].outline;if(entityConf.options.isDataEnabled===true){applyAttr=visibleEntityAttr}else{applyAttr=(0,_lib.extend2)((0,_lib.extend2)({},visibleEntityAttr),pruneStrokeAttrs(outlines[i].style,customStrokeWidthModifier))}outlineGraphics=entity.graphics.outlines;if(!outlineGraphics){outlineGraphics=entity.graphics.outlines=[]}!outlineGraphics[i]&&(outlineGraphics[i]={});outline=outlineGraphics[i].outline;applyAttr[pathStr]=outlinePath;outline=outlineGraphics[i].outline=animationManager.setAnimation({el:pathStr,container:addTo,attr:applyAttr,component:dataset,label:"path"});outline.shadow(showShadow?shadowOptions:false,shadowGroup);toolTipController.enableToolTip(outline,toolText);count++;entityConf.outlineStartIndex=i;if(count===outlinesDrawCount){return count}}entityConf.drawn=true;return count}while(i--){path=outlines[i];outlinePath=path.concat(outlinePath);count++;entityConf.outlineStartIndex=i;if(count===outlinesDrawCount){entityConf.outlinePath=outlinePath;return count}}!entity.graphics.outlines&&(visibleEntityAttr[pathStr]=outlinePath);Object.assign(finalAttr,visibleEntityAttr,entity.hidden&&{"fill-opacity":0}||{});entity.graphics.outlines=animationManager.setAnimation({el:entity.graphics.outlines||pathStr,container:addTo,attr:finalAttr,component:dataset,label:"path"});entityConf.drawn=true;entityConf.outlineStartIndex=0;entityConf.outlinePath=[];entity.graphics.outlines.shadow(showShadow?shadowOptions:false,shadowGroup);toolTipController.enableToolTip(entity.graphics.outlines,toolText);return count};_proto._configureEntityDrawingParams=function _configureEntityDrawingParams(entity){var dataset=this,chart=dataset.getFromEnv("chart"),entityConf=entity.config,entityOpts=chart.config.entityOpts,scalingParams=chart.config.scalingParams,scaleStrokes=!isIE||_lib.hasSVG,scaleFactor=scalingParams.scaleFactor,scaledPixel=scalingParams.strokeWidth,scaledPixelWithBaseFactor=(scaleStrokes?chart.baseScaleFactor:1)*scaledPixel,scaleBorder=entityOpts.scaleBorder===1,borderThickness=entityConf.borderThickness,alphaArr=entityConf.alphaArr,connectorThickness=entityConf.origConnectorThickness,hoverBorderThickness=entityConf.hoverBorderThickness,visibleEntityAttr=entityConf.visibleEntityAttr,fillOpacity=visibleEntityAttr["fill-opacity"],customStrokeWidthModifier;entityConf.shadowOptions={scalefactor:[scaleFactor,scaleFactor*chart.config.baseScaleFactor],opacity:mathMax.apply(math,alphaArr)/100,useFilter:0};entityConf.fillOpacity=entity.hidden?0:fillOpacity;if(scaleStrokes){borderThickness=entityConf.entityBorderThickness=scaleBorder?borderThickness*scaledPixelWithBaseFactor:borderThickness/scaleFactor;connectorThickness=connectorThickness/scaleFactor;customStrokeWidthModifier=scaleBorder?scaleFactor:scalingParams.sFactor;if(hoverBorderThickness){hoverBorderThickness=entityConf.hoverBorderThickness=scaleBorder?hoverBorderThickness*scaledPixelWithBaseFactor:hoverBorderThickness/scaleFactor}}else{borderThickness=scaleBorder?borderThickness*scaledPixel:borderThickness;customStrokeWidthModifier=scaleBorder?scalingParams.scaleFactor:chart.baseScaleFactor}entityConf.entityBorderThickness=borderThickness;entityConf.connectorThickness=connectorThickness;entityConf.customStrokeWidthModifier=customStrokeWidthModifier;visibleEntityAttr["stroke-width"]=borderThickness;visibleEntityAttr.transform=_lib.hasSVG||!isIE?"":scalingParams.transformStr};_proto.drawLabels=function drawLabels(ent){var dataset=this,itemMap=ent,chart=dataset.getFromEnv("chart"),conf=dataset.config,batchSize=conf.labelBatchSize,keysLength=conf.entityLength,labelItems=[],i,j,annGroupElem=chart.getChildContainer("upperAnnotationGroup"),groupItems,annObj,annCount=0,mapLabelAnnotations=dataset.getChildren("mapLabelAnnotations")&&dataset.getChildren("mapLabelAnnotations")[annCount],count=0,labelItemsAdded=0,annConfig=chart.config.annotationConfig;if(!mapLabelAnnotations){annObj=new _extAnnotation.default;dataset.attachChild(annObj,"mapLabelAnnotations");mapLabelAnnotations=dataset.getChildren("mapLabelAnnotations")[annCount];mapLabelAnnotations.addCustomGroup(annGroupElem)}mapLabelAnnotations.destroy();mapLabelAnnotations._renderer&&(mapLabelAnnotations._renderer=null);annConfig.showbelow=0;for(i in itemMap){dataset.drawLabel(itemMap[i],labelItems);count++;if(count===batchSize){for(j=0;j<labelItems.length;j++){labelItems[j].animationLabel=ENTITYLABEL}groupItems=mapLabelAnnotations.addGroup(Object.assign(annConfig,{id:"entityLabels"+annCount,items:labelItems,animationLabel:"entityLabelGroup"}),dataset);for(j=0;j<groupItems.items.length;j++){groupItems.items[j].addEventListener("fc-mouseover",labelItems[j].onmouseover);groupItems.items[j].addEventListener("fc-mouseout",labelItems[j].onmouseout);groupItems.items[j].addEventListener("fc-click",labelItems[j].onclick)}annCount++;mapLabelAnnotations=dataset.getChildren("mapLabelAnnotations")&&dataset.getChildren("mapLabelAnnotations")[annCount];if(!mapLabelAnnotations){annObj=new _extAnnotation.default;dataset.attachChild(annObj,"mapLabelAnnotations");mapLabelAnnotations=dataset.getChildren("mapLabelAnnotations")[annCount];mapLabelAnnotations.addCustomGroup(annGroupElem)}mapLabelAnnotations.destroy();mapLabelAnnotations._renderer&&(mapLabelAnnotations._renderer=null);count=0;labelItems=[]}else if(labelItemsAdded===keysLength-1){for(j=0;j<labelItems.length;j++){labelItems[j].animationLabel=ENTITYLABEL}groupItems=mapLabelAnnotations.addGroup(Object.assign(annConfig,{id:"entityLabels"+annCount,items:labelItems,animationLabel:"entityLabelGroup"}),dataset);for(j=0;j<groupItems.items.length;j++){groupItems.items[j].addEventListener("fc-mouseover",labelItems[j].onmouseover);groupItems.items[j].addEventListener("fc-mouseout",labelItems[j].onmouseout);groupItems.items[j].addEventListener("fc-click",labelItems[j].onclick)}}labelItemsAdded++}dataset.drawLabelConnFn(0)};_proto.drawLabelConnFn=function drawLabelConnFn(startIndex){var dataset=this,conf=dataset.config,entities=dataset.components.data,batchSize=conf.BATCH_SIZE,keys=conf.entityKeys,l,i,length=keys.length,labelArr,config,entity,count=0;for(i=startIndex;i<length;i++){entity=entities[keys[i]];config=entity.config;if(typeof config.options==="object"){labelArr=config.labels;l=labelArr&&labelArr.length||0;while(l--){if(labelArr[l].labelConnectors){dataset.drawLabelConnectors(entity,labelArr[l].labelConnectors,dataset);count++}}}else{if(config.labelConnectors){dataset.drawLabelConnectors(entity,config.labelConnectors,dataset);count++}}if(count===batchSize){dataset.addJob("drawLabelConnectors",dataset.drawLabelConnFn.bind(this,i),_schedular.priorityList.entitydraw);break}}};_proto._getLabelObject=function _getLabelObject(entity,index,userValue){var dataset=this,chart=dataset.getFromEnv("chart"),chartAttrs=dataset.getFromEnv("chart-attrib"),entityConf=entity.config,labelConfig,scalingParams=chart.config.scalingParams,labelPos,labelAlignment,firstEle=entity.graphics&&entity.graphics.outlines,fontStyleObj,fontSize=entityConf.fontSize,labelPadding=entityConf.labelPadding,labelsArr=entityConf.labels||[],entityLabels=entityConf.entityLabels||[],baseWidth,baseHeight,labelX,labelY,box,align,valign,fsize,xOffset,yOffset,oriLabelObj,labelObj;if(index!==UNDEF){oriLabelObj=labelsArr[index];labelObj=entityLabels[index];labelConfig=labelObj.config;fontStyleObj=labelConfig.style=oriLabelObj.style;labelPos=oriLabelObj.labelPosition;labelAlignment=oriLabelObj.labelAlignment}else{labelConfig=entity.labelConfig;labelPos=entityConf.labelPosition;labelAlignment=entityConf.labelAlignment}if(labelPos){labelX=labelPos[0];labelY=labelPos[1]}else{box=firstEle.getBBox();labelX=box.x+box.width/2;labelY=box.y+box.height/2}if(labelAlignment){align=labelAlignment[0];valign=labelAlignment[1];if(align===POSITION_RIGHT){labelX-=labelPadding}else if(align===POSITION_LEFT){labelX+=labelPadding}if(valign===POSITION_TOP){labelY-=labelPadding}else if(valign===POSITION_BOTTOM){labelY+=labelPadding}}else{align=POSITION_CENTER;valign=POSITION_MIDDLE}fsize=parseFloat(fontSize)/scalingParams.sFactor;if(!userValue&&fontStyleObj){fontStyleObj.color&&(labelConfig.fontColor=fontStyleObj.color);fontStyleObj["font-size"]&&(fsize=parseFloat(fontStyleObj["font-size"])/scalingParams.sFactor);fontStyleObj["font-family"]&&(labelConfig.fontFamily=fontStyleObj["font-family"]);fontStyleObj["font-weight"]!==UNDEF&&(labelConfig.fontBold=fontStyleObj["font-weight"]==="bold")}labelConfig.x=labelX.toString();labelConfig.y=labelY.toString();labelConfig.wrap=1;labelConfig.type=TEXT_STR;labelConfig.fontSize=fsize;return{x:labelX.toString(),y:labelY.toString(),wrapwidth:getTextWrapWidth[align](baseWidth,labelX+xOffset)-labelPadding,wrapheight:getTextWrapHeight[valign](baseHeight,labelY+yOffset)-labelPadding,wrap:1,type:"text",align:labelConfig.align,valign:labelConfig.vAlign,text:labelConfig.displayValue,tooltext:labelConfig.toolText,outlineText:(0,_lib.pluckNumber)(chartAttrs.textoutline,0),css:labelConfig.link!==UNDEF&&{cursor:"pointer",_cursor:"hand"},bgcolor:labelConfig.bgColor,bordercolor:labelConfig.borderColor,fillcolor:labelConfig.fontColor,fontsize:labelConfig.fontSize,font:labelConfig.fontFamily,bold:labelConfig.fontBold,onclick:function onclick(e){var hoverEnt=entity.graphics.outlines,i,len;if(hoverEnt instanceof Array){for(i=0,len=hoverEnt.length;i<len;i++){dataset.entityClick(hoverEnt[i].outline,e)}}else{dataset.entityClick(hoverEnt,e)}},onmouseover:function onmouseover(e){var hoverEnt=entity.graphics.outlines,i,len;if(hoverEnt instanceof Array){for(i=0,len=hoverEnt.length;i<len;i++){dataset.entityRollOver(hoverEnt[i].outline,e)}}else{dataset.entityRollOver(hoverEnt,e)}},onmouseout:function onmouseout(e){var hoverEnt=entity.graphics.outlines,i,len;if(hoverEnt instanceof Array){for(i=0,len=hoverEnt.length;i<len;i++){dataset.entityRollOut(hoverEnt[i].outline,e)}}else{dataset.entityRollOut(hoverEnt,e)}},ontouchstart:function ontouchstart(e){var hoverEnt=entity.graphics.outlines,i,len;if(hoverEnt instanceof Array){for(i=0,len=hoverEnt.length;i<len;i++){dataset.entityRollOver(hoverEnt[i].outline,e)}}else{dataset.entityRollOver(hoverEnt,e)}dataset.entityRollOver(hoverEnt,e)}}};_proto.drawLabel=function drawLabel(entity,annotationsArray){var dataset=this,config=entity.config,showLabel=config.showLabel,useValue,i,labelArr;if(!showLabel){return}if(typeof config.options==="object"){labelArr=config.labels;i=labelArr&&labelArr.length||0;useValue=config.options.isDataEnabled;while(i--){annotationsArray.push(dataset._getLabelObject(entity,i,useValue,!i))}}else{annotationsArray.push(dataset._getLabelObject(entity,UNDEF,true,true))}};_proto.drawLabelConnectors=function drawLabelConnectors(entity,connectorArr,dataSet){var entityConf=entity.config,dataset=this,chart=dataset.getFromEnv("chart"),animationManager=chart.getFromEnv("animationManager"),scalingParams=chart.config.scalingParams,datasetGroup=dataSet.getLinkedParent().getChildContainer("plot"),i=connectorArr&&connectorArr.length||0,connElem,path,showLabel=entityConf.showLabel;while(i--){path=connectorArr[i];connElem=entity.graphics.connectorElem;if(showLabel){entity.graphics.connectorElem=connElem=animationManager.setAnimation({el:entity.graphics.connectorElem||"path",attr:{path:path,opacity:1,transform:_lib.hasSVG||!isIE?"":scalingParams.transformStr,stroke:(0,_lib.convertColor)(entityConf.connectorColor,entityConf.connectorAlpha),"shape-rendering":CRISP,"stroke-width":entityConf.connectorThickness},container:datasetGroup,component:dataset,label:"labelConnectors"})}else{connElem&&connElem.hide()}}};_proto.entityClick=function entityClick(entityElem,e){var entity=entityElem.node.__entity,dataset=this,chart=dataset.getFromEnv("chart"),scalingParams=chart.config.scalingParams,entityBox=entityElem.getBBox(),linkClickFN=chart.getFromEnv("linkClickFN"),config=entity.config,link=config.link;entityBox.width=entityBox.width*scalingParams.scaleFactor;entityBox.height=entityBox.height*scalingParams.scaleFactor;entityBox.x=entityBox.x*scalingParams.scaleFactor+scalingParams.translateX;entityBox.y=entityBox.y*scalingParams.scaleFactor+scalingParams.translateY;entityBox.x2=entityBox.x+entityBox.width;entityBox.y2=entityBox.y+entityBox.height;chart.fireChartInstanceEvent("entityclick",config.eventArgs,e);if(link!==UNDEF){linkClickFN.call({link:link,entity:entity,entityBox:entityBox},true)}};_proto.entityRollOver=function entityRollOver(entityElem,e){var entity=entityElem.node.__entity,dataset=this,config=entity.config,chart=dataset.getFromEnv("chart"),animationManager=chart.getFromEnv("animationManager"),hoverAttr=config.hoverAttr;chart.plotEventHandler(entityElem,e,"entityRollOver");if(entityElem.data("hovered")){clearTimeout(entity.config.timer)}else{if(config.useHoverColor&&config.isVisible&&!entity.hidden&&hoverAttr){chart.config.hoverEntity=entityElem;animationManager.setAnimation({el:entityElem,attr:hoverAttr,component:dataset,state:"updating",label:"path"});entityElem.data("hovered",true)}}};_proto.entityRollOut=function entityRollOut(entityElem,e){var entity=entityElem.node.__entity,dataset=this,hidden,chart=dataset.getFromEnv("chart"),animationManager=chart.getFromEnv("animationManager"),config=entity.config,revertAttr=config.revertAttr;chart.plotEventHandler(entityElem,e,"entityRollOut");entity.config.timer=setTimeout((function(){hidden=entity.hidden;if(hidden!==true&&revertAttr){animationManager.setAnimation({el:entityElem,attr:revertAttr,component:dataset,state:"updating",label:"path"});entityElem.data("hovered",false)}}),100)};_proto.addMouseGestures=function addMouseGestures(entity){var config=entity.config,originalId=config.originalId,dataset=this,graphics=entity.graphics,useHoverColor=config.useHoverColor,hoverBorderThickness=config.hoverBorderThickness,hoverBorderColor=config.hoverBorderColor,hoverBorderAlpha=config.hoverBorderAlpha,borderThickness=config.entityBorderThickness,borderColor=config.borderColor,borderAlpha=config.borderAlpha,link=config.link,visibleEntityAttr=config.visibleEntityAttr,groupId="groupId"+originalId,item,i,graphic,len,outlines,bindListener=function bindListener(graphicEle){if(link!==UNDEF){graphicEle.css({cursor:"pointer",_cursor:"hand"})}graphicEle.data("eventArgs",config.eventArgs);graphicEle.data("groupId",groupId);graphicEle.node.__entity=entity;if(!entity._listenersBinded){graphicEle.on("fc-click",dataset.entityClick.bind(dataset,graphicEle)).hover(dataset.entityRollOver.bind(dataset,graphicEle),dataset.entityRollOut.bind(dataset,graphicEle))}};config.eventArgs={value:config.cleanValue,label:config.label,shortLabel:config.shortLabel,originalId:config.origId,id:config.id||config.origId};config.legacyEventArgs={value:config.value,lName:config.label,sName:config.shortLabel,id:config.originalId||config.id};if(useHoverColor){config.hoverAttr={fill:(0,_lib.toRaphaelColor)(config.hoverColor)};config.revertAttr={fill:(0,_lib.toRaphaelColor)(config.fillColor),stroke:(0,_lib.toRaphaelColor)(config.borderColor,config.borderAlpha)};config.revertAttr["fill-opacity"]=visibleEntityAttr["fill-opacity"];if(hoverBorderThickness!==borderThickness){config.hoverAttr["stroke-width"]=(0,_lib.pluckNumber)(hoverBorderThickness,borderThickness);config.revertAttr["stroke-width"]=borderThickness}if(hoverBorderColor!==borderColor||hoverBorderAlpha!==borderAlpha){config.hoverAttr.stroke=(0,_lib.convertColor)(hoverBorderColor,hoverBorderAlpha);config.revertAttr.stroke=(0,_lib.convertColor)(borderColor,borderAlpha)}}for(item in graphics){if(graphics.hasOwnProperty(item)){if(graphics[item]instanceof Array){outlines=graphics[item];for(i=0,len=outlines.length;i<len;i++){graphic=outlines[i].outline;bindListener(graphic)}entity._listenersBinded=true}else{graphic=graphics[item];bindListener(graphic);entity._listenersBinded=true}}}};_proto.getDataLimits=function getDataLimits(){var dataset=this,conf=dataset.config;return{max:conf.max,min:conf.min}};_proto.createContainer=function createContainer(){var dataset=this,parent=dataset.getLinkedParent(),animationManager=dataset.getFromEnv("animationManager"),pContainer=parent.getChildContainer("layer0");!dataset.getChildContainer("abovePlotGroup")&&dataset.addChildContainer("abovePlotGroup",animationManager.setAnimation({el:"group",attr:{name:"abovePlotGroup",opacity:1},container:pContainer,component:dataset,label:"group"}));!dataset.getChildContainer("belowPlotGroup")&&dataset.addChildContainer("belowPlotGroup",animationManager.setAnimation({el:"group",attr:{name:"belowPlotGroup",opacity:1},container:pContainer,component:dataset,label:"group"}))};_proto.initComplete=function initComplete(){var dataset=this,chart=dataset.getFromEnv("chart"),entities=dataset.components.data;this.drawLabels(entities);chart.config.entitiesReady=true;chart.checkComplete()};return Entities}(_componentInterface.ComponentInterface);var _default=exports.default=Entities;