/*!***********************************************
 Copyright (c) 2019, Neusoft Inc.
 All rights reserved
 图表秀 Version 1.0.0 2020.4.24
 ************************************************/
"use strict";charting.controller("editChartCtrl",["$rootScope","$scope","$stateParams","$state","$timeout","$interval","chartBookDataManager","userDataService","toaster","vipService","$modal","chartEngineManager","themeService","chartLibraryManager","CHART_V1","CHART_V2","StatisticsService","$cookieStore","chartExportService","UndoService",function(a,n,e,r,o,s,t,c,i,p,d,l,h,u,m,g,C,b,f,v){n.chartGifSupport=f.webWorkerSupport,n.ciStatistics=C.ciStatistics,n.ciCustomEvent=C.ciCustomEvent,a.pageShotInterval&&clearInterval(a.pageShotInterval),n.currentSelectedTab=0,n.chartSelect=e.chartSelect,void 0===a.isEverLogin&&"demo"!=a.userinfo.userid&&(a.isEverLogin=b.get("isEverLogin"),a.showHelpV3=!a.isEverLogin),n.bookName=e.bookName,n.compatVersion=e.compatVersion,n.CHART_V1=m,n.CHART_V2=g,n.undoManager=v.getManager("chartEdit","clear");var y=_.debounce(function(t){t.ctrlKey&&90===t.keyCode?(t.preventDefault(),n.undoManager.hasUndo()&&n.undoManager.undo()):t.ctrlKey&&89===t.keyCode&&(t.preventDefault(),n.undoManager.hasRedo()&&n.undoManager.redo())},100);$(document.body).keyup(y),n.$on("$destroy",function(){$(document.body).unbind("keyup",y)}),n.backToDashboard=function(){s.cancel(n.cleanSaveInterval),r.go("app.charting_dashboard",{bookId:e.bookId,pageIndex:e.pageIndex})},l.loadEngine(n.compatVersion).then(function(){t.getById(e.bookId).then(function(t){n.chartBookData=t,n.chartThemeId=n.chartBookData.themeId,h.queryThemes(e.bookId,!0).then(function(){if(h.changeTheme(n.chartBookData.themeId),n.domBgColor=h.getCurrentTheme().define.background,n.page=n.chartBookData.pages[e.pageIndex],n.widget=n.page.layout.widget[e.widgetIndex],n.chartSelect?(n.tempChart=angular.copy(a.tempSelectChartResource),a.tempEditChartUserData&&(n.tempChart.userData=angular.copy(a.tempEditChartUserData),n.tempChart.simpleJson.data.default=angular.copy(a.tempEditChartJsonData),n.tempChart.dataCrosstab=a.tempEditChartCrosstab)):(n.tempChart=JSON.parse(JSON.stringify(n.widget.resource)),a.tempSelectChartResource=angular.copy(n.tempChart)),n.$watch("app.settings.asideFolded",function(t,e){t!==e&&S()}),$(window).resize(_.debounce(function(){n.$apply(S)},300)),n.$on("chartReadyToRender",function(){w(),n.chartSelect?n.$broadcast("drawChartWithTheme"):n.$broadcast("drawChart")}),n.cleanSaveInterval=s(function(){n.saveChartBook()},3e5),n.chartGifSupport=!1,n.$on("chartRenderDone",function(){var t=$(".CHARTID_"+n.tempChart.id+" .chartshowid");n.chartGifSupport=!!t.attr("_echarts_instance_")||!!t.attr("_ichart_instance_")}),u.getById(n.tempChart.compId,n.compatVersion).then(function(t){n.chartComponent=t}),n.getDataDefaultQuery=n.tempChart.dataQuery,n.getDataOptions={modes:["上传数据","数据库"],dsIdListRest:charts_server+"/service/charting/datasources",dsIdDataRest:charts_server+"/service/charting/querydata",excel:{url:charts_server+"/service/charting/resource/book/userdata",xhrFields:{withCredentials:!0},dataType:"json",autoUpload:!0,acceptFileTypes:/(\.|\/)(xls|xlsx|csv)$/i,maxFileSize:3145728},export:{action:charts_server+"/service/charting/resource/book/userdata/export"}},n.showTransButton=!!n.tempChart.crosstabAbility,n.tempCrosstab=n.tempChart.dataCrosstab,n.compatVersion===g&&n.tempCrosstab){var t=c.cross2list(n.tempChart.userData,0);n.tempUserData=t.newData}else n.tempUserData=n.tempChart.userData;n.$on("requestRedrawTable",function(t,e){t.stopPropagation&&t.stopPropagation(),n.$broadcast("reDrawTable",e)}),n.optionsDrive=!0,p.getVipLevel()<n.tempChart.limitLevel&&d.open({templateUrl:"tpl/security/limit_warning_modal.html",controller:"limitWarningModalCtrl",size:"sm",resolve:{params:function(){return angular.copy({titleMsg:"该图表为<"+p.vipClass[n.tempChart.limitLevel].name+">及以上专享，您可以编辑并预览，但将无法应用这些更改。",isShowSubmitBtn:!0,submitFunc:function(){}})}}}),w(),C.ciTrackPageClick(local_server+"/src/app/charting_edit"),n.$on("destroy",function(){s.cancel(n.cleanSaveInterval)})})},function(t){i.pop("info","获取图册失败"),s.cancel(n.cleanSaveInterval),r.go("app.charting_resource")})}),n.isTemplate=function(){return n.chartBookData&&(1===n.chartBookData.type||2===n.chartBookData.type)},n.saveChartBook=function(){if(n.chartBookData.isTemp)i.pop("warning","","建议先保存图册再编辑图表");else if(!n.isTemplate()){if("demo"===a.userinfo.userid)return void i.pop("info","","注册后体验更多功能");n.widget.type="chart",n.widget.resource=JSON.parse(JSON.stringify(n.tempChart)),t.update(n.chartBookData,a.userinfo.userid).then(function(t){t&&t.error&&t.error.m?i.pop("error","",t.error.m):i.pop("success","","图表已自动保存")},function(t){t&&t.m?i.pop("error","保存失败",t.m):i.pop("error","","保存失败")})}},n.$on("$stateChangeStart",function(t,e,a,r,o){"app.charting_chart_select"!==e.name&&"app.charting_dashboard"!==e.name&&(confirm("当前可能有未保存的更改，确定离开吗？")?(s.cancel(n.cleanSaveInterval),window.onbeforeunload=null):t.preventDefault())});var D=!1;function w(){n.tempChart.tableOptions?n.tempChart.tableOptions.height=$("[handsontable]").parent().height()-$("#get-data").height():n.tempChart.tableOptions={height:$("[handsontable]").parent().height()-$("#get-data").height(),showHeader:!0,showContentMenu:!0,readOnly:!!n.tempChart.dataQuery,minCols:20,minRows:n.tempUserData.length+10},n.$broadcast("reDrawTable",n.tempUserData)}function S(){w(),n.$broadcast("drawChart")}function I(){var t=c.cross2list(n.tempUserData,n.tempCrosstab);n.tempUserData=t.newData,n.tempCrosstab=t.dataCrosstab,a.$broadcast("reDrawTable",t.newData)}window.onbeforeunload=function(t){if(!D)return t.returnValue="当前可能有未保存的更改，确定离开吗？",t.returnValue},n.resetUserData=function(){a.$broadcast("getData.dataSource",{data:angular.copy(a.tempSelectChartResource.userData),dataQuery:n.tempChart.dataQuery?{dsId:"url",dsInfo:{attributes:{url:local_server+"/src/assets/chart/sample/"+a.tempSelectChartResource.compId+"/1_0/sampleData.json",format:"json_arrays"},type:"ds_url"},query:null}:null,crosstabAbility:angular.copy(a.tempSelectChartResource.crosstabAbility)})},n.reChoose=function(){d.open({templateUrl:"tpl/charting/chartSelectKeepDataModal.html",scope:n,controller:["$scope","$modalInstance",function(t,e){t.message="是否要保留当前数据？",t.warning="（由于不同图表数据结构不同，可能导致图表无法显示）",t.dismiss=function(){e.dismiss()},t.submit=function(){a.tempEditChartUserData=angular.copy(t.$parent.tempChart.userData),a.tempEditChartJsonData=angular.copy(t.$parent.tempChart.simpleJson.data.default),a.tempEditChartCrosstab=t.$parent.tempChart.dataCrosstab,e.close()},t.submitNoKeep=function(){a.tempEditChartUserData=void 0,e.close()}}],size:"md"}).result.then(function(){s.cancel(n.cleanSaveInterval),r.go("app.charting_chart_select",{compatVersion:e.compatVersion,bookName:e.bookName,bookId:e.bookId,pageIndex:e.pageIndex,widgetIndex:e.widgetIndex,compId:n.tempChart.compId})})},n.confirm=function(){n.compatVersion!==g||!n.chartComponent.onSale||n.chartComponent.chartOwning&&!n.chartComponent.chartOwning.isExpired?p.getVipLevel()<n.tempChart.limitLevel?d.open({templateUrl:"tpl/security/limit_warning_modal.html",controller:"limitWarningModalCtrl",size:"sm",resolve:{params:function(){return angular.copy({titleMsg:"该图表为<"+p.vipClass[n.tempChart.limitLevel].name+">及以上专享！",isShowGoPay:!0,isShowCancelBtn:!0})}}}):(n.compatVersion===m&&function(t){t.options.forEach(function(t){t.props.forEach(function(t){for(var e in t)t.hasOwnProperty(e)&&("category"===e||"title"===e||"value"===e||delete t[e])})})}(n.tempChart),n.widget.resource=n.tempChart,n.widget.resource.dataCrosstab=n.tempCrosstab,n.widget.type="chart",n.widget.props||(n.widget.props={asFilter:!1,notAccept:!1}),a.isSavedToServer=!1,a.isEverLogin||(a.overhelp=!0),s.cancel(n.cleanSaveInterval),r.go("app.charting_dashboard",{bookId:e.bookId,hasChanged:!0,pageIndex:e.pageIndex,chartId:n.widget.resource.id})):d.open({templateUrl:"tpl/security/product_warning_modal.html",controller:"productExpiredWarningModalCtrl",size:"sm",resolve:{params:function(){return angular.copy({msgs:[n.chartComponent.chartOwning?"该图表已过期":"该图表为高级图表","钻石会员可用"],showVipRedirect:!0,submitText:n.chartComponent.chartOwning?"去续期":"去购买",url:mall_server+(n.chartComponent.productUrl?n.chartComponent.productUrl:"")})}}})},n.cancel=function(){s.cancel(n.cleanSaveInterval),r.go("app.charting_dashboard",{bookId:e.bookId,pageIndex:e.pageIndex})},n.transData=function(){I(),n.undoManager.add({undo:function(){o(function(){I()},0)},redo:function(){o(function(){I()},0)}})},n.isIE9=!0,n.exportData=function(t){D=!0;var e=document.createElement("form");e.action=charts_server+"/service/charting/resource/book/userdata/export",e.target="_self",e.method="post",e.enctype="text/plain";var a=document.createElement("input");a.type="hidden",a.name="userData",a.value=JSON.stringify(t),e.appendChild(a),document.body.appendChild(e),e.submit(),document.body.removeChild(e),o(function(){D=!1},3e3)},n.showArray=[],n.$on("getData.dataSource",function(t,e){n.tempChart.dataQuery=e.dataQuery,e.crosstabAbility&&n.compatVersion===g&&(e.data=c.cross2list(e.data,0).newData),!function(t){return t[0]instanceof Array&&""===t[0][0]}(e.data)?n.tempCrosstab=0:n.showTransButton&&(n.tempCrosstab=1),n.compatVersion===m&&(n.tempChart.userData=e.data),n.onDataChanged(e.data),n.$broadcast("reDrawTable",e.data)}),n.$on("getData.changeDs",function(t,e){o(function(){n.tempChart.tableOptions.height=$("[handsontable]").parent().height()-$("#get-data").height(),n.tempChart.tableOptions.readOnly="excel"!==e.type,"excel"===e.type&&n.tempChart.dataQuery&&delete n.tempChart.dataQuery,n.showTransButton=!!n.tempChart.crosstabAbility&&"excel"===e.type,n.$broadcast("reDrawTable",n.tempUserData)},100)}),n.onDataChanged=function(t){t instanceof Array&&(n.tempUserData=t,n.compatVersion===m&&(n.tempChart.metaData=t[0]),n.compatVersion===g&&t instanceof Array&&(n.tempCrosstab&&(t=c.cross2list(t,n.tempCrosstab).newData),n.tempChart.userData=t,n.tempChart.simpleJson.data.default=t,n.$broadcast("drawChart")))},n.$on("data changed",function(t,e){var a=null;a=n.tempCrosstab?c.cross2list(n.tempChart.userData,1-n.tempCrosstab).newData:angular.copy(n.tempChart.userData),n.onDataChanged(e);var r=angular.copy(e);n.undoManager.add({undo:function(){o(function(){n.$broadcast("reDrawTable",a),n.onDataChanged(a)},0)},redo:function(){o(function(){n.$broadcast("reDrawTable",r),n.onDataChanged(r)},0)}})}),n.exportChart=function(){f.exportChart(n.tempChart)}}]),charting.controller("ConfirmModalCtrl",["$scope","$modalInstance","msg",function(t,e,a){t.msg=a,t.submit=function(){e.close()}}]);