charts.min.js 5.6 KB

1
  1. var tableData=[],editorTable=null,chartsConfig=window.typeConfig,resizeTimer=null,currentChartType=0;window.onload=function(){editorTable=domUtils.findParentByTagName(editor.selection.getRange().startContainer,"table",true);if(!editorTable){document.body.innerHTML="<div class='edui-charts-not-data'>未找到数据</div>";return}initChartsTypeView();renderTable(editorTable);initEvent();initUserConfig(editorTable.getAttribute("data-chart"));$("#scrollBed .view-box:eq("+currentChartType+")").trigger("click");updateViewType(currentChartType);dialog.addListener("resize",function(){if(resizeTimer!=null){window.clearTimeout(resizeTimer)}resizeTimer=window.setTimeout(function(){resizeTimer=null;renderCharts()},500)})};function initChartsTypeView(){var c=[];for(var b=0,a=chartsConfig.length;b<a;b++){c.push('<div class="view-box" data-chart-type="'+b+'"><img width="300" src="images/charts'+b+'.png"></div>')}$("#scrollBed").html(c.join(""))}function renderTable(e){var c=[];for(var d=0,g;g=e.rows[d];d++){tableData[d]=[];c[d]=[];for(var b=0,a;a=g.cells[b];b++){var f=getCellValue(a);if(d>0&&b>0){f=+f}if(d===0||b===0){c[d].push("<th>"+f+"</th>")}else{c[d].push('<td><input type="text" class="data-item" value="'+f+'"></td>')}tableData[d][b]=f}c[d]=c[d].join("")}$("#tableContainer").html('<table id="showTable" border="1"><tbody><tr>'+c.join("</tr><tr>")+"</tr></tbody></table>")}function initUserConfig(a){var b={};if(!a){return}a=a.split(";");$.each(a,function(c,d){d=d.split(":");b[d[0]]=d[1]});setUserConfig(b)}function initEvent(){var c=null,a=chartsConfig.length-1,b=$("#scrollBed .view-box");$(".charts-format").delegate(".format-ctrl","change",function(){renderCharts()});$(".table-view").delegate(".data-item","focus",function(){c=this.value}).delegate(".data-item","blur",function(){if(this.value!==c){renderCharts()}c=null});$("#buttonContainer").delegate("a","click",function(d){d.preventDefault();if(this.getAttribute("data-title")==="prev"){if(currentChartType>0){currentChartType--;updateViewType(currentChartType)}}else{if(currentChartType<a){currentChartType++;updateViewType(currentChartType)}}});$("#scrollBed").delegate(".view-box","click",function(f){var d=$(this).attr("data-chart-type");b.removeClass("selected");$(b[d]).addClass("selected");currentChartType=d|0;if(currentChartType===chartsConfig.length-1){disableNotPieConfig()}else{enableNotPieConfig()}renderCharts()})}function renderCharts(){var a=collectData();$("#chartsContainer").highcharts($.extend({},chartsConfig[currentChartType],{credits:{enabled:false},exporting:{enabled:false},title:{text:a.title,x:-20},subtitle:{text:a.subTitle,x:-20},xAxis:{title:{text:a.xTitle},categories:a.categories},yAxis:{title:{text:a.yTitle},plotLines:[{value:0,width:1,color:"#808080"}]},tooltip:{enabled:true,valueSuffix:a.suffix},legend:{layout:"vertical",align:"right",verticalAlign:"middle",borderWidth:1},series:a.series}))}function updateViewType(a){$("#scrollBed").css("marginLeft",-a*324+"px")}function collectData(){var a=document.forms["data-form"],b=null;if(currentChartType!==chartsConfig.length-1){b=getSeriesAndCategories();$.extend(b,getUserConfig())}else{b=getSeriesForPieChart();b.title=a.title.value;b.suffix=a.unit.value}return b}function getUserConfig(){var a=document.forms["data-form"],b={title:a.title.value,subTitle:a["sub-title"].value,xTitle:a["x-title"].value,yTitle:a["y-title"].value,suffix:a.unit.value,tableDataFormat:getTableDataFormat(),tip:$("#tipInput").val()};return b}function setUserConfig(a){var b=document.forms["data-form"];a.title&&(b.title.value=a.title);a.subTitle&&(b["sub-title"].value=a.subTitle);a.xTitle&&(b["x-title"].value=a.xTitle);a.yTitle&&(b["y-title"].value=a.yTitle);a.suffix&&(b.unit.value=a.suffix);a.dataFormat=="-1"&&(b["charts-format"][1].checked=true);a.tip&&(b.tip.value=a.tip);currentChartType=a.chartType||0}function getSeriesAndCategories(){var a=document.forms["data-form"],e=[],h=[],f=[],b=getTableData();if(getTableDataFormat()==="-1"){for(var g=0,k=b.length;g<k;g++){for(var c=0,l=b[g].length;c<l;c++){if(!f[c]){f[c]=[]}f[c][g]=b[g][c]}}b=f}h=b[0].slice(1);for(var g=1,d;d=b[g];g++){e.push({name:d[0],data:d.slice(1)})}return{series:e,categories:h}}function getTableDataFormat(){var b=document.forms["data-form"],a=b["charts-format"];return a[0].checked?a[0].value:a[1].value}function disableNotPieConfig(){updateConfigItem("disable")}function enableNotPieConfig(){updateConfigItem("enable")}function updateConfigItem(f){var d=$("#showTable")[0],e=f==="disable"?true:false;for(var c=2,g;g=d.rows[c];c++){for(var b=1,a;a=g.cells[b];b++){$("input",a).attr("disabled",e)}}$("input.not-pie-item").attr("disabled",e);$("#tipInput").attr("disabled",!e)}function getSeriesForPieChart(){var c={type:"pie",name:$("#tipInput").val(),data:[]},d=getTableData();for(var b=1,a=d[0].length;b<a;b++){var f=d[0][b],e=d[1][b];c.data.push([f,e])}return{series:[c]}}function getTableData(){var d=document.getElementById("showTable"),c=d.rows[0].cells.length-1,a=getTableInputValue();for(var b=0,e;e=a[b];b++){tableData[Math.floor(b/c)+1][b%c+1]=a[b]}return tableData}function getTableInputValue(){var e=document.getElementById("showTable"),a=e.getElementsByTagName("input"),c=[];for(var d=0,b;b=a[d];d++){c.push(b.value|0)}return c}function getCellValue(a){var b=utils.trim((a.innerText||a.textContent||""));return b.replace(new RegExp(UE.dom.domUtils.fillChar,"g"),"").replace(/^\s+|\s+$/g,"")}dialog.onok=function(){var a=document.forms["data-form"],b=getUserConfig();b.chartType=currentChartType;syncTableData();editor.execCommand("charts",b)};function syncTableData(){var d=getTableData();for(var c=1,e;e=editorTable.rows[c];c++){for(var b=1,a;a=e.cells[b];b++){a.innerHTML=d[c][b]}}};