@fusioncharts/fusiontime
Version:
FusionCharts JavaScript time-series charting framework
1 lines • 5.8 kB
JavaScript
"use strict";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 _lib=require("@fusioncharts/core/src/lib");var _DEFAULT_CAPTION_CSS,_DEFAULT_SUBCAPTION_C;var LEFT="left",RIGHT="right",MIDDLE="middle",START="start",END="end",TOP="top",DEFAULT_CAPTION_PADDING=10,CAPTION_SUBCAPTION_GAP_RATIO=.02,CAPTION_HEIGHT_RATIO=.7,SUBCAPTION_HEIGHT_RATIO=.3,FONTSTYLE="font-style",FONTSIZE="font-size",FONTWEIGHT="font-weight",TEXT_ANCHOR="text-anchor",VERTICAL_ALIGN="vertical-align",FILL="fill",DEFAULT_CAPTION_CSS=(_DEFAULT_CAPTION_CSS={},_DEFAULT_CAPTION_CSS[FONTSIZE]="16px",_DEFAULT_CAPTION_CSS[FONTSTYLE]="normal",_DEFAULT_CAPTION_CSS[FONTWEIGHT]="bold",_DEFAULT_CAPTION_CSS[FILL]="#5F5F5F",_DEFAULT_CAPTION_CSS),DEFAULT_SUBCAPTION_CSS=(_DEFAULT_SUBCAPTION_C={},_DEFAULT_SUBCAPTION_C[FONTSIZE]="12px",_DEFAULT_SUBCAPTION_C[FONTSTYLE]="normal",_DEFAULT_SUBCAPTION_C[FONTWEIGHT]="normal",_DEFAULT_SUBCAPTION_C[FILL]="#B1B1B1",_DEFAULT_SUBCAPTION_C);var Caption=function(_SmartRenderer){function Caption(){return _SmartRenderer.apply(this,arguments)||this}(0,_inheritsLoose2.default)(Caption,_SmartRenderer);var _proto=Caption.prototype;_proto.__setDefaultConfig=function __setDefaultConfig(){_SmartRenderer.prototype.__setDefaultConfig.call(this);var caption=this,captionConfig=caption.config;captionConfig.captionCss=DEFAULT_CAPTION_CSS;captionConfig.subCaptionCss=DEFAULT_SUBCAPTION_CSS;captionConfig.alignment=LEFT;captionConfig.gap=0};_proto.configureAttributes=function configureAttributes(options){if(options===void 0){options={}}_SmartRenderer.prototype.configureAttributes.call(this,options);var caption=this,captionConfig=caption.config,baseTextStyle=caption.getFromEnv("baseTextStyle");Object.keys(options).forEach((function(key){return captionConfig[key]=options[key]}));captionConfig.captionCss=Object.assign({},DEFAULT_CAPTION_CSS,baseTextStyle,captionConfig.captionCss||{});captionConfig.subCaptionCss=Object.assign({},DEFAULT_SUBCAPTION_CSS,baseTextStyle,captionConfig.subCaptionCss||{})};_proto.setDimension=function setDimension(dim){var caption=this,captionConfig=caption.config,smartLabel=caption.getFromEnv("smartLabel"),maxHeight=dim.height-DEFAULT_CAPTION_PADDING,maxWidth=dim.width,availableHeight,maxCaptionHeight=0,maxSubCaptionHeight=0,captionDim,subCaptionDim,gap;if(captionConfig.subCaption){gap=captionConfig.gap=maxHeight*CAPTION_SUBCAPTION_GAP_RATIO;availableHeight=maxHeight-gap;maxCaptionHeight=availableHeight*CAPTION_HEIGHT_RATIO;maxSubCaptionHeight=captionConfig.caption?availableHeight*SUBCAPTION_HEIGHT_RATIO:maxHeight}else{availableHeight=maxCaptionHeight=maxHeight}smartLabel.useEllipsesOnOverflow(true);smartLabel.setStyle(captionConfig.captionCss);captionDim=captionConfig.captionDim=smartLabel.getSmartText(captionConfig.caption,maxWidth,maxCaptionHeight);smartLabel.setStyle(captionConfig.subCaptionCss);subCaptionDim=captionConfig.subCaptionDim=smartLabel.getSmartText(captionConfig.subCaption,maxWidth,maxSubCaptionHeight);maxHeight=captionDim.height+(captionConfig.subCaption?gap:0)+subCaptionDim.height;maxHeight+=maxHeight===0?0:DEFAULT_CAPTION_PADDING;captionConfig.spaceTaken={width:maxWidth,height:maxHeight};return{height:maxHeight,width:maxWidth}};_proto.draw=function draw(){var caption=this,captionConfig=caption.config,chartConfig=caption.getFromEnv("chart").config,captionDim=captionConfig.captionDim,subCaptionDim=captionConfig.subCaptionDim,xCaptionPos,xSubCaptionPos,captionTextAnchor,subCaptionTextAnchor,spaceTaken=captionConfig.spaceTaken,captionAttr={text:captionDim.text},subCaptionAttr={text:subCaptionDim.text};switch(captionConfig.captionAlignment){case RIGHT:xCaptionPos=spaceTaken.width;captionTextAnchor=END;break;case MIDDLE:xCaptionPos=spaceTaken.width/2;captionTextAnchor=MIDDLE;break;case LEFT:default:xCaptionPos=0;captionTextAnchor=START}switch(captionConfig.subCaptionAlignment){case RIGHT:xSubCaptionPos=spaceTaken.width;subCaptionTextAnchor=END;break;case MIDDLE:xSubCaptionPos=spaceTaken.width/2;subCaptionTextAnchor=MIDDLE;break;case LEFT:default:xSubCaptionPos=0;subCaptionTextAnchor=START}captionAttr.x=xCaptionPos;subCaptionAttr.x=xSubCaptionPos;captionAttr[TEXT_ANCHOR]=captionTextAnchor;subCaptionAttr[TEXT_ANCHOR]=subCaptionTextAnchor;captionAttr[VERTICAL_ALIGN]=subCaptionAttr[VERTICAL_ALIGN]=TOP;captionAttr.y=0;subCaptionAttr.y=captionConfig.gap+captionDim.height;caption.addGraphicalElement({el:"group",container:{id:"strato",label:"group",isParent:true},component:caption,label:"group",attr:{name:"caption-strato",transform:captionConfig.translate},id:"strato"});captionConfig.caption&&caption.addGraphicalElement({el:"text",attr:{x:captionAttr.x,y:captionAttr.y,text:captionAttr.text,"vertical-align":captionAttr[VERTICAL_ALIGN],opacity:captionConfig.captionCss.opacity,"text-anchor":captionAttr[TEXT_ANCHOR]},css:captionConfig.captionCss,container:{id:"strato",label:"group",isParent:false},tooltext:chartConfig.showTooltip?captionDim.tooltext:_lib.UNDEF,component:caption,id:"caption",label:"text"});captionConfig.subCaption&&caption.addGraphicalElement({el:"text",attr:{x:subCaptionAttr.x,y:subCaptionAttr.y,text:subCaptionAttr.text,"vertical-align":subCaptionAttr[VERTICAL_ALIGN],opacity:captionConfig.subCaptionCss.opacity,"text-anchor":subCaptionAttr[TEXT_ANCHOR]},css:captionConfig.subCaptionCss,container:{id:"strato",label:"group",isParent:false},tooltext:chartConfig.showTooltip?subCaptionDim.tooltext:_lib.UNDEF,component:caption,id:"subCaption",label:"text"})};return Caption}(_componentInterface.SmartRenderer);var _default=exports.default=Caption;