diff --git a/src/controllers/controlHistory.js b/src/controllers/controlHistory.js index d22e77c..73def60 100644 --- a/src/controllers/controlHistory.js +++ b/src/controllers/controlHistory.js @@ -23,6 +23,7 @@ import { } from '../global/refresh'; import { getSheetIndex } from '../methods/get'; import Store from '../store'; +import { selectHightlightShow } from './select'; function formulaHistoryHanddler(ctr, type="redo"){ if(ctr==null){ @@ -83,7 +84,6 @@ const controlHistory = { "dataVerification": ctr.dataVerification, "dynamicArray": ctr.dynamicArray } - jfrefreshgrid(ctr.data, ctr.range, allParam); // formula.execFunctionGroup(null, null, null, null, ctr.data);//取之前的数据 } @@ -421,6 +421,10 @@ const controlHistory = { } cleargridelement(e); + if (ctr.range) { + Store.luckysheet_select_save = ctr.range; + selectHightlightShow(); + } Store.clearjfundo = true; }, undo: function () { @@ -726,7 +730,11 @@ const controlHistory = { zoomNumberDomBind(); zoomRefreshView(); } - + + if (ctr.range) { + Store.luckysheet_select_save = ctr.range; + selectHightlightShow(); + } Store.clearjfundo = true; } }; diff --git a/src/controllers/handler.js b/src/controllers/handler.js index cc7e13d..7ffd7d0 100644 --- a/src/controllers/handler.js +++ b/src/controllers/handler.js @@ -3603,7 +3603,26 @@ export default function luckysheetHandler() { cfg["customHeight"][Store.luckysheet_rows_change_size_start[1]] = 1; - cfg["rowlen"][Store.luckysheet_rows_change_size_start[1]] = Math.ceil(size/Store.zoomRatio); + const changeRowIndex = Store.luckysheet_rows_change_size_start[1]; + let changeRowSelected = false; + if(Store["luckysheet_select_save"].length > 0) { + Store["luckysheet_select_save"].filter(select => select.row_select).some((select) => { + if(changeRowIndex >= select.row[0] && changeRowIndex <= select.row[1]) { + changeRowSelected = true; + } + return changeRowSelected; + }); + } + if(changeRowSelected) { + Store["luckysheet_select_save"].filter(select => select.row_select).forEach(select => { + for(let r = select.row[0]; r <= select.row[1]; r++) { + cfg["rowlen"][r] = Math.ceil(size/Store.zoomRatio); + } + }) + } + else { + cfg["rowlen"][Store.luckysheet_rows_change_size_start[1]] = Math.ceil(size/Store.zoomRatio); + } let images = imageCtrl.moveChangeSize("row", Store.luckysheet_rows_change_size_start[1], size); @@ -3685,7 +3704,27 @@ export default function luckysheetHandler() { cfg["customWidth"][Store.luckysheet_cols_change_size_start[1]] = 1; - cfg["columnlen"][Store.luckysheet_cols_change_size_start[1]] = Math.ceil(size/Store.zoomRatio); + const changeColumnIndex = Store.luckysheet_cols_change_size_start[1]; + let changeColumnSelected = false; + if(Store["luckysheet_select_save"].length > 0) { + Store["luckysheet_select_save"].filter(select => select.column_select).some((select) => { + if(changeColumnIndex >= select.column[0] && changeColumnIndex <= select.column[1]) { + changeColumnSelected = true; + } + return changeColumnSelected; + }); + } + if(changeColumnSelected) { + Store["luckysheet_select_save"].filter(select => select.column_select).forEach(select => { + for(let r = select.column[0]; r <= select.column[1]; r++) { + cfg["columnlen"][r] = Math.ceil(size/Store.zoomRatio); + } + }) + } + else { + cfg["columnlen"][Store.luckysheet_cols_change_size_start[1]] = Math.ceil(size/Store.zoomRatio); + } + let images = imageCtrl.moveChangeSize("column", Store.luckysheet_cols_change_size_start[1], size); @@ -4930,7 +4969,7 @@ export default function luckysheetHandler() { $("#luckysheet-wa-functionbox-confirm").click(); Store.luckysheet_select_status = false; - Store.luckysheet_select_save = [{ "row": [0, Store.flowdata.length - 1], "column": [0, Store.flowdata[0].length - 1], "row_focus": 0, "column_focus": 0 }]; + Store.luckysheet_select_save = [{ "row": [0, Store.flowdata.length - 1], "column": [0, Store.flowdata[0].length - 1], "row_focus": 0, "column_focus": 0, row_select: true, column_select: true }]; selectHightlightShow(); clearTimeout(Store.countfuncTimeout); diff --git a/src/controllers/rowColumnOperation.js b/src/controllers/rowColumnOperation.js index 32f1370..a7586fe 100644 --- a/src/controllers/rowColumnOperation.js +++ b/src/controllers/rowColumnOperation.js @@ -318,7 +318,8 @@ export function rowColumnOperationInitial(){ "row": rowseleted, "column": [0, col_index], "row_focus": row_index, - "column_focus": 0 + "column_focus": 0, + "row_select": true }); } else{ @@ -335,7 +336,8 @@ export function rowColumnOperationInitial(){ "row": rowseleted, "column": [0, col_index], "row_focus": row_index, - "column_focus": 0 + "column_focus": 0, + "row_select": true }); } @@ -730,7 +732,8 @@ export function rowColumnOperationInitial(){ "row": [0, row_index], "column": columnseleted, "row_focus": 0, - "column_focus": col_index + "column_focus": col_index, + "column_select": true }); } else{ @@ -747,7 +750,8 @@ export function rowColumnOperationInitial(){ "row": [0, row_index], "column": columnseleted, "row_focus": 0, - "column_focus": col_index + "column_focus": col_index, + "column_select": true }); } diff --git a/src/global/api.js b/src/global/api.js index d2eb938..9ef2865 100644 --- a/src/global/api.js +++ b/src/global/api.js @@ -323,10 +323,32 @@ export function setCellFormat(row, column, attr, value, options = {}) { // 特殊格式 if (attr == 'ct' && (!value || !value.hasOwnProperty('fa') || !value.hasOwnProperty('t'))) { return new TypeError('While set attribute \'ct\' to cell, the value must have property \'fa\' and \'t\'') - cellData.m = update(value.fa, cellData.v) } - cellData[attr] = value; + if (attr == 'bd') { + let cfg = $.extend(true, {}, Store.config); + if(cfg["borderInfo"] == null){ + cfg["borderInfo"] = []; + } + + let borderInfo = { + rangeType: "range", + borderType: "border-all", + color: "#000", + style: "1", + range: [{ + column: [column, column], + row: [row, row] + }], + ...value, + } + + cfg["borderInfo"].push(borderInfo); + Store.config = cfg; + } else { + cellData[attr] = value; + } + // refresh jfrefreshgrid(targetSheetData, { row: [row], @@ -901,6 +923,8 @@ export function insertRowOrColumn(type, index = 0, options = {}) { success } = {...options} + let _locale = locale(); + let locale_info = _locale.info; if (!isRealNum(number)) { if(isEditMode()){ alert(locale_info.tipInputNumber);