You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							1192 lines
						
					
					
						
							47 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							1192 lines
						
					
					
						
							47 KiB
						
					
					
				| import { seriesLoadScripts, loadLinks, $$ } from '../../utils/util' | |
| import { generateRandomKey, replaceHtml } from '../../utils/chartUtil' | |
| import { getdatabyselection, getcellvalue } from '../../global/getdata'; | |
| import chartInfo from '../../store' | |
| import { getSheetIndex, getRangetxt } from '../../methods/get' | |
| import { rowLocation, colLocation, mouseposition } from '../../global/location' | |
| import { | |
|     luckysheetMoveHighlightCell, | |
|     luckysheetMoveHighlightCell2, | |
|     luckysheetMoveHighlightRange, | |
|     luckysheetMoveHighlightRange2, | |
|     luckysheetMoveEndCell | |
| } from '../../controllers/sheetMove'; | |
| import { isEditMode } from '../../global/validate'; | |
| import luckysheetsizeauto from '../../controllers/resize'; | |
| import { getvisibledatarow, getvisibledatacolumn} from '../../methods/get' | |
| let _rowLocation = rowLocation | |
| let _colLocation = colLocation | |
| 
 | |
| // Dynamically load dependent scripts and styles | |
| const dependScripts = [ | |
|     'https://cdn.jsdelivr.net/npm/vue@2.6.11', | |
|     'https://unpkg.com/vuex@3.4.0', | |
|     // 'https://unpkg.com/element-ui/lib/index.js', | |
|     'https://cdn.bootcdn.net/ajax/libs/element-ui/2.13.2/index.js', | |
|     'https://cdn.bootcdn.net/ajax/libs/echarts/4.8.0/echarts.min.js', | |
|     'expendPlugins/chart/chartmix.umd.js' | |
|     // 'http://10.0.75.1:8000/chartmix.umd.js' | |
| ] | |
| 
 | |
| const dependLinks = [ | |
|     // 'https://unpkg.com/element-ui/lib/theme-chalk/index.css', | |
|     'https://cdn.bootcdn.net/ajax/libs/element-ui/2.13.2/theme-chalk/index.css', | |
|     'expendPlugins/chart/chartmix.css' | |
|     // 'http://10.0.75.1:8000/chartmix.css' | |
| ] | |
| 
 | |
| // Initialize the chart component | |
| function chart() { | |
|     loadLinks(dependLinks); | |
| 
 | |
|     seriesLoadScripts(dependScripts, null, function () { | |
|         const store = new Vuex.Store() | |
|         console.info('chartmix::', chartmix.default) | |
| 
 | |
|         Vue.use(chartmix.default, { store }) | |
|         let outDom = document.getElementById('luckysheet_info_detail') | |
|         chartmix.default.initChart(outDom, chartInfo.lang) | |
|         $('.chartSetting').css({ | |
|             position: 'absolute', | |
|             right: 0, | |
|             width: '300px', | |
|             display: 'none', | |
|             background: '#fff', | |
|             paddingLeft: '10px', | |
|             border: '1px solid #ccc', | |
|             height: 'auto', | |
|             zIndex: 99999999 | |
|         }) | |
|         chartInfo.createChart = chartmix.default.createChart | |
|         chartInfo.highlightChart = chartmix.default.highlightChart | |
|         chartInfo.deleteChart = chartmix.default.deleteChart | |
|         chartInfo.resizeChart = chartmix.default.resizeChart | |
|         chartInfo.changeChartRange = chartmix.default.changeChartRange | |
|         chartInfo.changeChartCellData = chartmix.default.changeChartCellData | |
|         chartInfo.chart_selection = chart_selection() | |
|     }); | |
| } | |
| 
 | |
| function chart_selection(){ | |
|   return { | |
|     create: function () { | |
|         var chart_json = chartInfo.currentChart | |
|    | |
|         if (chart_json.rangeArray.length > 1) { | |
|             return | |
|         } | |
|    | |
|         $('#luckysheet-chart-rangeShow').empty() | |
|         $('#luckysheet-cell-selected-boxs').hide() | |
|         $('#luckysheet-cell-selected-focus').hide() | |
|         $('#luckysheet-rows-h-selected').hide() | |
|         $('#luckysheet-cols-h-selected').hide() | |
|         $('#luckysheet-row-count-show').hide() | |
|         $('#luckysheet-column-count-show').hide() | |
|    | |
|         var st_r = chart_json.rangeArray[0].row[0] | |
|         var st_c = chart_json.rangeArray[0].column[0] | |
|    | |
|         var rangeSplitArray = chart_json.rangeSplitArray | |
|    | |
|         //首行是否标题 | |
|         var rangeRowCheck = chart_json.rangeRowCheck | |
|    | |
|         if (rangeRowCheck.exits) { | |
|             var chart_rowtitle_html = getRangeShowHtml( | |
|                 'rowtitle', | |
|                 rangeSplitArray.rowtitle.row[0] + st_r, | |
|                 rangeSplitArray.rowtitle.row[1] + st_r, | |
|                 rangeSplitArray.rowtitle.column[0] + st_c, | |
|                 rangeSplitArray.rowtitle.column[1] + st_c | |
|             ) | |
|         } else { | |
|             var chart_rowtitle_html = '' | |
|         } | |
|    | |
|         //首列是否标题 | |
|         var rangeColCheck = chart_json.rangeColCheck | |
|    | |
|         if (rangeColCheck.exits) { | |
|             var chart_coltitle_html = getRangeShowHtml( | |
|                 'coltitle', | |
|                 rangeSplitArray.coltitle.row[0] + st_r, | |
|                 rangeSplitArray.coltitle.row[1] + st_r, | |
|                 rangeSplitArray.coltitle.column[0] + st_c, | |
|                 rangeSplitArray.coltitle.column[1] + st_c | |
|             ) | |
|         } else { | |
|             var chart_coltitle_html = '' | |
|         } | |
|    | |
|         //内容块 | |
|         var chart_content_html = getRangeShowHtml( | |
|             'content', | |
|             rangeSplitArray.content.row[0] + st_r, | |
|             rangeSplitArray.content.row[1] + st_r, | |
|             rangeSplitArray.content.column[0] + st_c, | |
|             rangeSplitArray.content.column[1] + st_c | |
|         ) | |
|    | |
|         $('#luckysheet-chart-rangeShow').append( | |
|             chart_rowtitle_html + chart_coltitle_html + chart_content_html | |
|         ) | |
|    | |
|         function getRangeShowHtml(type, r1, r2, c1, c2) { | |
|             var visibledatarow = getvisibledatarow() | |
|             var visibledatacolumn = getvisibledatacolumn() | |
|    | |
|             var row = visibledatarow[r2], | |
|                 row_pre = r1 - 1 == -1 ? 0 : visibledatarow[r1 - 1] | |
|             var col = visibledatacolumn[c2], | |
|                 col_pre = c1 - 1 == -1 ? 0 : visibledatacolumn[c1 - 1] | |
|    | |
|             if (type == 'rowtitle') { | |
|                 var color = '#C65151' | |
|             } | |
|    | |
|             if (type == 'coltitle') { | |
|                 var color = '#9667C0' | |
|             } | |
|    | |
|             if (type == 'content') { | |
|                 var color = '#4970D1' | |
|             } | |
|    | |
|             var html = | |
|                 '<div id="luckysheet-chart-rangeShow-' + | |
|                 type + | |
|                 '" style="left: ' + | |
|                 col_pre + | |
|                 'px;width: ' + | |
|                 (col - col_pre - 1) + | |
|                 'px;top: ' + | |
|                 row_pre + | |
|                 'px;height: ' + | |
|                 (row - row_pre - 1) + | |
|                 'px;border: none;margin: 0;position: absolute;z-index: 14;">' + | |
|                 '<div class="luckysheet-chart-rangeShow-move" data-type="top" style="height: 2px;border-top: 2px solid #fff;border-bottom: 2px solid #fff;background: ' + | |
|                 color + | |
|                 ';position: absolute;left: 0;right: 0;top: -2px;z-index: 18;opacity: 0.9;cursor: move;"></div>' + | |
|                 '<div class="luckysheet-chart-rangeShow-move" data-type="right" style="width: 2px;border-left: 2px solid #fff;border-right: 2px solid #fff;background: ' + | |
|                 color + | |
|                 ';position: absolute;top: 0;bottom: 0;right: -2px;z-index: 18;opacity: 0.9;cursor: move;"></div>' + | |
|                 '<div class="luckysheet-chart-rangeShow-move" data-type="bottom" style="height: 2px;border-top: 2px solid #fff;border-bottom: 2px solid #fff;background: ' + | |
|                 color + | |
|                 ';position: absolute;left: 0;right: 0;bottom: -2px;z-index: 18;opacity: 0.9;cursor: move;"></div>' + | |
|                 '<div class="luckysheet-chart-rangeShow-move" data-type="left" style="width: 2px;border-left: 2px solid #fff;border-right: 2px solid #fff;background: ' + | |
|                 color + | |
|                 ';position: absolute;top: 0;bottom: 0;left: -2px;z-index: 18;opacity: 0.9;cursor: move;"></div>' + | |
|                 '<div style="border: 2px solid #FC6666;background: ' + | |
|                 color + | |
|                 ';position: absolute;top: 0;right: 0;bottom: 0;left: 0;z-index: 15;opacity: 0.1;"></div>' + | |
|                 '<div class="luckysheet-chart-rangeShow-resize" data-type="lt" style="width: 6px;height: 6px;border: 1px solid #fff;background: ' + | |
|                 color + | |
|                 ';position: absolute;left: -3px;top: -3px;z-index: 19;cursor: se-resize;"></div>' + | |
|                 '<div class="luckysheet-chart-rangeShow-resize" data-type="rt" style="width: 6px;height: 6px;border: 1px solid #fff;background: ' + | |
|                 color + | |
|                 ';position: absolute;right: -3px;top: -3px;z-index: 19;cursor: ne-resize;"></div>' + | |
|                 '<div class="luckysheet-chart-rangeShow-resize" data-type="lb" style="width: 6px;height: 6px;border: 1px solid #fff;background: ' + | |
|                 color + | |
|                 ';position: absolute;left: -3px;bottom: -3px;z-index: 19;cursor: ne-resize;"></div>' + | |
|                 '<div class="luckysheet-chart-rangeShow-resize" data-type="rb" style="width: 6px;height: 6px;border: 1px solid #fff;background: ' + | |
|                 color + | |
|                 ';position: absolute;right: -3px;bottom: -3px;z-index: 19;cursor: se-resize;"></div>' + | |
|                 '</div>' | |
|    | |
|             return html | |
|         } | |
|     }, | |
|     rangeMove: false, | |
|     rangeMovexy: null, | |
|     rangeMoveIndex: null, | |
|     rangeMoveObj: null, | |
|     rangeMoveDraging: function (event, sheetBarHeight, statisticBarHeight) { | |
|         var chart_json = chartInfo.currentChart | |
|         var st_r = chart_json.rangeArray[0].row[0] | |
|         var st_c = chart_json.rangeArray[0].column[0] | |
|         var rangeRowCheck = chart_json.rangeRowCheck | |
|         var rangeColCheck = chart_json.rangeColCheck | |
|         var rangeSplitArray = chart_json.rangeSplitArray | |
|    | |
|         var mouse = mouseposition(event.pageX, event.pageY) | |
|         var scrollLeft = $('#luckysheet-cell-main').scrollLeft() | |
|         var scrollTop = $('#luckysheet-cell-main').scrollTop() | |
|    | |
|         var x = mouse[0] + scrollLeft | |
|         var y = mouse[1] + scrollTop | |
|    | |
|         var winH = | |
|             $(window).height() + scrollTop - sheetBarHeight - statisticBarHeight, | |
|             winW = $(window).width() + scrollLeft | |
|    | |
|         var rowLocation = _rowLocation(y), | |
|             row_index = rowLocation[2] | |
|         var colLocation = _colLocation(x), | |
|             col_index = colLocation[2] | |
|    | |
|         var visibledatarow = getvisibledatarow() | |
|         var visibledatacolumn = getvisibledatacolumn() | |
|    | |
|         var $id = chartInfo.chart_selection.rangeMoveObj.attr('id') | |
|    | |
|         if ($id == 'luckysheet-chart-rangeShow-content') { | |
|             //行 | |
|             var row_s = | |
|                 chartInfo.chart_selection.rangeMoveIndex[0] - | |
|                 chartInfo.chart_selection.rangeMovexy[0] + | |
|                 row_index | |
|    | |
|             if (rangeRowCheck.exits) { | |
|                 if (row_s < st_r + rangeRowCheck.range[1] + 1 || y < 0) { | |
|                     row_s = st_r + rangeRowCheck.range[1] + 1 | |
|                 } | |
|             } else { | |
|                 if (row_s < 0 || y < 0) { | |
|                     row_s = 0 | |
|                 } | |
|             } | |
|    | |
|             var row_e = | |
|                 rangeSplitArray.content.row[1] - rangeSplitArray.content.row[0] + row_s | |
|    | |
|             if (row_e >= visibledatarow.length - 1 || y > winH) { | |
|                 row_s = | |
|                     visibledatarow.length - | |
|                     1 - | |
|                     rangeSplitArray.content.row[1] + | |
|                     rangeSplitArray.content.row[0] | |
|                 row_e = visibledatarow.length - 1 | |
|             } | |
|    | |
|             //列 | |
|             var col_s = | |
|                 chartInfo.chart_selection.rangeMoveIndex[1] - | |
|                 chartInfo.chart_selection.rangeMovexy[1] + | |
|                 col_index | |
|             if (rangeColCheck.exits) { | |
|                 if (col_s < st_c + rangeColCheck.range[1] + 1 || x < 0) { | |
|                     col_s = st_c + rangeColCheck.range[1] + 1 | |
|                 } | |
|             } else { | |
|                 if (col_s < 0 || x < 0) { | |
|                     col_s = 0 | |
|                 } | |
|             } | |
|    | |
|             var col_e = | |
|                 rangeSplitArray.content.column[1] - | |
|                 rangeSplitArray.content.column[0] + | |
|                 col_s | |
|    | |
|             if (col_e >= visibledatacolumn.length - 1 || x > winW) { | |
|                 col_s = | |
|                     visibledatacolumn.length - | |
|                     1 - | |
|                     rangeSplitArray.content.column[1] + | |
|                     rangeSplitArray.content.column[0] | |
|                 col_e = visibledatacolumn.length - 1 | |
|             } | |
|    | |
|             //更新 | |
|             if (rangeRowCheck.exits && rangeColCheck.exits) { | |
|                 chart_json.rangeArray = [{ row: [st_r, row_e], column: [st_c, col_e] }] | |
|                 chart_json.rangeSplitArray.range = { | |
|                     row: [st_r, row_e], | |
|                     column: [st_c, col_e] | |
|                 } | |
|    | |
|                 chart_json.rangeSplitArray.content = { | |
|                     row: [row_s - st_r, row_e - st_r], | |
|                     column: [col_s - st_c, col_e - st_c] | |
|                 } | |
|    | |
|                 chart_json.rangeSplitArray.rowtitle = { | |
|                     row: chart_json.rangeSplitArray.rowtitle.row, | |
|                     column: [col_s - st_c, col_e - st_c] | |
|                 } | |
|    | |
|                 chart_json.rangeSplitArray.coltitle = { | |
|                     row: [row_s - st_r, row_e - st_r], | |
|                     column: chart_json.rangeSplitArray.coltitle.column | |
|                 } | |
|             } else if (rangeRowCheck.exits) { | |
|                 chart_json.rangeArray = [{ row: [st_r, row_e], column: [col_s, col_e] }] | |
|                 chart_json.rangeSplitArray.range = { | |
|                     row: [st_r, row_e], | |
|                     column: [col_s, col_e] | |
|                 } | |
|    | |
|                 chart_json.rangeSplitArray.content = { | |
|                     row: [row_s - st_r, row_e - st_r], | |
|                     column: chart_json.rangeSplitArray.content.column | |
|                 } | |
|             } else if (rangeColCheck.exits) { | |
|                 chart_json.rangeArray = [{ row: [row_s, row_e], column: [st_c, col_e] }] | |
|                 chart_json.rangeSplitArray.range = { | |
|                     row: [row_s, row_e], | |
|                     column: [st_c, col_e] | |
|                 } | |
|    | |
|                 chart_json.rangeSplitArray.content = { | |
|                     row: chart_json.rangeSplitArray.content.row, | |
|                     column: [col_s - st_c, col_e - st_c] | |
|                 } | |
|             } else { | |
|                 chart_json.rangeArray = [ | |
|                     { row: [row_s, row_e], column: [col_s, col_e] } | |
|                 ] | |
|                 chart_json.rangeSplitArray.range = { | |
|                     row: [row_s, row_e], | |
|                     column: [col_s, col_e] | |
|                 } | |
|             } | |
|         } else if ($id == 'luckysheet-chart-rangeShow-rowtitle') { | |
|             //列 | |
|             var col_s = | |
|                 chartInfo.chart_selection.rangeMoveIndex[1] - | |
|                 chartInfo.chart_selection.rangeMovexy[1] + | |
|                 col_index | |
|    | |
|             if (rangeColCheck.exits) { | |
|                 if (col_s < st_c + rangeColCheck.range[1] + 1 || x < 0) { | |
|                     col_s = st_c + rangeColCheck.range[1] + 1 | |
|                 } | |
|             } else { | |
|                 if (col_s < 0 || x < 0) { | |
|                     col_s = 0 | |
|                 } | |
|             } | |
|    | |
|             var col_e = | |
|                 rangeSplitArray.rowtitle.column[1] - | |
|                 rangeSplitArray.rowtitle.column[0] + | |
|                 col_s | |
|    | |
|             if (col_e >= visibledatacolumn.length - 1 || x > winW) { | |
|                 col_s = | |
|                     visibledatacolumn.length - | |
|                     1 - | |
|                     rangeSplitArray.rowtitle.column[1] + | |
|                     rangeSplitArray.rowtitle.column[0] | |
|                 col_e = visibledatacolumn.length - 1 | |
|             } | |
|    | |
|             //更新 | |
|             if (rangeColCheck.exits) { | |
|                 chart_json.rangeArray = [ | |
|                     { row: chart_json.rangeArray[0].row, column: [st_c, col_e] } | |
|                 ] | |
|                 chart_json.rangeSplitArray.range = { | |
|                     row: chart_json.rangeArray[0].row, | |
|                     column: [st_c, col_e] | |
|                 } | |
|    | |
|                 chart_json.rangeSplitArray.rowtitle = { | |
|                     row: chart_json.rangeSplitArray.rowtitle.row, | |
|                     column: [col_s - st_c, col_e - st_c] | |
|                 } | |
|                 chart_json.rangeSplitArray.content = { | |
|                     row: chart_json.rangeSplitArray.content.row, | |
|                     column: [col_s - st_c, col_e - st_c] | |
|                 } | |
|             } else { | |
|                 chart_json.rangeArray = [ | |
|                     { row: chart_json.rangeArray[0].row, column: [col_s, col_e] } | |
|                 ] | |
|                 chart_json.rangeSplitArray.range = { | |
|                     row: chart_json.rangeArray[0].row, | |
|                     column: [col_s, col_e] | |
|                 } | |
|             } | |
|         } else if ($id == 'luckysheet-chart-rangeShow-coltitle') { | |
|             //行 | |
|             var row_s = | |
|                 chartInfo.chart_selection.rangeMoveIndex[0] - | |
|                 chartInfo.chart_selection.rangeMovexy[0] + | |
|                 row_index | |
|             if (rangeRowCheck.exits) { | |
|                 if (row_s < st_r + rangeRowCheck.range[1] + 1 || y < 0) { | |
|                     row_s = st_r + rangeRowCheck.range[1] + 1 | |
|                 } | |
|             } else { | |
|                 if (row_s < 0 || y < 0) { | |
|                     row_s = 0 | |
|                 } | |
|             } | |
|    | |
|             //更新 | |
|             var row_e = | |
|                 rangeSplitArray.coltitle.row[1] - | |
|                 rangeSplitArray.coltitle.row[0] + | |
|                 row_s | |
|    | |
|             if (row_e >= visibledatarow.length - 1 || y > winH) { | |
|                 row_s = | |
|                     visibledatarow.length - | |
|                     1 - | |
|                     rangeSplitArray.coltitle.row[1] + | |
|                     rangeSplitArray.coltitle.row[0] | |
|                 row_e = visibledatarow.length - 1 | |
|             } | |
|    | |
|             if (rangeRowCheck.exits) { | |
|                 chart_json.rangeArray = [ | |
|                     { row: [st_r, row_e], column: chart_json.rangeArray[0].column } | |
|                 ] | |
|                 chart_json.rangeSplitArray.range = { | |
|                     row: [st_r, row_e], | |
|                     column: chart_json.rangeArray[0].column | |
|                 } | |
|    | |
|                 chart_json.rangeSplitArray.coltitle = { | |
|                     row: [row_s - st_r, row_e - st_r], | |
|                     column: chart_json.rangeSplitArray.coltitle.column | |
|                 } | |
|                 chart_json.rangeSplitArray.content = { | |
|                     row: [row_s - st_r, row_e - st_r], | |
|                     column: chart_json.rangeSplitArray.content.column | |
|                 } | |
|             } else { | |
|                 chart_json.rangeArray = [ | |
|                     { row: [row_s, row_e], column: chart_json.rangeArray[0].column } | |
|                 ] | |
|                 chart_json.rangeSplitArray.range = { | |
|                     row: [row_s, row_e], | |
|                     column: chart_json.rangeArray[0].column | |
|                 } | |
|             } | |
|         } | |
|    | |
|         chartInfo.chart_selection.create(chartInfo.currentChart) | |
|     }, | |
|     rangeMoveDragged: function () { | |
|         chartInfo.chart_selection.rangeMove = false | |
|    | |
|         var updateJson = chartInfo.currentChart | |
|    | |
|         updateJson.rangeTxt = getRangetxt( | |
|             chartInfo.currentSheetIndex, | |
|             updateJson.rangeArray[0], | |
|             chartInfo.currentSheetIndex | |
|         ) | |
|         updateJson.chartData = getdatabyselection( | |
|             updateJson.rangeArray[0], | |
|             chartInfo.currentSheetIndex | |
|         ) | |
|         // 渲染 | |
|         chartInfo.changeChartRange(updateJson.chart_id, updateJson.chartData, updateJson.rangeArray, updateJson.rangeTxt) | |
|     }, | |
|     rangeResize: false, | |
|     rangeResizexy: null, | |
|     rangeResizeIndex: null, | |
|     rangeResizeObj: null, | |
|     rangeResizeDraging: function (event, sheetBarHeight, statisticBarHeight) { | |
|         var chart_json = chartInfo.currentChart | |
|    | |
|         var st_r = chart_json.rangeArray[0].row[0] | |
|         var st_c = chart_json.rangeArray[0].column[0] | |
|         var rangeRowCheck = chart_json.rangeRowCheck | |
|         var rangeColCheck = chart_json.rangeColCheck | |
|         var rangeSplitArray = chart_json.rangeSplitArray | |
|    | |
|         var mouse = mouseposition(event.pageX, event.pageY) | |
|         var scrollLeft = $('#luckysheet-cell-main').scrollLeft() | |
|         var scrollTop = $('#luckysheet-cell-main').scrollTop() | |
|    | |
|         var x = mouse[0] + scrollLeft | |
|         var y = mouse[1] + scrollTop | |
|    | |
|         var winH = | |
|             $(window).height() + scrollTop - sheetBarHeight - statisticBarHeight, | |
|             winW = $(window).width() + scrollLeft | |
|    | |
|         var rowLocation = _rowLocation(y), | |
|             row_index = rowLocation[2] | |
|         var colLocation = _colLocation(x), | |
|             col_index = colLocation[2] | |
|    | |
|         var visibledatarow = getvisibledatarow() | |
|         var visibledatacolumn = getvisibledatacolumn() | |
|    | |
|         var $id = chartInfo.chart_selection.rangeResizeObj.attr('id') | |
|    | |
|         if ($id == 'luckysheet-chart-rangeShow-content') { | |
|             var r1, r2, c1, c2 | |
|    | |
|             if (chartInfo.chart_selection.rangeResize == 'lt') { | |
|                 r1 = chartInfo.chart_selection.rangeResizeIndex.row[0] | |
|                 c1 = chartInfo.chart_selection.rangeResizeIndex.column[0] | |
|    | |
|                 r2 = chartInfo.chart_selection.rangeResizeIndex.row[1] | |
|                 c2 = chartInfo.chart_selection.rangeResizeIndex.column[1] | |
|             } else if (chartInfo.chart_selection.rangeResize == 'lb') { | |
|                 r1 = chartInfo.chart_selection.rangeResizeIndex.row[1] | |
|                 c1 = chartInfo.chart_selection.rangeResizeIndex.column[0] | |
|    | |
|                 r2 = chartInfo.chart_selection.rangeResizeIndex.row[0] | |
|                 c2 = chartInfo.chart_selection.rangeResizeIndex.column[1] | |
|             } else if (chartInfo.chart_selection.rangeResize == 'rt') { | |
|                 r1 = chartInfo.chart_selection.rangeResizeIndex.row[0] | |
|                 c1 = chartInfo.chart_selection.rangeResizeIndex.column[1] | |
|    | |
|                 r2 = chartInfo.chart_selection.rangeResizeIndex.row[1] | |
|                 c2 = chartInfo.chart_selection.rangeResizeIndex.column[0] | |
|             } else if (chartInfo.chart_selection.rangeResize == 'rb') { | |
|                 r1 = chartInfo.chart_selection.rangeResizeIndex.row[1] | |
|                 c1 = chartInfo.chart_selection.rangeResizeIndex.column[1] | |
|    | |
|                 r2 = chartInfo.chart_selection.rangeResizeIndex.row[0] | |
|                 c2 = chartInfo.chart_selection.rangeResizeIndex.column[0] | |
|             } | |
|    | |
|             //行 | |
|             if (rangeRowCheck.exits) { | |
|                 var row_s = r1 - chartInfo.chart_selection.rangeResizexy[0] + row_index | |
|    | |
|                 if (row_s < st_r + rangeRowCheck.range[1] + 1 || y < 0) { | |
|                     row_s = st_r + rangeRowCheck.range[1] + 1 | |
|                 } else if (row_s >= visibledatarow.length - 1 || y > winH) { | |
|                     row_s = visibledatarow.length - 1 | |
|                 } | |
|             } else { | |
|                 var row_s = st_r - chartInfo.chart_selection.rangeResizexy[0] + row_index | |
|    | |
|                 if (row_s < 0 || y < 0) { | |
|                     row_s = 0 | |
|                 } else if (row_s >= visibledatarow.length - 1 || y > winH) { | |
|                     row_s = visibledatarow.length - 1 | |
|                 } | |
|             } | |
|    | |
|             //列 | |
|             if (rangeColCheck.exits) { | |
|                 var col_s = c1 - chartInfo.chart_selection.rangeResizexy[1] + col_index | |
|    | |
|                 if (col_s < st_c + rangeColCheck.range[1] + 1 || x < 0) { | |
|                     col_s = st_c + rangeColCheck.range[1] + 1 | |
|                 } else if (col_s >= visibledatacolumn.length - 1 || x > winW) { | |
|                     col_s = visibledatacolumn.length - 1 | |
|                 } | |
|             } else { | |
|                 var col_s = st_c - chartInfo.chart_selection.rangeResizexy[1] + col_index | |
|    | |
|                 if (col_s < 0 || x < 0) { | |
|                     col_s = 0 | |
|                 } else if (col_s >= visibledatacolumn.length - 1 || x > winW) { | |
|                     col_s = visibledatacolumn.length - 1 | |
|                 } | |
|             } | |
|    | |
|             var obj_r1, obj_r2, obj_c1, obj_c2 | |
|    | |
|             if (row_s > r2) { | |
|                 obj_r1 = r2 | |
|                 obj_r2 = row_s | |
|             } else { | |
|                 obj_r1 = row_s | |
|                 obj_r2 = r2 | |
|             } | |
|    | |
|             if (col_s > c2) { | |
|                 obj_c1 = c2 | |
|                 obj_c2 = col_s | |
|             } else { | |
|                 obj_c1 = col_s | |
|                 obj_c2 = c2 | |
|             } | |
|    | |
|             if (!rangeRowCheck.exits && !rangeColCheck.exits) { | |
|                 chart_json.rangeArray = [ | |
|                     { row: [obj_r1, obj_r2], column: [obj_c1, obj_c2] } | |
|                 ] | |
|                 chart_json.rangeSplitArray.range = { | |
|                     row: [obj_r1, obj_r2], | |
|                     column: [obj_c1, obj_c2] | |
|                 } | |
|             } else { | |
|                 chart_json.rangeArray = [ | |
|                     { row: [st_r, obj_r2], column: [st_c, obj_c2] } | |
|                 ] | |
|                 chart_json.rangeSplitArray.range = { | |
|                     row: [st_r, obj_r2], | |
|                     column: [st_c, obj_c2] | |
|                 } | |
|    | |
|                 chart_json.rangeSplitArray.content = { | |
|                     row: [obj_r1 - st_r, obj_r2 - st_r], | |
|                     column: [obj_c1 - st_c, obj_c2 - st_c] | |
|                 } | |
|    | |
|                 if (rangeRowCheck.exits) { | |
|                     chart_json.rangeSplitArray.rowtitle = { | |
|                         row: chart_json.rangeSplitArray.rowtitle.row, | |
|                         column: [obj_c1 - st_c, obj_c2 - st_c] | |
|                     } | |
|                 } | |
|    | |
|                 if (rangeColCheck.exits) { | |
|                     chart_json.rangeSplitArray.coltitle = { | |
|                         row: [obj_r1 - st_r, obj_r2 - st_r], | |
|                         column: chart_json.rangeSplitArray.coltitle.column | |
|                     } | |
|                 } | |
|             } | |
|         } else if ($id == 'luckysheet-chart-rangeShow-rowtitle') { | |
|             var c1, c2 | |
|    | |
|             if ( | |
|                 chartInfo.chart_selection.rangeResize == 'lt' || | |
|                 chartInfo.chart_selection.rangeResize == 'lb' | |
|             ) { | |
|                 c1 = chartInfo.chart_selection.rangeResizeIndex.column[0] | |
|                 c2 = chartInfo.chart_selection.rangeResizeIndex.column[1] | |
|             } else if ( | |
|                 chartInfo.chart_selection.rangeResize == 'rt' || | |
|                 chartInfo.chart_selection.rangeResize == 'rb' | |
|             ) { | |
|                 c1 = chartInfo.chart_selection.rangeResizeIndex.column[1] | |
|                 c2 = chartInfo.chart_selection.rangeResizeIndex.column[0] | |
|             } | |
|    | |
|             //列 | |
|             if (rangeColCheck.exits) { | |
|                 var col_s = c1 - chartInfo.chart_selection.rangeResizexy[1] + col_index | |
|    | |
|                 if (col_s < st_c + rangeColCheck.range[1] + 1 || x < 0) { | |
|                     col_s = st_c + rangeColCheck.range[1] + 1 | |
|                 } else if (col_s >= visibledatacolumn.length - 1 || x > winW) { | |
|                     col_s = visibledatacolumn.length - 1 | |
|                 } | |
|             } else { | |
|                 var col_s = st_c - chartInfo.chart_selection.rangeResizexy[1] + col_index | |
|    | |
|                 if (col_s < 0 || x < 0) { | |
|                     col_s = 0 | |
|                 } else if (col_s >= visibledatacolumn.length - 1 || x > winW) { | |
|                     col_s = visibledatacolumn.length - 1 | |
|                 } | |
|             } | |
|    | |
|             var obj_c1, obj_c2 | |
|    | |
|             if (col_s > c2) { | |
|                 obj_c1 = c2 | |
|                 obj_c2 = col_s | |
|             } else { | |
|                 obj_c1 = col_s | |
|                 obj_c2 = c2 | |
|             } | |
|    | |
|             //更新 | |
|             if (!rangeColCheck.exits) { | |
|                 chart_json.rangeArray = [ | |
|                     { row: chart_json.rangeArray[0].row, column: [obj_c1, obj_c2] } | |
|                 ] | |
|                 chart_json.rangeSplitArray.range = { | |
|                     row: chart_json.rangeArray[0].row, | |
|                     column: [obj_c1, obj_c2] | |
|                 } | |
|             } else { | |
|                 chart_json.rangeArray = [ | |
|                     { row: chart_json.rangeArray[0].row, column: [st_c, obj_c2] } | |
|                 ] | |
|                 chart_json.rangeSplitArray.range = { | |
|                     row: chart_json.rangeArray[0].row, | |
|                     column: [st_c, obj_c2] | |
|                 } | |
|    | |
|                 chart_json.rangeSplitArray.rowtitle = { | |
|                     row: chart_json.rangeSplitArray.rowtitle.row, | |
|                     column: [obj_c1 - st_c, obj_c2 - st_c] | |
|                 } | |
|                 chart_json.rangeSplitArray.content = { | |
|                     row: chart_json.rangeSplitArray.content.row, | |
|                     column: [obj_c1 - st_c, obj_c2 - st_c] | |
|                 } | |
|             } | |
|         } else if ($id == 'luckysheet-chart-rangeShow-coltitle') { | |
|             var r1, r2 | |
|    | |
|             if ( | |
|                 chartInfo.chart_selection.rangeResize == 'lt' || | |
|                 chartInfo.chart_selection.rangeResize == 'rt' | |
|             ) { | |
|                 r1 = chartInfo.chart_selection.rangeResizeIndex.row[0] | |
|                 r2 = chartInfo.chart_selection.rangeResizeIndex.row[1] | |
|             } else if ( | |
|                 chartInfo.chart_selection.rangeResize == 'lb' || | |
|                 chartInfo.chart_selection.rangeResize == 'rb' | |
|             ) { | |
|                 r1 = chartInfo.chart_selection.rangeResizeIndex.row[1] | |
|                 r2 = chartInfo.chart_selection.rangeResizeIndex.row[0] | |
|             } | |
|    | |
|             //行 | |
|             if (rangeRowCheck.exits) { | |
|                 var row_s = r1 - chartInfo.chart_selection.rangeResizexy[0] + row_index | |
|    | |
|                 if (row_s < st_r + rangeRowCheck.range[1] + 1 || y < 0) { | |
|                     row_s = st_r + rangeRowCheck.range[1] + 1 | |
|                 } else if (row_s >= visibledatarow.length - 1 || y > winH) { | |
|                     row_s = visibledatarow.length - 1 | |
|                 } | |
|             } else { | |
|                 var row_s = st_r - chartInfo.chart_selection.rangeResizexy[0] + row_index | |
|    | |
|                 if (row_s < 0 || y < 0) { | |
|                     row_s = 0 | |
|                 } else if (row_s >= visibledatarow.length - 1 || y > winH) { | |
|                     row_s = visibledatarow.length - 1 | |
|                 } | |
|             } | |
|    | |
|             var obj_r1, obj_r2 | |
|    | |
|             if (row_s > r2) { | |
|                 obj_r1 = r2 | |
|                 obj_r2 = row_s | |
|             } else { | |
|                 obj_r1 = row_s | |
|                 obj_r2 = r2 | |
|             } | |
|    | |
|             //更新 | |
|             if (!rangeRowCheck.exits) { | |
|                 chart_json.rangeArray = [ | |
|                     { row: [obj_r1, obj_r2], column: chart_json.rangeArray[0].column } | |
|                 ] | |
|                 chart_json.rangeSplitArray.range = { | |
|                     row: [obj_r1, obj_r2], | |
|                     column: chart_json.rangeArray[0].column | |
|                 } | |
|             } else { | |
|                 chart_json.rangeArray = [ | |
|                     { row: [st_r, obj_r2], column: chart_json.rangeArray[0].column } | |
|                 ] | |
|                 chart_json.rangeSplitArray.range = { | |
|                     row: [st_r, obj_r2], | |
|                     column: chart_json.rangeArray[0].column | |
|                 } | |
|    | |
|                 chart_json.rangeSplitArray.coltitle = { | |
|                     row: [obj_r1 - st_r, obj_r2 - st_r], | |
|                     column: chart_json.rangeSplitArray.coltitle.column | |
|                 } | |
|                 chart_json.rangeSplitArray.content = { | |
|                     row: [obj_r1 - st_r, obj_r2 - st_r], | |
|                     column: chart_json.rangeSplitArray.content.column | |
|                 } | |
|             } | |
|         } | |
|    | |
|         chartInfo.chart_selection.create(chartInfo.currentChart) | |
|     }, | |
|     rangeResizeDragged: function () { | |
|         chartInfo.chart_selection.rangeResize = null | |
|    | |
|         updateJson.rangeTxt = getRangetxt( | |
|             chartInfo.currentSheetIndex, | |
|             updateJson.rangeArray[0], | |
|             chartInfo.currentSheetIndex | |
|         ) | |
|         updateJson.chartData = getdatabyselection( | |
|             updateJson.rangeArray[0], | |
|             chartInfo.currentSheetIndex | |
|         ) | |
|         // 渲染 | |
|         chartInfo.changeChartRange(updateJson.chart_id, updateJson.chartData, updateJson.rangeArray, updateJson.rangeTxt) | |
|    | |
|     } | |
|   } | |
| }  | |
| 
 | |
| // create chart | |
| function createLuckyChart(width, height, left, top) { | |
|     //如果只选中一个单元格,则自动填充选取 | |
|     var jfgird_select_save = luckysheet.getluckysheet_select_save(); | |
|     if ( | |
|         jfgird_select_save.length == 1 && | |
|         jfgird_select_save[0].row[0] == jfgird_select_save[0].row[1] && | |
|         jfgird_select_save[0].column[0] == jfgird_select_save[0].column[1] | |
|     ) { | |
|         luckysheetMoveHighlightRange2("right", "rangeOfSelect"); | |
| 
 | |
|         luckysheetMoveHighlightRange2("down", "rangeOfSelect"); | |
| 
 | |
|         jfgird_select_save = luckysheet.getluckysheet_select_save(); | |
|     } | |
|     //处理右边的空白单元格,自动略过并修改选区 ---------------start | |
|     var shiftpositon_row = -1; | |
| 
 | |
|     var row_ed = | |
|         jfgird_select_save[0]["row"][1] - jfgird_select_save[0]["row"][0]; | |
|     for ( | |
|         var r = jfgird_select_save[0]["row"][0]; | |
|         r <= jfgird_select_save[0]["row"][1]; | |
|         r++ | |
|     ) { | |
|         for ( | |
|             var c = jfgird_select_save[0]["column"][0]; | |
|             c <= jfgird_select_save[0]["column"][1]; | |
|             c++ | |
|         ) { | |
|             var value = getcellvalue(r, c, luckysheet.flowdata()); | |
|             //console.log("value,r,c",value,r,c); | |
|             if (value != null && value.toString().length > 0) { | |
|                 shiftpositon_row = r; | |
|                 break; | |
|             } | |
|         } | |
| 
 | |
|         if (shiftpositon_row !== -1) { | |
|             break; | |
|         } | |
|     } | |
| 
 | |
|     if (shiftpositon_row == -1) { | |
|         shiftpositon_row = 0; | |
|     } | |
| 
 | |
|     jfgird_select_save[0]["row"] = [shiftpositon_row, shiftpositon_row]; | |
|     luckysheet.setluckysheet_select_save(jfgird_select_save); | |
| 
 | |
|     chartInfo.luckysheet_shiftpositon = $.extend(true, {}, jfgird_select_save[0]); | |
|     luckysheetMoveEndCell("down", "range", false, row_ed); | |
|     jfgird_select_save = luckysheet.getluckysheet_select_save(); | |
| 
 | |
|     var shiftpositon_col = -1; | |
|     var column_ed = | |
|         jfgird_select_save[0]["column"][1] - jfgird_select_save[0]["column"][0]; | |
|     for ( | |
|         var c = jfgird_select_save[0]["column"][0]; | |
|         c <= jfgird_select_save[0]["column"][1]; | |
|         c++ | |
|     ) { | |
|         for ( | |
|             var r = jfgird_select_save[0]["row"][0]; | |
|             r <= jfgird_select_save[0]["row"][1]; | |
|             r++ | |
|         ) { | |
|             var value = getcellvalue(r, c, luckysheet.flowdata()); | |
|             if (value != null && value.toString().length > 0) { | |
|                 shiftpositon_col = c; | |
|                 break; | |
|             } | |
|         } | |
| 
 | |
|         if (shiftpositon_col !== -1) { | |
|             break; | |
|         } | |
|     } | |
| 
 | |
|     if (shiftpositon_col == -1) { | |
|         shiftpositon_col = 0; | |
|     } | |
| 
 | |
|     jfgird_select_save[0]["column"] = [shiftpositon_col, shiftpositon_col]; | |
|     luckysheet.setluckysheet_select_save(jfgird_select_save); | |
| 
 | |
|     chartInfo.luckysheet_shiftpositon = $.extend(true, {}, jfgird_select_save[0]); | |
|     luckysheetMoveEndCell("right", "range", false, column_ed); | |
|     jfgird_select_save = luckysheet.getluckysheet_select_save() | |
| 
 | |
|     var rangeArray = $.extend(true, [], jfgird_select_save); | |
| 
 | |
|     var rangeTxt = getRangetxt(chartInfo.currentSheetIndex, rangeArray[0], chartInfo.currentSheetIndex) | |
| 
 | |
| 
 | |
|     let chartData = getdatabyselection() | |
|     console.dir(chartData) | |
| 
 | |
|     let chart_id = generateRandomKey('chart') | |
| 
 | |
|     let chart_id_c = chart_id + '_c' | |
| 
 | |
|     let modelChartShowHTML = | |
|         '<div id="${id}"class="luckysheet-modal-dialog luckysheet-modal-dialog-chart ${addclass}"tabindex="0"role="dialog"aria-labelledby=":41e"dir="ltr"><div class="luckysheet-modal-dialog-resize"><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-lt"data-type="lt"></div><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-mt"data-type="mt"></div><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-lm"data-type="lm"></div><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-rm"data-type="rm"></div><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-rt"data-type="rt"></div><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-lb"data-type="lb"></div><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-mb"data-type="mb"></div><div class="luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-rb"data-type="rb"></div></div><div class="luckysheet-modal-dialog-controll"><span class="luckysheet-modal-controll-btn luckysheet-modal-controll-update"role="button"tabindex="0"aria-label="修改图表"title="修改图表"><i class="fa fa-pencil"aria-hidden="true"></i></span><span class="luckysheet-modal-controll-btn luckysheet-modal-controll-max"role="butluckysheet_chartIns_indexton"tabindex="0"aria-label="最大化"title="最大化"><i class="fa fa-window-maximize"aria-hidden="true"></i></span><span class="luckysheet-modal-controll-btn luckysheet-modal-controll-del"role="button"tabindex="0"aria-label="删除"title="删除"><i class="fa fa-trash"aria-hidden="true"></i></span></div><div class="luckysheet-modal-dialog-content">${content}</div></div>' | |
| 
 | |
|     let $t = $( | |
|         replaceHtml(modelChartShowHTML, { | |
|             id: chart_id_c, | |
|             addclass: 'luckysheet-data-visualization-chart', | |
|             title: '图表生成', | |
|             content: '' | |
|         }) | |
|     ).appendTo($('.luckysheet-cell-main')) | |
| 
 | |
|     let container = document.getElementById(chart_id_c) | |
| 
 | |
|     let { render, chart_json } = chartInfo.createChart($(`#${chart_id_c}`).children('.luckysheet-modal-dialog-content')[0], chartData, chart_id, rangeArray, rangeTxt) | |
|     chartInfo.currentChart = chart_json.chartOptions | |
|     console.dir(JSON.stringify(chart_json)) | |
| 
 | |
|     width = width ? width : 400 | |
|     height = height ? height : 250 | |
|     left = left ? left : 0 | |
|     top = top ? top : 0 | |
|     container.style.width = width + 'px' | |
|     container.style.height = height + 'px' | |
|     container.style.position = 'absolute' | |
|     container.style.background = '#fff' | |
|     container.style.left = left + 'px' | |
|     container.style.top = top + 'px' | |
|     render.style.width = '100%' | |
|     render.style.height = '100%' | |
|     container.style.zIndex = chartInfo.zIndex ? chartInfo.zIndex : 15 | |
|     chartInfo.zIndex++ | |
| 
 | |
|     // insert chartinfo | |
|     let sheetFile = chartInfo.luckysheetfile[getSheetIndex(chartInfo.currentSheetIndex)]; | |
|     if (!sheetFile.chart) { | |
|         sheetFile.chart = []; | |
|     } | |
|     sheetFile.chart.push({ | |
|         chart_id, | |
|         width, | |
|         height, | |
|         left, | |
|         top, | |
|         sheetIndex: sheetFile.index | |
|     }) | |
| 
 | |
|     //处理区域高亮框参数,当前页中,只有当前的图表的needRangShow为true,其他为false | |
|     showNeedRangeShow(chart_id); | |
| 
 | |
|     // delete current chart | |
|     $(`#${chart_id}_c .luckysheet-modal-controll-del`).click(function (e) { | |
|         delChart(chart_id) | |
|     }) | |
| 
 | |
|     // move chart | |
|     $t.mousedown(function (e) { | |
|         //允许拖动渲染框 | |
|         if ( | |
|             !$(e.target).is(".luckysheet-modal-dialog-controll") && | |
|             !$(e.target).is(".luckysheet-modal-controll-btn") && | |
|             !$(e.target).is("i") | |
|         ) { | |
|             // Debounce | |
|             chartInfo.chartparam.luckysheetCurrentChartMoveTimeout = setTimeout( | |
|                 function () { | |
|                     chartInfo.chartparam.luckysheetCurrentChartMove = true; | |
|                 }, | |
|                 100 | |
|             ); | |
|         } | |
| 
 | |
|         var toffset = chartInfo.chartparam.luckysheetCurrentChartMoveObj.offset(); | |
|         var tpsition = chartInfo.chartparam.luckysheetCurrentChartMoveObj.position(); | |
|         //luckysheetCurrentChartMoveXy: [鼠标点相对chart框的距离X方向,鼠标点相对chart框的距离Y方向,chart框相对cell-main的距离X方向,chart框相对cell-main的距离Y方向,水平滚动条的位置,垂直滚动条的位置] | |
|         chartInfo.chartparam.luckysheetCurrentChartMoveXy = [ | |
|             e.pageX - toffset.left, | |
|             e.pageY - toffset.top, | |
|             tpsition.left, | |
|             tpsition.top, | |
|             $("#luckysheet-scrollbar-x").scrollLeft(), | |
|             $("#luckysheet-scrollbar-y").scrollTop() | |
|         ]; | |
|         chartInfo.chartparam.luckysheetCurrentChartMoveWinH = $( | |
|             "#luckysheet-cell-main" | |
|         )[0].scrollHeight; | |
|         chartInfo.chartparam.luckysheetCurrentChartMoveWinW = $( | |
|             "#luckysheet-cell-main" | |
|         )[0].scrollWidth; | |
| 
 | |
|         if ( | |
|             !$(e.target).hasClass("luckysheet-mousedown-cancel") && | |
|             $(e.target).filter("[class*='sp-palette']").length == 0 && | |
|             $(e.target).filter("[class*='sp-thumb']").length == 0 && | |
|             $(e.target).filter("[class*='sp-']").length == 0 | |
|         ) { | |
|             $("#luckysheet-rightclick-menu").hide(); | |
|             $("#luckysheet-cols-h-hover").hide(); | |
|             $("#luckysheet-cols-menu-btn").hide(); | |
|             $("#luckysheet-rightclick-menu").hide(); | |
|             $( | |
|                 "#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu, #luckysheet-user-menu" | |
|             ).hide(); | |
|             $( | |
|                 "body > .luckysheet-filter-menu, body > .luckysheet-filter-submenu, body > .luckysheet-cols-menu" | |
|             ).hide(); | |
| 
 | |
|         } | |
| 
 | |
|         e.stopPropagation(); | |
|     }).find(".luckysheet-modal-dialog-resize-item") | |
|         .mousedown(function (e) { | |
|             if (chartInfo.chartparam.luckysheetCurrentChartActive) { | |
|                 chartInfo.chartparam.luckysheetCurrentChartResize = $(this).data("type"); //开始状态resize | |
|  | |
|                 var mouse = mouseposition(e.pageX, e.pageY), | |
|                     scrollLeft = $("#luckysheet-scrollbar-x").scrollLeft(), | |
|                     scrollTop = $("#luckysheet-scrollbar-y").scrollTop(); | |
|                 var x = mouse[0] + scrollLeft; | |
|                 var y = mouse[1] + scrollTop; | |
|                 var position = chartInfo.chartparam.luckysheetCurrentChartResizeObj.position(); | |
|                 //参数:x,y:鼠标位置,$t.width(), $t.height(): chart框宽高, position.left + scrollLeft, position.top + scrollTop :chart框位置 ,scrollLeft, scrollTop:滚动条位置 | |
|                 chartInfo.chartparam.luckysheetCurrentChartResizeXy = [ | |
|                     x, | |
|                     y, | |
|                     $t.width(), | |
|                     $t.height(), | |
|                     position.left + scrollLeft, | |
|                     position.top + scrollTop, | |
|                     scrollLeft, | |
|                     scrollTop | |
|                 ]; | |
|                 chartInfo.chartparam.luckysheetCurrentChartResizeWinH = $( | |
|                     "#luckysheet-cell-main" | |
|                 )[0].scrollHeight; | |
|                 chartInfo.chartparam.luckysheetCurrentChartResizeWinW = $( | |
|                     "#luckysheet-cell-main" | |
|                 )[0].scrollWidth; | |
| 
 | |
|                 chartInfo.chartparam.luckysheetCurrentChart = chart_id; | |
| 
 | |
|                 e.stopPropagation(); | |
| 
 | |
|             } | |
|         }) | |
| } | |
| 
 | |
| // delete chart | |
| function delChart(chart_id) { | |
|     // delete container | |
|     $(`.luckysheet-cell-main #${chart_id}_c`).remove() | |
|     // delete storage | |
|     let sheetFile = chartInfo.luckysheetfile[getSheetIndex(chartInfo.currentSheetIndex)] | |
|     let index = sheetFile.chart.findIndex(item => item.chart_id == chart_id) | |
|     sheetFile.chart.splice(index, 1) | |
|     // api call | |
|     chartInfo.deleteChart(chart_id) | |
| } | |
| 
 | |
| //设置某个图表的高亮区域状态为显示,处理当前页的所有图表,只取一个图表设置为显示,其他隐藏,其他页不管 | |
| function showNeedRangeShow(chart_id) { | |
|     let chartLists = chartInfo.luckysheetfile[getSheetIndex(chartInfo.currentSheetIndex)].chart; | |
|     for (let chartId in chartLists) { | |
|         if (chartLists[chartId].sheetIndex == chartInfo.currentSheetIndex) { | |
|             //当前sheet的图表先设置为false | |
|             chartLists[chartId].needRangeShow = false | |
|             if (chartId == chart_id) { | |
|                 chartLists[chartId].needRangeShow = true | |
|             } | |
|         } | |
|         //操作DOM当前图表选择区域高亮 | |
|         selectRangeBorderShow(chart_id) | |
|     } | |
| } | |
| //隐藏当前sheet所有的图表高亮区域 | |
| function hideAllNeedRangeShow() { | |
|     let chartLists = chartInfo.luckysheetfile[getSheetIndex(chartInfo.currentSheetIndex)].chart; | |
|     for (let chartId in chartLists) { | |
|         if (chartLists[chartId].sheetIndex == chartInfo.currentSheetIndex) { | |
|             //当前sheet的图表设置为false | |
|             chartLists[chartId].needRangeShow = false | |
|         } | |
|         //操作DOM 当前图表选择区域隐藏 | |
|         selectRangeBorderHide() | |
|     } | |
| } | |
| 
 | |
| //选择区域高亮 | |
| function selectRangeBorderShow(chart_id) { | |
| 
 | |
|     let $t = $('#' + chart_id + '_c') | |
|     chartInfo.chart_selection.create(chart_id) | |
|     chartInfo.chartparam.luckysheetCurrentChartActive = true | |
|     chartInfo.chartparam.luckysheetCurrentChartMoveObj = $t | |
|     chartInfo.chartparam.luckysheetCurrentChartResizeObj = $t | |
|     chartInfo.chartparam.luckysheetCurrentChart = chart_id | |
| 
 | |
|     //luckysheet取cell-main,后续扩展到其他的用户自定义元素 | |
|     $('#luckysheet-cell-main') | |
|         .find('.luckysheet-modal-dialog-resize') | |
|         .hide() | |
|     $('#luckysheet-cell-main') | |
|         .find('.luckysheet-modal-dialog-controll') | |
|         .hide() | |
| 
 | |
|     $t.css('z-index', chartInfo.chartparam.luckysheetCurrentChartZIndexRank++) | |
|     $t.find('.luckysheet-modal-dialog-resize').show() | |
|     $t.find('.luckysheet-modal-dialog-controll').show() | |
| 
 | |
|     if ( | |
|         ($('.chartSetting').is(':visible') || chartInfo.chartparam.luckysheet_chart_redo_click) && | |
|         chart_id != chartInfo.chartparam.luckysheetCurrentChart | |
|     ) { | |
|         // TODO: 第一次创建图表时候需要初始化数据选择框 qkSelection | |
|         // generator.ini(chartMixConfig) | |
|         $('body .luckysheet-cols-menu').hide() | |
|     } | |
| 
 | |
|     // 切换到当前图表设置项 | |
|     chartInfo.currentChart = chartInfo.highlightChart(chart_id) | |
| } | |
| 
 | |
| //选择区域高亮隐藏 | |
| function selectRangeBorderHide(settingShow) { | |
| 
 | |
|     $('#luckysheet-cell-main .luckysheet-modal-dialog-resize, #luckysheet-cell-main .luckysheet-modal-dialog-controll').hide() | |
|     $('#luckysheet-cell-main').find('.luckysheet-datavisual-selection-set div').remove() | |
|     chartInfo.chartparam.luckysheetCurrentChartActive = false | |
| 
 | |
|     $('#luckysheet-chart-rangeShow').empty() | |
| 
 | |
|     //标识:是否处理设置界面 | |
|     if (!settingShow && $('.chartSetting').is(':visible') && !isEditMode()) { | |
|         hideChartSettingComponent() | |
|     } | |
| } | |
| 
 | |
| 
 | |
| function showChartSettingComponent(refresh, chart_id) { | |
|     if (!$('.chartSetting').is(':visible')) { | |
| 
 | |
|         //隐藏设置界面 | |
|         $('.chartSetting').show(); | |
|         //.luckysheet-modal-dialog-resize为图表显示框的缩放框,.luckysheet-modal-dialog-controll为显示框右边的控制按钮 | |
|         // $("#luckysheet-cell-main .luckysheet-modal-dialog-resize, #luckysheet-cell-main .luckysheet-modal-dialog-controll").show(); | |
|  | |
|         // 切换图表后再打开设置界面时候执行更新DOM | |
|         if (!!chart_id) { | |
|             chartInfo.highlightChart(chart_id) | |
|         } | |
| 
 | |
|         $('#luckysheet-cell-main').find('.luckysheet-datavisual-selection-set div').show() | |
|         chartInfo.chartparam.luckysheetCurrentChartActive = true | |
|         if (!isEditMode()) { | |
|             if (!refresh) { | |
|                 setTimeout(function () { | |
|                     luckysheetsizeauto() | |
|                 }, 0) | |
|             } | |
|         } | |
| 
 | |
|     } | |
| } | |
| function hideChartSettingComponent(refresh) { | |
|     if ($('.chartSetting').is(':visible')) { | |
| 
 | |
|         //隐藏设置界面 | |
|         $('.chartSetting').hide(); | |
|         //.luckysheet-modal-dialog-resize为图表显示框的缩放框,.luckysheet-modal-dialog-controll为显示框右边的控制按钮 | |
|         $('#luckysheet-cell-main .luckysheet-modal-dialog-resize, #luckysheet-cell-main .luckysheet-modal-dialog-controll').hide() | |
| 
 | |
|         $('#luckysheet-cell-main').find('.luckysheet-datavisual-selection-set div').remove() | |
| 
 | |
|         chartInfo.chartparam.luckysheetCurrentChartActive = false | |
|         if (!isEditMode()) { | |
|             if (!refresh) { | |
|                 setTimeout(function () { | |
|                     luckysheetsizeauto() | |
|                 }, 0) | |
|             } | |
|         } | |
| 
 | |
|     } | |
| } | |
| 
 | |
| 
 | |
| export { chart, createLuckyChart } |