@fusioncharts/features
Version:
FusionCharts JavaScript charting framework
1 lines • 11.8 kB
JavaScript
;exports.__esModule=true;exports.default=void 0;var _libSvgToCanvas=require("../utils/lib-svg-to-canvas");var _jpegToPdf=require("../utils/jpeg-to-pdf");var _lib=require("@fusioncharts/core/src/lib");var _exportUtils=require("../utils/export-utils");var _eventApi=require("@fusioncharts/core/src/event-api");var NEW_CANVAS_ID="newCanvas";var win=window,math=Math,UNDEF,mathMax=math.max,Image=win.Image,isIOS=win.navigator.userAgent.match(/(iPad|iPhone|iPod)/g),IMAGEDATA="IMAGE-DATA",DEFAULT_LOG_URL=win.location.protocol==="https:"?"https://export.api3.fusioncharts.com/api/v1.0/logs":"http://export.api3.fusioncharts.com/api/v1.0/logs",DEFAULT_EXPORT_URL=win.location.protocol==="https:"?"https://export.api3.fusioncharts.com/":"http://export.api3.fusioncharts.com/",BLANKSTRING="",FCGlobal,isImageSafe=function isImageSafe(imageUrl){if(imageUrl.match(/http:\/\/|https:\/\//)){if(/(http:\/\/|https:\/\/)([^\/\:]*)/.exec(imageUrl)[2]){if(win.location.hostname!==/(http:\/\/|https:\/\/)([^\/\:]*)/.exec(imageUrl)[2]){return false}}}return true},getAspectWidthHeight=function getAspectWidthHeight(userWidth,userHeight,oriWidth,oriHeight){var width=userWidth,height=userHeight;if(isNaN(width)){width=(0,_lib.pluckNumber)(userHeight,oriHeight)*(oriWidth/oriHeight)}if(isNaN(height)){height=(0,_lib.pluckNumber)(userWidth,oriWidth)*(oriHeight/oriWidth)}return{width:width,height:height}},triggerExportCancelled=function triggerExportCancelled(){(0,_eventApi.triggerEvent)("exportcancelled")};function batchExport(){var input=arguments[0],exportArgs=input||{},chart,chartArr,canvas,canvasContext,svgString,chartCounter=0,allChartDrawingComplete=false,len,img,chartObj,exportOption={exportTargetWindow:(0,_lib.pluck)(exportArgs.exportTargetWindow,isIOS?"_parent":"_self"),exportAction:function(){var exportActionTemp;if(exportArgs.exportAction&&typeof exportArgs.exportAction==="string"){exportActionTemp=exportArgs.exportAction.toLowerCase();return[_exportUtils.EXPORTACTION.DOWNLOAD,_exportUtils.EXPORTACTION.SAVE,_exportUtils.EXPORTACTION.DOWNLOADSAVE].indexOf(exportActionTemp)>=0?exportActionTemp:_exportUtils.EXPORTACTION.DOWNLOAD}return _exportUtils.EXPORTACTION.DOWNLOAD}(),exportFileName:(0,_lib.pluck)(exportArgs.exportFileName,"FusionCharts"),exportHandler:(0,_lib.pluck)(exportArgs.exportHandler,DEFAULT_EXPORT_URL),exportParameters:(0,_lib.pluck)(exportArgs.exportParameters,BLANKSTRING),exportFormat:(0,_lib.pluck)(exportArgs.exportFormat,_exportUtils.EXPORTFORMAT.PNG),exportCallback:(0,_lib.pluck)(exportArgs.exportCallback,BLANKSTRING),exportAtClientSide:(0,_lib.pluckNumber)(exportArgs.exportAtClientSide,1),exportMode:function(){var _exportMode;if(typeof exportArgs.exportAtClientSide!=="undefined"){_exportMode={1:_exportUtils.EXPORTMODE.AUTO,0:_exportUtils.EXPORTMODE.SERVER}[exportArgs.exportAtClientSide]}_exportMode=exportArgs.exportMode||_exportMode||_exportUtils.EXPORTMODE.AUTO;_exportMode=_exportMode.toLowerCase();return _exportMode}(),logEnabled:(0,_lib.pluckNumber)(exportArgs.logEnabled,0),logMode:function(){var _logMode=exportArgs.logMode;if(typeof _logMode!=="undefined"&&typeof _logMode==="string"&&_logMode.toUpperCase()in _exportUtils.LOGMODE){return _exportUtils.LOGMODE[_logMode.toUpperCase()]}return _exportUtils.LOGMODE.AUTO}(),logHandler:(0,_lib.pluck)(exportArgs.logHandler,DEFAULT_LOG_URL)},exportFormat=exportOption.exportFormat.toLowerCase(),imageHeight=0,imageWidth=0,imagePadding=10,imagePaddingByTwo=imagePadding/2,i,items=FCGlobal.items,aspectWidthHeight=getAspectWidthHeight,createPostDataForExport=function createPostDataForExport(streamType,streamValue,configuredExportAction){var _logEnabled;_logEnabled=!!exportOption.logEnabled;if(exportOption.logMode===_exportUtils.LOGMODE.CLIENT){_logEnabled=false}return{charttype:"combined",stream_type:streamType||"",stream:streamValue||"",is_single_export:false,is_full_version:!true,version:_lib.PROJECT_VERSION,user_time_zone:-(new Date).getTimezoneOffset(),log_enabled:_logEnabled,parameters:["exportfilename="+exportOption.exportFileName,"exportformat="+exportOption.exportFormat,"exportaction="+(0,_exportUtils.createExportActionOldString)(exportOption.exportAction),"exportactionnew="+exportOption.exportAction,"configuredexportaction="+(configuredExportAction||exportOption.exportAction),"exportparameters="+exportOption].join("|")}},createPostDataForLog=function createPostDataForLog(){return{chartType:"combined",isSingleExport:false,isFullVersion:!true,exportAction:exportOption.exportAction,userTimeZone:-(new Date).getTimezoneOffset(),exportFileName:[exportOption.exportFileName,exportOption.exportFormat].join("."),exportFormat:exportOption.exportFormat,version:_lib.PROJECT_VERSION}},logSeparatelyIfLogModeCLient=function logSeparatelyIfLogModeCLient(logMode){if(logMode===_exportUtils.LOGMODE.CLIENT){(0,_exportUtils.logCharts)(createPostDataForLog(),exportOption)}},exportChart=function exportChart(dataUri){var postData,browserCanSelfDownload,configuredExportAction;(0,_eventApi.triggerEvent)("beforeexport",UNDEF,UNDEF,UNDEF,(function(){browserCanSelfDownload=typeof win.btoa!=="undefined"&&(_libSvgToCanvas.browserDetails.name==="Chrome"||_libSvgToCanvas.browserDetails.name==="Firefox"||_libSvgToCanvas.browserDetails.name==="Safari"||_libSvgToCanvas.browserDetails.name==="Edge"||_libSvgToCanvas.browserDetails.name==="ie");if(exportOption.exportMode===_exportUtils.EXPORTMODE.CLIENT||exportOption.exportMode===_exportUtils.EXPORTMODE.AUTO&&browserCanSelfDownload){if(exportOption.exportAction===_exportUtils.EXPORTACTION.DOWNLOAD||exportOption.exportAction===_exportUtils.EXPORTACTION.DOWNLOADSAVE){if(exportOption.exportMode===_exportUtils.EXPORTMODE.AUTO){postData=createPostDataForExport(IMAGEDATA,dataUri)}else{postData=null}(0,_libSvgToCanvas.downloadCharts)("url",dataUri,exportOption.exportFileName+"."+exportFormat,postData,exportOption);(0,_eventApi.triggerEvent)("exported",UNDEF,{fileName:exportOption.exportFileName+"."+exportFormat})}if(exportOption.exportAction===_exportUtils.EXPORTACTION.SAVE||exportOption.exportAction===_exportUtils.EXPORTACTION.DOWNLOADSAVE){configuredExportAction=exportOption.exportAction;if(exportOption.exportAction===_exportUtils.EXPORTACTION.DOWNLOADSAVE){exportOption.exportAction=_exportUtils.EXPORTACTION.SAVE}postData=createPostDataForExport(IMAGEDATA,dataUri,configuredExportAction);exportOption.paper={width:UNDEF,height:UNDEF};exportOption.fusionCharts={};(0,_libSvgToCanvas.downloadCharts)(null,null,null,postData,exportOption);delete exportOption.paper;delete exportOption.fusioncharts;logSeparatelyIfLogModeCLient(exportOption.logMode)}else if(exportOption.logMode!==_exportUtils.LOGMODE.SERVER){(0,_exportUtils.logCharts)(createPostDataForLog(),exportOption)}}else{postData=createPostDataForExport(IMAGEDATA,dataUri);exportOption.paper={width:UNDEF,height:UNDEF};exportOption.fusionCharts={};(0,_libSvgToCanvas.downloadCharts)(null,null,null,postData,exportOption);delete exportOption.paper;delete exportOption.fusioncharts;logSeparatelyIfLogModeCLient(exportOption.logMode)}}),triggerExportCancelled)},drawSvgOnCanvasCallback=function drawSvgOnCanvasCallback(){chartCounter-=1;if(chartCounter===0&&allChartDrawingComplete){switch(exportFormat){case"png":exportChart(canvas.toDataURL("image/png"));break;case"jpeg":exportChart(canvas.toDataURL("image/jpeg"));break;case"pdf":(0,_jpegToPdf.addImage)(canvas.toDataURL("image/jpeg"),imageHeight,imageWidth);exportChart((0,_jpegToPdf.getDataUrl)());break;default:exportChart(canvas.toDataURL("image/png"));break}}},drawChart=function drawChart(){var item=this;(0,_libSvgToCanvas.drawSvgOnCanvas)({svg:arguments[0],canvas:canvas,x:item.x,y:item.y,width:item.width,height:item.height,useCanvas:arguments[1]},drawSvgOnCanvasCallback)},createCanvas=function createCanvas(callback){var background=exportArgs.background;canvas=win.document.createElement("canvas");canvas.id=NEW_CANVAS_ID;canvas.width=imageWidth;canvas.height=imageHeight;canvas.style.border="1px solid black";canvasContext=canvas.getContext("2d");canvasContext.fillStyle=background&&background.bgColor||"#ffffff";canvasContext.fillRect(0,0,imageWidth,imageHeight);if(background&&background.bgImage&&isImageSafe(background.bgImage)){img=new Image;img.src=background.bgImage;img._userData=background;canvasContext.globalAlpha=(0,_lib.pluckNumber)(background.bgImageAlpha,100)/100;img.onload=function(){var userData=this._userData,x=(0,_lib.pluckNumber)(userData.bgImageX,0),y=(0,_lib.pluckNumber)(userData.bgImageY,0),widthHeight=aspectWidthHeight(Number(userData.bgImageWidth),Number(userData.bgImageHeight),this.width,this.height);try{canvasContext.drawImage(this,x,y,widthHeight.width,widthHeight.height)}finally{canvasContext.globalAlpha=1;callback()}};img.onerror=function(){callback()}}else{callback()}},preDrawChart=function preDrawChart(chartID,ObjectInput){chart=FCGlobal.items[chartID];if(!chart.jsVars.instanceAPI){return}svgString=chart.jsVars.instanceAPI.getFromEnv("paper").toSVG(true);svgString=svgString.replace(/NS\d+:/gi,"xlink:");svgString=svgString.replace(/(\sd\s*=\s*["'])[M\s\d\.]*(["'])/gi,"$1M 0 0 L 0 0$2");svgString=svgString.replace(/(xlink:title\s*=\s*)['"].*?["']/gi,"");chartCounter+=1;(function(){var localSvgString=svgString,useCanvas=FCGlobal.options["export"].useCanvas;(0,_exportUtils.cacheAllImages)(localSvgString,false,(function(){localSvgString=(0,_exportUtils.replaceImagesWithNonDataUrl)(localSvgString);drawChart.call(ObjectInput||chart,localSvgString,useCanvas)}))})()},createChartArr=function createChartArr(){var charts=exportArgs.charts,item,chartObject,loopControl,widthHeight,chartWidth,chartHeight;chartArr=[];if(charts){for(loopControl in charts){if(charts.hasOwnProperty(loopControl)&&(item=items[charts[loopControl].id])){chartObject=charts[loopControl];chartWidth=item.width;chartHeight=item.height;if(isNaN(Number(chartWidth))){chartWidth=item.apiInstance.getFromEnv("chartWidth")}if(isNaN(Number(chartHeight))){chartHeight=item.apiInstance.getFromEnv("chartHeight")}widthHeight=aspectWidthHeight(Number(chartObject.width),Number(chartObject.height),chartWidth,chartHeight);chartArr.push({id:item.id,width:widthHeight.width,height:widthHeight.height,x:chartObject.x,y:chartObject.y})}}}else{for(loopControl in items){if(items.hasOwnProperty(loopControl)){item=items[loopControl];chartWidth=item.width;chartHeight=item.height;if(isNaN(Number(chartWidth))){chartWidth=item.apiInstance.getFromEnv("chartWidth")}if(isNaN(Number(chartHeight))){chartHeight=item.apiInstance.getFromEnv("chartHeight")}chartArr.push({id:item.id,width:chartWidth,height:chartHeight})}}}};(function(){var mappingObject;mappingObject={};mappingObject[_exportUtils.EXPORTMODE.CLIENT]=1;mappingObject[_exportUtils.EXPORTMODE.AUTO]=0;mappingObject[_exportUtils.EXPORTMODE.SERVER]=0;exportOption.exportatclientside=mappingObject[exportOption.exportMode]})();if(!_libSvgToCanvas.browserDetails.hasCanvas){return}createChartArr();for(i=0,len=chartArr.length;i<len;i+=1){chartObj=chartArr[i];chartObj.x=(0,_lib.pluckNumber)(chartObj.x,imagePaddingByTwo);chartObj.y=(0,_lib.pluckNumber)(chartObj.y,imageHeight+imagePaddingByTwo);chartObj.height=(0,_lib.pluckNumber)(chartObj.height);chartObj.width=(0,_lib.pluckNumber)(chartObj.width);imageHeight=mathMax(imageHeight,chartObj.y+chartObj.height);imageWidth=mathMax(imageWidth,chartObj.x+chartObj.width)}imageHeight=exportArgs.imageHeight||imageHeight+imagePaddingByTwo;imageWidth=exportArgs.imageWidth||imageWidth+imagePaddingByTwo;createCanvas((function(){for(i=0,len=chartArr.length;i<len;i+=1){chartObj=chartArr[i];if(i===len-1){allChartDrawingComplete=true}preDrawChart(chartObj.id,chartObj)}}))}function batchExportLinker(FC){FC.batchExport=batchExport;FCGlobal=FC}var _default=exports.default={extension:batchExportLinker,name:"batchExportLinker",type:"extension",requiresFusionCharts:true};