@fusioncharts/charts
Version:
JavaScript Data Visualisation Library
1 lines • 9.64 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 _lib=require("@fusioncharts/core/src/lib");var _componentInterface=require("@fusioncharts/core/src/component-interface");var _dependencyManager=require("@fusioncharts/core/src/dependency-manager");var _index=_interopRequireDefault(require("./index.animation"));var mathMax=Math.max,mathMin=Math.min,mathCeil=Math.ceil,PXSTRING="px",POSITION_RIGHT="right",POSITION_LEFT="left",POSITION_CENTER="center",POSITION_TOP="top",POSITION_BOTTOM="bottom",POSITION_MIDDLE="middle",POSITION_START="start",POSITION_END="end";(0,_dependencyManager.addDep)({name:"captionAnimation",type:"animationRule",extension:_index.default});var Caption=function(_ComponentInterface){function Caption(){return _ComponentInterface.apply(this,arguments)||this}(0,_inheritsLoose2.default)(Caption,_ComponentInterface);var _proto=Caption.prototype;_proto.getType=function getType(){return"caption"};_proto.getName=function getName(){return"caption"};_proto.configure=function configure(){var iapi=this.getFromEnv("chart"),chartAttrs=iapi.getFromEnv("chart-attrib"),caption=this,captionConfig=caption.config||{},style=iapi.getFromEnv("style"),outCanfontFamily=style.outCanfontFamily,outCancolor=style.outCancolor,align=["top","center"];caption.config.text=(0,_lib.parseUnsafeString)(chartAttrs.caption);captionConfig.style={fontFamily:(0,_lib.pluck)(chartAttrs.captionfont,outCanfontFamily),color:(0,_lib.convertColor)((0,_lib.pluck)(chartAttrs.captionfontcolor,outCancolor).replace(/^#? ([a-f0-9]+)/gi,"#$1")),fontSize:(0,_lib.pluckNumber)(this.computeFontSize(chartAttrs.captionfontsize),this.computeFontSize(style.fontSizeWithUnit)+3)+PXSTRING,fontWeight:(0,_lib.pluckNumber)(chartAttrs.captionfontbold)===0?_lib.NORMAL:_lib.BOLD};if(!captionConfig.align){captionConfig.align=_lib.BLANKSTRING}captionConfig.align=(0,_lib.pluck)(chartAttrs.captionposition,chartAttrs.captionalignment,POSITION_CENTER);if(captionConfig.align){align=captionConfig.align.split("-");align[0]&&(align[0]=align[0].toLowerCase());align[1]&&(align[1]=align[1].toLowerCase());if(align.length<2){align[1]=align[0]}}switch(align[0]){case POSITION_TOP:captionConfig.isOnTop=1;break;case POSITION_BOTTOM:captionConfig.isOnTop=0;break;default:captionConfig.isOnTop=(0,_lib.pluckNumber)(chartAttrs.captionontop,1)}switch(align[1]){case POSITION_RIGHT:captionConfig.align=POSITION_END;break;case POSITION_LEFT:captionConfig.align=POSITION_START;break;default:captionConfig.align=POSITION_MIDDLE}captionConfig.isOnLeft=!(0,_lib.pluckNumber)(chartAttrs.captiononright,0);captionConfig.captionPosition=(0,_lib.getValidValue)(chartAttrs.captionposition,POSITION_TOP).toLowerCase();captionConfig.alignWithCanvas=(0,_lib.pluckNumber)(chartAttrs.aligncaptionwithcanvas,iapi.config.alignCaptionWithCanvas,1);captionConfig.horizontalPadding=(0,_lib.pluckNumber)(chartAttrs.captionhorizontalpadding,captionConfig.alignWithCanvas?0:15);captionConfig.drawCaption=true;(0,_lib.setLineHeight)(captionConfig.style)};_proto.allocatePosition=function allocatePosition(){var caption=this,chart=caption.getFromEnv("chart");chart._manageCaptionPosition()};_proto.draw=function draw(){var caption=this,iapi=this.getFromEnv("chart"),chartConfig=iapi.config,animationManager=iapi.getFromEnv("animationManager"),textDirection=iapi.config.textDirection,captionGroup=iapi.getChildContainer().captionGroup,smartLabel=iapi.getFromEnv("smartLabel"),captionElement=caption.getGraphicalElement("captionElement"),toolTipController=caption.getFromEnv("toolTipController"),captionConfig=caption.config,captionStyle=captionConfig.style,hasCaption=captionConfig.text,captionX=captionConfig.x,align=captionConfig.align,captionAttrObj,captionState;if(hasCaption){captionAttrObj={text:captionConfig.text,fill:captionStyle.color,x:captionX,y:captionConfig.y,"text-anchor":align||POSITION_MIDDLE,"vertical-align":captionConfig.verticalAlign||POSITION_TOP,visibility:captionConfig.drawCaption?_lib.visibleStr:_lib.hiddenStr,direction:textDirection};captionElement=caption.addGraphicalElement("captionElement",animationManager.setAnimation({el:captionElement||"text",attr:captionAttrObj,container:captionGroup,state:captionState,component:caption,label:"text"}));captionElement.css(captionStyle);if(chartConfig.showtooltip){toolTipController.enableToolTip(captionElement,captionConfig.originalText)}else{toolTipController.disableToolTip(captionElement)}if(smartLabel){smartLabel.useEllipsesOnOverflow(chartConfig.useEllipsesWhenOverflow);smartLabel.setStyle(captionStyle)}}else if(captionElement){animationManager.setAnimation({el:captionElement,component:caption,callback:function callback(){this.hide()},doNotRemove:true})}chartConfig.savedCaption=captionElement};_proto.manageSpace=function manageSpace(availableHeight,availableWidth){var iapi=this.getFromEnv("chart"),chartConfig=iapi.config,caption=iapi.getChildren("caption")[0],subCaption=iapi.getChildren("subCaption")[0],style=iapi.getFromEnv("style"),fontSizeWithUnit=style.fontSizeWithUnit,captionConfig=caption.config,subCaptionConfig=subCaption.config,captionStyle=captionConfig.style,subCaptionStyle=subCaptionConfig.style,chartAttrs=iapi.getFromEnv("dataSource").chart,SmartLabel=iapi.getFromEnv("smartLabel"),allowedHeight=availableHeight,titleText=(0,_lib.parseUnsafeString)(chartAttrs.caption),subTitleText=(0,_lib.parseUnsafeString)(chartAttrs.subcaption),captionPadding=(0,_lib.pluckNumber)(chartAttrs.captionpadding,10),oriCapPadding=captionPadding,isPaddingReduced=false,captionObj,subcaptionObj,totalHeight=0,capStyle,dimensions,subCapStyle,difference=0,extraSpace=0,captionLineHeight=0,subCaptionLineHeight=0,topGutterWidth=5,canvas=iapi.getChildren("canvas"),canvasBorderThickness=mathMax(canvas&&canvas[0].config.canvasBorderThickness,0),captionWidth=0,subCaptionWidth=0;captionStyle.fontSize=(0,_lib.pluckNumber)(this.computeFontSize(chartAttrs.captionfontsize),this.computeFontSize(fontSizeWithUnit)+3)+PXSTRING;(0,_lib.setLineHeight)(captionStyle);subCaptionStyle.fontSize=(0,_lib.pluckNumber)(this.computeFontSize(chartAttrs.subcaptionfontsize),(0,_lib.pluckNumber)(mathMax((0,_lib.pluckNumber)(this.computeFontSize(chartAttrs.captionfontsize))-3,-1),this.computeFontSize(fontSizeWithUnit))+(0,_lib.pluckNumber)(iapi.subTitleFontSizeExtender,1))+PXSTRING;(0,_lib.setLineHeight)(subCaptionStyle);if(allowedHeight>3){if(captionPadding<canvasBorderThickness){captionPadding=canvasBorderThickness+2}if(titleText!==_lib.BLANKSTRING){capStyle=captionConfig.style;captionLineHeight=mathCeil((0,_lib.pluckNumber)(parseFloat(capStyle.fontHeight,10),parseFloat(capStyle.lineHeight,10),12))}if(subTitleText!==_lib.BLANKSTRING){subCapStyle=subCaptionConfig.style;subCaptionLineHeight=(0,_lib.pluckNumber)(parseInt(subCapStyle.fontHeight,10),parseInt(subCapStyle.lineHeight,10),12)}if(captionLineHeight>0||subCaptionLineHeight>0){allowedHeight=mathMax(allowedHeight,0);totalHeight=captionLineHeight+subCaptionLineHeight+captionPadding;if(totalHeight>allowedHeight){difference=totalHeight-allowedHeight;isPaddingReduced=true;if(difference<captionPadding){captionPadding=mathMax(difference,5)}else{difference-=captionPadding;captionPadding=0;if(subCaptionLineHeight>difference){extraSpace=subCaptionLineHeight-difference+10;subCaptionLineHeight=0;subCaptionConfig._originalText=subCaptionConfig.text;subCaptionConfig.text=_lib.BLANKSTRING}else{difference-=subCaptionLineHeight;subCaptionLineHeight=0;if(captionLineHeight>difference){extraSpace=captionLineHeight-difference}}}}else{extraSpace=allowedHeight-totalHeight}SmartLabel.useEllipsesOnOverflow(chartConfig.useEllipsesWhenOverflow);if(captionLineHeight>0){SmartLabel.setStyle(capStyle);captionLineHeight+=extraSpace;captionObj=SmartLabel.getSmartText(titleText,availableWidth,captionLineHeight);extraSpace=captionLineHeight-captionObj.height;captionConfig.height=captionLineHeight=captionObj.height;captionConfig.text=captionObj.text;captionConfig.originalText=captionObj.tooltext?captionObj.tooltext:false;captionWidth=captionObj.width}if(subCaptionLineHeight>0){SmartLabel.setStyle(subCapStyle);subCaptionLineHeight+=extraSpace;subcaptionObj=SmartLabel.getSmartText(subTitleText,availableWidth,subCaptionLineHeight);extraSpace=subCaptionLineHeight-subcaptionObj.height;subCaptionLineHeight=subcaptionObj.height;subCaptionConfig.text=subcaptionObj.text;subCaptionConfig.height=subcaptionObj.height;subCaptionConfig.originalText=subcaptionObj.tooltext?subcaptionObj.tooltext:false;subCaptionWidth=subcaptionObj.width}if(isPaddingReduced&&extraSpace>0){captionPadding+=mathMin(oriCapPadding-captionPadding,extraSpace)}captionConfig.captionPadding=captionPadding;captionConfig.height=captionLineHeight;captionConfig.width=captionWidth;subCaptionConfig.width=subCaptionWidth;subCaptionConfig.height=subCaptionLineHeight;totalHeight=captionLineHeight+subCaptionLineHeight+captionPadding}else{captionConfig.height=0;subCaptionConfig.height=0}if(totalHeight>chartConfig.canvasHeight){totalHeight=0;captionConfig.drawCaption=false}else{captionConfig.drawCaption=true}if(captionConfig.isOnTop){dimensions={top:totalHeight}}else{dimensions={bottom:totalHeight,top:topGutterWidth}}}else{dimensions={bottom:0,top:0};captionConfig.drawCaption=false}return dimensions};_proto.setDimention=function setDimention(pos){var caption=this,captionConfig=caption.config;captionConfig.x=pos.x;captionConfig.y=pos.y};return Caption}(_componentInterface.ComponentInterface);var _default=exports.default=Caption;