| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519 | 
							- /*
 
-  * 图片转换对话框脚本
 
-  **/
 
- var tableData = [],
 
-     //编辑器页面table
 
-     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 contents = [];
 
-     for ( var i = 0, len = chartsConfig.length; i<len; i++ ) {
 
-         contents.push( '<div class="view-box" data-chart-type="'+ i +'"><img width="300" src="images/charts'+ i +'.png"></div>' );
 
-     }
 
-     $( "#scrollBed" ).html( contents.join( "" ) );
 
- }
 
- //渲染table, 以便用户修改数据
 
- function renderTable ( table ) {
 
-     var tableHtml = [];
 
-     //构造数据
 
-     for ( var i = 0, row; row = table.rows[ i ]; i++ ) {
 
-         tableData[ i ] = [];
 
-         tableHtml[ i ] = [];
 
-         for ( var j = 0, cell; cell = row.cells[ j ]; j++ ) {
 
-             var value = getCellValue( cell );
 
-             if ( i > 0 && j > 0 ) {
 
-                 value = +value;
 
-             }
 
-             if ( i === 0 || j === 0 ) {
 
-                 tableHtml[ i ].push( '<th>'+ value +'</th>' );
 
-             } else {
 
-                 tableHtml[ i ].push( '<td><input type="text" class="data-item" value="'+ value +'"></td>' );
 
-             }
 
-             tableData[ i ][ j ] = value;
 
-         }
 
-         tableHtml[ i ] = tableHtml[ i ].join( "" );
 
-     }
 
-     //draw 表格
 
-     $( "#tableContainer" ).html( '<table id="showTable" border="1"><tbody><tr>'+ tableHtml.join( "</tr><tr>" ) +'</tr></tbody></table>' );
 
- }
 
- /*
 
-  * 根据表格已有的图表属性初始化当前图表属性
 
-  */
 
- function initUserConfig ( config ) {
 
-     var parsedConfig = {};
 
-     if ( !config ) {
 
-         return;
 
-     }
 
-     config = config.split( ";" );
 
-     $.each( config, function ( index, item ) {
 
-         item = item.split( ":" );
 
-         parsedConfig[ item[ 0 ] ] = item[ 1 ];
 
-     } );
 
-     setUserConfig( parsedConfig );
 
- }
 
- function initEvent () {
 
-     var cacheValue = null,
 
-         //图表类型数
 
-         typeViewCount = chartsConfig.length- 1,
 
-         $chartsTypeViewBox = $( '#scrollBed .view-box' );
 
-     $( ".charts-format" ).delegate( ".format-ctrl", "change", function () {
 
-         renderCharts();
 
-     } )
 
-     $( ".table-view" ).delegate( ".data-item", "focus", function () {
 
-         cacheValue = this.value;
 
-     } ).delegate( ".data-item", "blur", function () {
 
-         if ( this.value !== cacheValue ) {
 
-             renderCharts();
 
-         }
 
-         cacheValue = null;
 
-     } );
 
-     $( "#buttonContainer" ).delegate( "a", "click", function (e) {
 
-         e.preventDefault();
 
-         if ( this.getAttribute( "data-title" ) === 'prev' ) {
 
-             if ( currentChartType > 0 ) {
 
-                 currentChartType--;
 
-                 updateViewType( currentChartType );
 
-             }
 
-         } else {
 
-             if ( currentChartType < typeViewCount ) {
 
-                 currentChartType++;
 
-                 updateViewType( currentChartType );
 
-             }
 
-         }
 
-     } );
 
-     //图表类型变化
 
-     $( '#scrollBed' ).delegate( ".view-box", "click", function (e) {
 
-         var index = $( this ).attr( "data-chart-type" );
 
-         $chartsTypeViewBox.removeClass( "selected" );
 
-         $( $chartsTypeViewBox[ index ] ).addClass( "selected" );
 
-         currentChartType = index | 0;
 
-         //饼图, 禁用部分配置
 
-         if ( currentChartType === chartsConfig.length - 1 ) {
 
-             disableNotPieConfig();
 
-         //启用完整配置
 
-         } else {
 
-             enableNotPieConfig();
 
-         }
 
-         renderCharts();
 
-     } );
 
- }
 
- function renderCharts () {
 
-     var data = collectData();
 
-     $('#chartsContainer').highcharts( $.extend( {}, chartsConfig[ currentChartType ], {
 
-         credits: {
 
-             enabled: false
 
-         },
 
-         exporting: {
 
-             enabled: false
 
-         },
 
-         title: {
 
-             text: data.title,
 
-             x: -20 //center
 
-         },
 
-         subtitle: {
 
-             text: data.subTitle,
 
-             x: -20
 
-         },
 
-         xAxis: {
 
-             title: {
 
-                 text: data.xTitle
 
-             },
 
-             categories: data.categories
 
-         },
 
-         yAxis: {
 
-             title: {
 
-                 text: data.yTitle
 
-             },
 
-             plotLines: [{
 
-                 value: 0,
 
-                 width: 1,
 
-                 color: '#808080'
 
-             }]
 
-         },
 
-         tooltip: {
 
-             enabled: true,
 
-             valueSuffix: data.suffix
 
-         },
 
-         legend: {
 
-             layout: 'vertical',
 
-             align: 'right',
 
-             verticalAlign: 'middle',
 
-             borderWidth: 1
 
-         },
 
-         series: data.series
 
-     } ));
 
- }
 
- function updateViewType ( index ) {
 
-     $( "#scrollBed" ).css( 'marginLeft', -index*324+'px' );
 
- }
 
- function collectData () {
 
-     var form = document.forms[ 'data-form' ],
 
-         data = null;
 
-     if ( currentChartType !== chartsConfig.length - 1 ) {
 
-         data = getSeriesAndCategories();
 
-         $.extend( data, getUserConfig() );
 
-     //饼图数据格式
 
-     } else {
 
-         data = getSeriesForPieChart();
 
-         data.title = form[ 'title' ].value;
 
-         data.suffix = form[ 'unit' ].value;
 
-     }
 
-     return data;
 
- }
 
- /**
 
-  * 获取用户配置信息
 
-  */
 
- function getUserConfig () {
 
-     var form = document.forms[ 'data-form' ],
 
-         info = {
 
-             title: form[ 'title' ].value,
 
-             subTitle: form[ 'sub-title' ].value,
 
-             xTitle: form[ 'x-title' ].value,
 
-             yTitle: form[ 'y-title' ].value,
 
-             suffix: form[ 'unit' ].value,
 
-             //数据对齐方式
 
-             tableDataFormat: getTableDataFormat (),
 
-             //饼图提示文字
 
-             tip: $( "#tipInput" ).val()
 
-         };
 
-     return info;
 
- }
 
- function setUserConfig ( config ) {
 
-     var form = document.forms[ 'data-form' ];
 
-     config.title && ( form[ 'title' ].value = config.title );
 
-     config.subTitle && ( form[ 'sub-title' ].value = config.subTitle );
 
-     config.xTitle && ( form[ 'x-title' ].value = config.xTitle );
 
-     config.yTitle && ( form[ 'y-title' ].value = config.yTitle );
 
-     config.suffix && ( form[ 'unit' ].value = config.suffix );
 
-     config.dataFormat == "-1" && ( form[ 'charts-format' ][ 1 ].checked = true );
 
-     config.tip && ( form[ 'tip' ].value = config.tip );
 
-     currentChartType = config.chartType || 0;
 
- }
 
- function getSeriesAndCategories () {
 
-     var form = document.forms[ 'data-form' ],
 
-         series = [],
 
-         categories = [],
 
-         tmp = [],
 
-         tableData = getTableData();
 
-     //反转数据
 
-     if ( getTableDataFormat() === "-1" ) {
 
-         for ( var i = 0, len = tableData.length; i < len; i++ ) {
 
-             for ( var j = 0, jlen = tableData[ i ].length; j < jlen; j++ ) {
 
-                 if ( !tmp[ j ] ) {
 
-                     tmp[ j ] = [];
 
-                 }
 
-                 tmp[ j ][ i ] = tableData[ i ][ j ];
 
-             }
 
-         }
 
-         tableData = tmp;
 
-     }
 
-     categories = tableData[0].slice( 1 );
 
-     for ( var i = 1, data; data = tableData[ i ]; i++ ) {
 
-         series.push( {
 
-             name: data[ 0 ],
 
-             data: data.slice( 1 )
 
-         } );
 
-     }
 
-     return {
 
-         series: series,
 
-         categories: categories
 
-     };
 
- }
 
- /*
 
-  * 获取数据源数据对齐方式
 
-  */
 
- function getTableDataFormat () {
 
-     var form = document.forms[ 'data-form' ],
 
-         items = form['charts-format'];
 
-     return items[ 0 ].checked ? items[ 0 ].value : items[ 1 ].value;
 
- }
 
- /*
 
-  * 禁用非饼图类型的配置项
 
-  */
 
- function disableNotPieConfig() {
 
-     updateConfigItem( 'disable' );
 
- }
 
- /*
 
-  * 启用非饼图类型的配置项
 
-  */
 
- function enableNotPieConfig() {
 
-     updateConfigItem( 'enable' );
 
- }
 
- function updateConfigItem ( value ) {
 
-     var table = $( "#showTable" )[ 0 ],
 
-         isDisable = value === 'disable' ? true : false;
 
-     //table中的input处理
 
-     for ( var i = 2 , row; row = table.rows[ i ]; i++ ) {
 
-         for ( var j = 1, cell; cell = row.cells[ j ]; j++ ) {
 
-             $( "input", cell ).attr( "disabled", isDisable );
 
-         }
 
-     }
 
-     //其他项处理
 
-     $( "input.not-pie-item" ).attr( "disabled", isDisable );
 
-     $( "#tipInput" ).attr( "disabled", !isDisable )
 
- }
 
- /*
 
-  * 获取饼图数据
 
-  * 饼图的数据只取第一行的
 
-  **/
 
- function getSeriesForPieChart () {
 
-     var series = {
 
-             type: 'pie',
 
-             name: $("#tipInput").val(),
 
-             data: []
 
-         },
 
-         tableData = getTableData();
 
-     for ( var j = 1, jlen = tableData[ 0 ].length; j < jlen; j++ ) {
 
-         var title = tableData[ 0 ][ j ],
 
-             val = tableData[ 1 ][ j ];
 
-         series.data.push( [ title, val ] );
 
-     }
 
-     return {
 
-         series: [ series ]
 
-     };
 
- }
 
- function getTableData () {
 
-     var table = document.getElementById( "showTable" ),
 
-         xCount = table.rows[0].cells.length - 1,
 
-         values = getTableInputValue();
 
-     for ( var i = 0, value; value = values[ i ]; i++ ) {
 
-         tableData[ Math.floor( i / xCount ) + 1 ][ i % xCount + 1 ] = values[ i ];
 
-     }
 
-     return tableData;
 
- }
 
- function getTableInputValue () {
 
-     var table = document.getElementById( "showTable" ),
 
-         inputs = table.getElementsByTagName( "input" ),
 
-         values = [];
 
-     for ( var i = 0, input; input = inputs[ i ]; i++ ) {
 
-         values.push( input.value | 0 );
 
-     }
 
-     return values;
 
- }
 
- function getCellValue ( cell ) {
 
-     var value = utils.trim( ( cell.innerText || cell.textContent || '' ) );
 
-     return value.replace( new RegExp( UE.dom.domUtils.fillChar, 'g' ), '' ).replace( /^\s+|\s+$/g, '' );
 
- }
 
- //dialog确认事件
 
- dialog.onok = function () {
 
-     //收集信息
 
-     var form = document.forms[ 'data-form' ],
 
-         info = getUserConfig();
 
-     //添加图表类型
 
-     info.chartType = currentChartType;
 
-     //同步表格数据到编辑器
 
-     syncTableData();
 
-     //执行图表命令
 
-     editor.execCommand( 'charts', info );
 
- };
 
- /*
 
-  * 同步图表编辑视图的表格数据到编辑器里的原始表格
 
-  */
 
- function syncTableData () {
 
-     var tableData = getTableData();
 
-     for ( var i = 1, row; row = editorTable.rows[ i ]; i++ ) {
 
-         for ( var j = 1, cell; cell = row.cells[ j ]; j++ ) {
 
-             cell.innerHTML = tableData[ i ] [ j ];
 
-         }
 
-     }
 
- }
 
 
  |