Files
mnote/Luckysheet-master/src/controllers/rowColumnOperation.js
T

2615 lines
100 KiB
JavaScript

import pivotTable from "./pivotTable";
import luckysheetPostil from "./postil";
import imageCtrl from "./imageCtrl";
import menuButton from "./menuButton";
import server from "./server";
import method from "../global/method";
import { selectHightlightShow, luckysheet_count_show, selectHelpboxFill } from "./select";
import { getObjType, showrightclickmenu, luckysheetContainerFocus, luckysheetfontformat, $$ } from "../utils/util";
import { getSheetIndex, getRangetxt } from "../methods/get";
import { rowLocation, rowLocationByIndex, colLocation, colLocationByIndex, mouseposition } from "../global/location";
import { isRealNull, isRealNum, hasPartMC, isEditMode, checkIsAllowEdit } from "../global/validate";
import { countfunc } from "../global/count";
import formula from "../global/formula";
import { luckysheetextendtable, luckysheetdeletetable, luckysheetDeleteCell } from "../global/extend";
import { jfrefreshgrid, jfrefreshgridall, jfrefreshgrid_rhcw } from "../global/refresh";
import { getcellvalue } from "../global/getdata";
import tooltip from "../global/tooltip";
import editor from "../global/editor";
import locale from "../locale/locale";
import { getMeasureText, getCellTextInfo } from "../global/getRowlen";
import { luckysheet_searcharray } from "../controllers/sheetSearch";
import { isInlineStringCell } from "./inlineString";
import {
checkProtectionLockedRangeList,
checkProtectionAllSelected,
checkProtectionAuthorityNormal,
} from "./protection";
import Store from "../store";
import luckysheetConfigsetting from "./luckysheetConfigsetting";
export function rowColumnOperationInitial() {
//表格行标题 mouse事件
$("#luckysheet-rows-h")
.mousedown(function(event) {
if (!checkProtectionAllSelected(Store.currentSheetIndex)) {
return;
}
//有批注在编辑时
luckysheetPostil.removeActivePs();
//图片 active/cropping
if (
$("#luckysheet-modal-dialog-activeImage").is(":visible") ||
$("#luckysheet-modal-dialog-cropping").is(":visible")
) {
imageCtrl.cancelActiveImgItem();
}
let mouse = mouseposition(event.pageX, event.pageY);
let y = mouse[1] + $("#luckysheet-rows-h").scrollTop();
let row_location = rowLocation(y),
row = row_location[1],
row_pre = row_location[0],
row_index = row_location[2];
let col_index = Store.visibledatacolumn.length - 1,
col = Store.visibledatacolumn[col_index],
col_pre = 0;
$("#luckysheet-rightclick-menu").hide();
$("#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu").hide();
//mousedown是右键
if (event.which == "3") {
let isright = false;
for (let s = 0; s < Store.luckysheet_select_save.length; s++) {
let obj_s = Store.luckysheet_select_save[s];
if (
obj_s["row"] != null &&
row_index >= obj_s["row"][0] &&
row_index <= obj_s["row"][1] &&
obj_s["column"][0] == 0 &&
obj_s["column"][1] == Store.flowdata[0].length - 1
) {
isright = true;
break;
}
}
if (isright) {
return;
}
}
let top = row_pre,
height = row - row_pre - 1;
let rowseleted = [row_index, row_index];
Store.luckysheet_scroll_status = true;
//公式相关
let $input = $("#luckysheet-input-box");
if (parseInt($input.css("top")) > 0) {
if (
formula.rangestart ||
formula.rangedrag_column_start ||
formula.rangedrag_row_start ||
formula.israngeseleciton() ||
$("#luckysheet-ifFormulaGenerator-multiRange-dialog").is(":visible")
) {
//公式选区
let changeparam = menuButton.mergeMoveMain(
[0, col_index],
rowseleted,
{ row_focus: row_index, column_focus: 0 },
top,
height,
col_pre,
col,
);
if (changeparam != null) {
//columnseleted = changeparam[0];
rowseleted = changeparam[1];
top = changeparam[2];
height = changeparam[3];
//left = changeparam[4];
//width = changeparam[5];
}
if (event.shiftKey) {
let last = formula.func_selectedrange;
let top = 0,
height = 0,
rowseleted = [];
if (last.top > row_pre) {
top = row_pre;
height = last.top + last.height - row_pre;
if (last.row[1] > last.row_focus) {
last.row[1] = last.row_focus;
}
rowseleted = [row_index, last.row[1]];
} else if (last.top == row_pre) {
top = row_pre;
height = last.top + last.height - row_pre;
rowseleted = [row_index, last.row[0]];
} else {
top = last.top;
height = row - last.top - 1;
if (last.row[0] < last.row_focus) {
last.row[0] = last.row_focus;
}
rowseleted = [last.row[0], row_index];
}
let changeparam = menuButton.mergeMoveMain(
[0, col_index],
rowseleted,
{ row_focus: row_index, column_focus: 0 },
top,
height,
col_pre,
col,
);
if (changeparam != null) {
// columnseleted = changeparam[0];
rowseleted = changeparam[1];
top = changeparam[2];
height = changeparam[3];
// left = changeparam[4];
// width = changeparam[5];
}
last["row"] = rowseleted;
last["top_move"] = top;
last["height_move"] = height;
formula.func_selectedrange = last;
} else if (
event.ctrlKey &&
$("#luckysheet-rich-text-editor")
.find("span")
.last()
.text() != ","
) {
//按住ctrl 选择选区时 先处理上一个选区
let vText = $("#luckysheet-rich-text-editor").text() + ",";
if (vText.length > 0 && vText.substr(0, 1) == "=") {
vText = formula.functionHTMLGenerate(vText);
if (window.getSelection) {
// all browsers, except IE before version 9
let currSelection = window.getSelection();
formula.functionRangeIndex = [
$(currSelection.anchorNode)
.parent()
.index(),
currSelection.anchorOffset,
];
} else {
// Internet Explorer before version 9
let textRange = document.selection.createRange();
formula.functionRangeIndex = textRange;
}
$("#luckysheet-rich-text-editor").html(vText);
formula.canceFunctionrangeSelected();
formula.createRangeHightlight();
}
formula.rangestart = false;
formula.rangedrag_column_start = false;
formula.rangedrag_row_start = false;
$("#luckysheet-functionbox-cell").html(vText);
formula.rangeHightlightselected($("#luckysheet-rich-text-editor"));
//再进行 选区的选择
formula.israngeseleciton();
formula.func_selectedrange = {
left: colLocationByIndex(0)[0],
width: colLocationByIndex(0)[1] - colLocationByIndex(0)[0] - 1,
top: top,
height: height,
left_move: col_pre,
width_move: col - col_pre - 1,
top_move: top,
height_move: height,
row: rowseleted,
column: [0, col_index],
row_focus: row_index,
column_focus: 0,
};
} else {
formula.func_selectedrange = {
left: colLocationByIndex(0)[0],
width: colLocationByIndex(0)[1] - colLocationByIndex(0)[0] - 1,
top: top,
height: height,
left_move: col_pre,
width_move: col - col_pre - 1,
top_move: top,
height_move: height,
row: rowseleted,
column: [0, col_index],
row_focus: row_index,
column_focus: 0,
};
}
if (
formula.rangestart ||
formula.rangedrag_column_start ||
formula.rangedrag_row_start ||
formula.israngeseleciton()
) {
formula.rangeSetValue({ row: rowseleted, column: [null, null] });
} else if ($("#luckysheet-ifFormulaGenerator-multiRange-dialog").is(":visible")) {
//if公式生成器
let range = getRangetxt(
Store.currentSheetIndex,
{ row: rowseleted, column: [0, col_index] },
Store.currentSheetIndex,
);
$("#luckysheet-ifFormulaGenerator-multiRange-dialog input").val(range);
}
formula.rangedrag_row_start = true;
formula.rangestart = false;
formula.rangedrag_column_start = false;
$("#luckysheet-formula-functionrange-select")
.css({
left: col_pre,
width: col - col_pre - 1,
top: top,
height: height,
})
.show();
$("#luckysheet-formula-help-c").hide();
luckysheet_count_show(col_pre, top, col - col_pre - 1, height, rowseleted, [0, col_index]);
setTimeout(function() {
let currSelection = window.getSelection();
let anchorOffset = currSelection.anchorNode;
let $editor;
if (
$("#luckysheet-search-formula-parm").is(":visible") ||
$("#luckysheet-search-formula-parm-select").is(":visible")
) {
$editor = $("#luckysheet-rich-text-editor");
formula.rangechangeindex = formula.data_parm_index;
} else {
$editor = $(anchorOffset).closest("div");
}
let $span = $editor.find("span[rangeindex='" + formula.rangechangeindex + "']");
formula.setCaretPosition($span.get(0), 0, $span.html().length);
}, 1);
return;
} else {
formula.updatecell(Store.luckysheetCellUpdate[0], Store.luckysheetCellUpdate[1]);
Store.luckysheet_rows_selected_status = true;
}
} else {
Store.luckysheet_rows_selected_status = true;
}
if (Store.luckysheet_rows_selected_status) {
if (event.shiftKey) {
//按住shift点击行索引选取范围
let last = $.extend(
true,
{},
Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1],
); //选区最后一个
let top = 0,
height = 0,
rowseleted = [];
if (last.top > row_pre) {
top = row_pre;
height = last.top + last.height - row_pre;
if (last.row[1] > last.row_focus) {
last.row[1] = last.row_focus;
}
rowseleted = [row_index, last.row[1]];
} else if (last.top == row_pre) {
top = row_pre;
height = last.top + last.height - row_pre;
rowseleted = [row_index, last.row[0]];
} else {
top = last.top;
height = row - last.top - 1;
if (last.row[0] < last.row_focus) {
last.row[0] = last.row_focus;
}
rowseleted = [last.row[0], row_index];
}
last["row"] = rowseleted;
last["top_move"] = top;
last["height_move"] = height;
Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1] = last;
} else if (event.ctrlKey) {
Store.luckysheet_select_save.push({
left: colLocationByIndex(0)[0],
width: colLocationByIndex(0)[1] - colLocationByIndex(0)[0] - 1,
top: top,
height: height,
left_move: col_pre,
width_move: col - col_pre - 1,
top_move: top,
height_move: height,
row: rowseleted,
column: [0, col_index],
row_focus: row_index,
column_focus: 0,
row_select: true,
});
} else {
Store.luckysheet_select_save.length = 0;
Store.luckysheet_select_save.push({
left: colLocationByIndex(0)[0],
width: colLocationByIndex(0)[1] - colLocationByIndex(0)[0] - 1,
top: top,
height: height,
left_move: col_pre,
width_move: col - col_pre - 1,
top_move: top,
height_move: height,
row: rowseleted,
column: [0, col_index],
row_focus: row_index,
column_focus: 0,
row_select: true,
});
}
selectHightlightShow();
//允许编辑后的后台更新时
server.saveParam("mv", Store.currentSheetIndex, Store.luckysheet_select_save);
}
selectHelpboxFill();
setTimeout(function() {
clearTimeout(Store.countfuncTimeout);
countfunc();
}, 101);
})
.mousemove(function(event) {
if (
Store.luckysheet_rows_selected_status ||
Store.luckysheet_rows_change_size ||
Store.luckysheet_select_status
) {
$("#luckysheet-rows-h-hover").hide();
return;
}
let mouse = mouseposition(event.pageX, event.pageY);
let y = mouse[1] + $("#luckysheet-rows-h").scrollTop();
let row_location = rowLocation(y),
row = row_location[1],
row_pre = row_location[0],
row_index = row_location[2];
$("#luckysheet-rows-h-hover").css({ top: row_pre, height: row - row_pre - 1, display: "block" });
if (y < row - 1 && y >= row - 5) {
$("#luckysheet-rows-change-size").css({ top: row - 3, opacity: 0 });
} else {
$("#luckysheet-rows-change-size").css("opacity", 0);
}
})
.mouseleave(function(event) {
$("#luckysheet-rows-h-hover").hide();
$("#luckysheet-rows-change-size").css("opacity", 0);
})
.mouseup(function(event) {
if (event.which == 3) {
// *如果禁止前台编辑,则中止下一步操作
if (!checkIsAllowEdit()) {
return;
}
if (isEditMode()) {
//非编辑模式下禁止右键功能框
return;
}
$("#luckysheet-cols-rows-shift").hide();
Store.luckysheetRightHeadClickIs = "row";
$("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-word").text(locale().rightclick.row);
$("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-size").text(locale().rightclick.height);
$("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-left").text(locale().rightclick.top);
$("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-right").text(locale().rightclick.bottom);
$("#luckysheet-cols-rows-add").show();
$("#luckysheet-cols-rows-data").show();
$("#luckysheet-cols-rows-shift").hide();
$("#luckysheet-cols-rows-handleincell").hide();
$$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "block";
$$("#luckysheet-cols-rows-data .luckysheet-menuseparator").style.display = "block";
// 自定义右键菜单:向上向下增加行,删除行,隐藏显示行,设置行高
const cellRightClickConfig = luckysheetConfigsetting.cellRightClickConfig;
// 如果全部按钮都隐藏,则整个菜单容器也要隐藏
if (
!cellRightClickConfig.copy &&
!cellRightClickConfig.copyAs &&
!cellRightClickConfig.paste &&
!cellRightClickConfig.insertRow &&
!cellRightClickConfig.deleteRow &&
!cellRightClickConfig.hideRow &&
!cellRightClickConfig.rowHeight &&
!cellRightClickConfig.clear &&
!cellRightClickConfig.matrix &&
!cellRightClickConfig.sort &&
!cellRightClickConfig.filter &&
!cellRightClickConfig.chart &&
!cellRightClickConfig.image &&
!cellRightClickConfig.link &&
!cellRightClickConfig.data &&
!cellRightClickConfig.cellFormat
) {
return;
}
$$("#luckysheet-top-left-add-selected").style.display = cellRightClickConfig.insertRow
? "block"
: "none";
$$("#luckysheet-bottom-right-add-selected").style.display = cellRightClickConfig.insertRow
? "block"
: "none";
$$("#luckysheet-del-selected").style.display = cellRightClickConfig.deleteRow ? "block" : "none";
$$("#luckysheet-hide-selected").style.display = cellRightClickConfig.hideRow ? "block" : "none";
$$("#luckysheet-show-selected").style.display = cellRightClickConfig.hideRow ? "block" : "none";
$$("#luckysheet-column-row-width-selected").style.display = cellRightClickConfig.rowHeight
? "block"
: "none";
// 1. 当一个功能菜单块上方的功能块按钮都隐藏的时候,下方的功能块的顶部分割线也需要隐藏
if (!cellRightClickConfig.copy && !cellRightClickConfig.copyAs && !cellRightClickConfig.paste) {
$$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "none";
if (
!cellRightClickConfig.insertRow &&
!cellRightClickConfig.deleteRow &&
!cellRightClickConfig.hideRow &&
!cellRightClickConfig.rowHeight
) {
$$("#luckysheet-cols-rows-data .luckysheet-menuseparator").style.display = "none";
}
}
// 2. 当一个功能菜单块内所有的按钮都隐藏的时候,它顶部的分割线也需要隐藏掉
if (
!cellRightClickConfig.insertRow &&
!cellRightClickConfig.deleteRow &&
!cellRightClickConfig.hideRow &&
!cellRightClickConfig.rowHeight
) {
$$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "none";
}
if (
!cellRightClickConfig.clear &&
!cellRightClickConfig.matrix &&
!cellRightClickConfig.sort &&
!cellRightClickConfig.filter &&
!cellRightClickConfig.chart &&
!cellRightClickConfig.image &&
!cellRightClickConfig.link &&
!cellRightClickConfig.data &&
!cellRightClickConfig.cellFormat
) {
$$("#luckysheet-cols-rows-data .luckysheet-menuseparator").style.display = "none";
}
showrightclickmenu($("#luckysheet-rightclick-menu"), $(this).offset().left + 46, event.pageY);
Store.luckysheet_cols_menu_status = true;
//行高默认值
let cfg = $.extend(true, {}, Store.config);
if (cfg["rowlen"] == null) {
cfg["rowlen"] = {};
}
let first_rowlen =
cfg["rowlen"][Store.luckysheet_select_save[0].row[0]] == null
? Store.defaultrowlen
: cfg["rowlen"][Store.luckysheet_select_save[0].row[0]];
let isSame = true;
for (let i = 0; i < Store.luckysheet_select_save.length; i++) {
let s = Store.luckysheet_select_save[i];
let r1 = s.row[0],
r2 = s.row[1];
for (let r = r1; r <= r2; r++) {
let rowlen = cfg["rowlen"][r] == null ? Store.defaultrowlen : cfg["rowlen"][r];
if (rowlen != first_rowlen) {
isSame = false;
break;
}
}
}
if (isSame) {
$("#luckysheet-cols-rows-add")
.find("input[type='number'].rcsize")
.val(first_rowlen);
} else {
$("#luckysheet-cols-rows-add")
.find("input[type='number'].rcsize")
.val("");
}
}
});
//表格列标题 mouse事件
$("#luckysheet-cols-h-c")
.mousedown(function(event) {
if (!checkProtectionAllSelected(Store.currentSheetIndex)) {
return;
}
//有批注在编辑时
luckysheetPostil.removeActivePs();
//图片 active/cropping
if (
$("#luckysheet-modal-dialog-activeImage").is(":visible") ||
$("#luckysheet-modal-dialog-cropping").is(":visible")
) {
imageCtrl.cancelActiveImgItem();
}
let mouse = mouseposition(event.pageX, event.pageY);
let x = mouse[0] + $(this).scrollLeft();
let row_index = Store.visibledatarow.length - 1,
row = Store.visibledatarow[row_index],
row_pre = 0;
let col_location = colLocation(x),
col = col_location[1],
col_pre = col_location[0],
col_index = col_location[2];
Store.orderbyindex = col_index; //排序全局函数
$("#luckysheet-rightclick-menu").hide();
$("#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu").hide();
$("#luckysheet-filter-menu, #luckysheet-filter-submenu").hide();
//mousedown是右键
if (event.which == "3") {
let isright = false;
for (let s = 0; s < Store.luckysheet_select_save.length; s++) {
let obj_s = Store.luckysheet_select_save[s];
if (
obj_s["column"] != null &&
col_index >= obj_s["column"][0] &&
col_index <= obj_s["column"][1] &&
obj_s["row"][0] == 0 &&
obj_s["row"][1] == Store.flowdata.length - 1
) {
isright = true;
break;
}
}
if (isright) {
return;
}
}
let left = col_pre,
width = col - col_pre - 1;
let columnseleted = [col_index, col_index];
Store.luckysheet_scroll_status = true;
//公式相关
let $input = $("#luckysheet-input-box");
if (parseInt($input.css("top")) > 0) {
if (
formula.rangestart ||
formula.rangedrag_column_start ||
formula.rangedrag_row_start ||
formula.israngeseleciton() ||
$("#luckysheet-ifFormulaGenerator-multiRange-dialog").is(":visible")
) {
//公式选区
let changeparam = menuButton.mergeMoveMain(
columnseleted,
[0, row_index],
{ row_focus: 0, column_focus: col_index },
row_pre,
row,
left,
width,
);
if (changeparam != null) {
columnseleted = changeparam[0];
//rowseleted= changeparam[1];
//top = changeparam[2];
//height = changeparam[3];
left = changeparam[4];
width = changeparam[5];
}
if (event.shiftKey) {
let last = formula.func_selectedrange;
let left = 0,
width = 0,
columnseleted = [];
if (last.left > col_pre) {
left = col_pre;
width = last.left + last.width - col_pre;
if (last.column[1] > last.column_focus) {
last.column[1] = last.column_focus;
}
columnseleted = [col_index, last.column[1]];
} else if (last.left == col_pre) {
left = col_pre;
width = last.left + last.width - col_pre;
columnseleted = [col_index, last.column[0]];
} else {
left = last.left;
width = col - last.left - 1;
if (last.column[0] < last.column_focus) {
last.column[0] = last.column_focus;
}
columnseleted = [last.column[0], col_index];
}
let changeparam = menuButton.mergeMoveMain(
columnseleted,
[0, row_index],
{ row_focus: 0, column_focus: col_index },
row_pre,
row,
left,
width,
);
if (changeparam != null) {
columnseleted = changeparam[0];
//rowseleted= changeparam[1];
//top = changeparam[2];
//height = changeparam[3];
left = changeparam[4];
width = changeparam[5];
}
last["column"] = columnseleted;
last["left_move"] = left;
last["width_move"] = width;
formula.func_selectedrange = last;
} else if (
event.ctrlKey &&
$("#luckysheet-rich-text-editor")
.find("span")
.last()
.text() != ","
) {
//按住ctrl 选择选区时 先处理上一个选区
let vText = $("#luckysheet-rich-text-editor").text() + ",";
if (vText.length > 0 && vText.substr(0, 1) == "=") {
vText = formula.functionHTMLGenerate(vText);
if (window.getSelection) {
// all browsers, except IE before version 9
let currSelection = window.getSelection();
formula.functionRangeIndex = [
$(currSelection.anchorNode)
.parent()
.index(),
currSelection.anchorOffset,
];
} else {
// Internet Explorer before version 9
let textRange = document.selection.createRange();
formula.functionRangeIndex = textRange;
}
$("#luckysheet-rich-text-editor").html(vText);
formula.canceFunctionrangeSelected();
formula.createRangeHightlight();
}
formula.rangestart = false;
formula.rangedrag_column_start = false;
formula.rangedrag_row_start = false;
$("#luckysheet-functionbox-cell").html(vText);
formula.rangeHightlightselected($("#luckysheet-rich-text-editor"));
//再进行 选区的选择
formula.israngeseleciton();
formula.func_selectedrange = {
left: left,
width: width,
top: rowLocationByIndex(0)[0],
height: rowLocationByIndex(0)[1] - rowLocationByIndex(0)[0] - 1,
left_move: left,
width_move: width,
top_move: row_pre,
height_move: row - row_pre - 1,
row: [0, row_index],
column: columnseleted,
row_focus: 0,
column_focus: col_index,
};
} else {
formula.func_selectedrange = {
left: left,
width: width,
top: rowLocationByIndex(0)[0],
height: rowLocationByIndex(0)[1] - rowLocationByIndex(0)[0] - 1,
left_move: left,
width_move: width,
top_move: row_pre,
height_move: row - row_pre - 1,
row: [0, row_index],
column: columnseleted,
row_focus: 0,
column_focus: col_index,
};
}
if (
formula.rangestart ||
formula.rangedrag_column_start ||
formula.rangedrag_row_start ||
formula.israngeseleciton()
) {
formula.rangeSetValue({ row: [null, null], column: columnseleted });
} else if ($("#luckysheet-ifFormulaGenerator-multiRange-dialog").is(":visible")) {
//if公式生成器
let range = getRangetxt(
Store.currentSheetIndex,
{ row: [0, row_index], column: columnseleted },
Store.currentSheetIndex,
);
$("#luckysheet-ifFormulaGenerator-multiRange-dialog input").val(range);
}
formula.rangedrag_column_start = true;
formula.rangestart = false;
formula.rangedrag_row_start = false;
$("#luckysheet-formula-functionrange-select")
.css({
left: left,
width: width,
top: row_pre,
height: row - row_pre - 1,
})
.show();
$("#luckysheet-formula-help-c").hide();
luckysheet_count_show(left, row_pre, width, row - row_pre - 1, [0, row_index], columnseleted);
return;
} else {
formula.updatecell(Store.luckysheetCellUpdate[0], Store.luckysheetCellUpdate[1]);
Store.luckysheet_cols_selected_status = true;
}
} else {
Store.luckysheet_cols_selected_status = true;
}
if (Store.luckysheet_cols_selected_status) {
if (event.shiftKey) {
//按住shift点击列索引选取范围
let last = $.extend(
true,
{},
Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1],
); //选区最后一个
let left = 0,
width = 0,
columnseleted = [];
if (last.left > col_pre) {
left = col_pre;
width = last.left + last.width - col_pre;
if (last.column[1] > last.column_focus) {
last.column[1] = last.column_focus;
}
columnseleted = [col_index, last.column[1]];
} else if (last.left == col_pre) {
left = col_pre;
width = last.left + last.width - col_pre;
columnseleted = [col_index, last.column[0]];
} else {
left = last.left;
width = col - last.left - 1;
if (last.column[0] < last.column_focus) {
last.column[0] = last.column_focus;
}
columnseleted = [last.column[0], col_index];
}
last["column"] = columnseleted;
last["left_move"] = left;
last["width_move"] = width;
Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1] = last;
} else if (event.ctrlKey) {
//选区添加
Store.luckysheet_select_save.push({
left: left,
width: width,
top: rowLocationByIndex(0)[0],
height: rowLocationByIndex(0)[1] - rowLocationByIndex(0)[0] - 1,
left_move: left,
width_move: width,
top_move: row_pre,
height_move: row - row_pre - 1,
row: [0, row_index],
column: columnseleted,
row_focus: 0,
column_focus: col_index,
column_select: true,
});
} else {
Store.luckysheet_select_save.length = 0;
Store.luckysheet_select_save.push({
left: left,
width: width,
top: rowLocationByIndex(0)[0],
height: rowLocationByIndex(0)[1] - rowLocationByIndex(0)[0] - 1,
left_move: left,
width_move: width,
top_move: row_pre,
height_move: row - row_pre - 1,
row: [0, row_index],
column: columnseleted,
row_focus: 0,
column_focus: col_index,
column_select: true,
});
}
selectHightlightShow();
//允许编辑后的后台更新时
server.saveParam("mv", Store.currentSheetIndex, Store.luckysheet_select_save);
}
selectHelpboxFill();
setTimeout(function() {
clearTimeout(Store.countfuncTimeout);
countfunc();
}, 101);
if (Store.luckysheet_cols_menu_status) {
$("#luckysheet-rightclick-menu").hide();
$("#luckysheet-cols-h-hover").hide();
$("#luckysheet-cols-menu-btn").hide();
Store.luckysheet_cols_menu_status = false;
}
event.stopPropagation();
})
.mousemove(function(event) {
if (Store.luckysheet_cols_selected_status || Store.luckysheet_select_status) {
$("#luckysheet-cols-h-hover").hide();
$("#luckysheet-cols-menu-btn").hide();
return;
}
if (Store.luckysheet_cols_menu_status || Store.luckysheet_cols_change_size) {
return;
}
let mouse = mouseposition(event.pageX, event.pageY);
let x = mouse[0] + $("#luckysheet-cols-h-c").scrollLeft();
let col_location = colLocation(x),
col = col_location[1],
col_pre = col_location[0],
col_index = col_location[2];
$("#luckysheet-cols-h-hover").css({ left: col_pre, width: col - col_pre - 1, display: "block" });
$("#luckysheet-cols-menu-btn").css({ left: col - 19, display: "block" });
$("#luckysheet-cols-change-size").css({ left: col - 5 });
if (x < col && x >= col - 5) {
$("#luckysheet-cols-change-size").css({ opacity: 0 });
$("#luckysheet-cols-menu-btn").hide();
} else {
$("#luckysheet-change-size-line").hide();
$("#luckysheet-cols-change-size").css("opacity", 0);
}
})
.mouseleave(function(event) {
if (Store.luckysheet_cols_menu_status || Store.luckysheet_cols_change_size) {
return;
}
$("#luckysheet-cols-h-hover").hide();
$("#luckysheet-cols-menu-btn").hide();
$("#luckysheet-cols-change-size").css("opacity", 0);
})
.mouseup(function(event) {
if (event.which == 3) {
// *如果禁止前台编辑,则中止下一步操作
if (!checkIsAllowEdit()) {
return;
}
if (isEditMode()) {
//非编辑模式下禁止右键功能框
return;
}
Store.luckysheetRightHeadClickIs = "column";
$("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-word").text(locale().rightclick.column);
$("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-size").text(locale().rightclick.width);
$("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-left").text(locale().rightclick.left);
$("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-right").text(locale().rightclick.right);
$("#luckysheet-cols-rows-add").show();
$("#luckysheet-cols-rows-data").show();
$("#luckysheet-cols-rows-shift").hide();
$("#luckysheet-cols-rows-handleincell").hide();
$$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "block";
$$("#luckysheet-cols-rows-data .luckysheet-menuseparator").style.display = "block";
// 自定义右键菜单:向左向右增加列,删除列,隐藏显示列,设置列宽
const cellRightClickConfig = luckysheetConfigsetting.cellRightClickConfig;
// 如果全部按钮都隐藏,则整个菜单容器也要隐藏
if (
!cellRightClickConfig.copy &&
!cellRightClickConfig.copyAs &&
!cellRightClickConfig.paste &&
!cellRightClickConfig.insertColumn &&
!cellRightClickConfig.deleteColumn &&
!cellRightClickConfig.hideColumn &&
!cellRightClickConfig.columnWidth &&
!cellRightClickConfig.clear &&
!cellRightClickConfig.matrix &&
!cellRightClickConfig.sort &&
!cellRightClickConfig.filter &&
!cellRightClickConfig.chart &&
!cellRightClickConfig.image &&
!cellRightClickConfig.link &&
!cellRightClickConfig.data &&
!cellRightClickConfig.cellFormat
) {
return;
}
$$("#luckysheet-top-left-add-selected").style.display = cellRightClickConfig.insertColumn
? "block"
: "none";
$$("#luckysheet-bottom-right-add-selected").style.display = cellRightClickConfig.insertColumn
? "block"
: "none";
$$("#luckysheet-del-selected").style.display = cellRightClickConfig.deleteColumn ? "block" : "none";
$$("#luckysheet-hide-selected").style.display = cellRightClickConfig.hideColumn ? "block" : "none";
$$("#luckysheet-show-selected").style.display = cellRightClickConfig.hideColumn ? "block" : "none";
$$("#luckysheet-column-row-width-selected").style.display = cellRightClickConfig.columnWidth
? "block"
: "none";
// 1. 当一个功能菜单块上方的功能块按钮都隐藏的时候,下方的功能块的顶部分割线也需要隐藏
if (!cellRightClickConfig.copy && !cellRightClickConfig.copyAs && !cellRightClickConfig.paste) {
$$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "none";
if (
!cellRightClickConfig.insertColumn &&
!cellRightClickConfig.deleteColumn &&
!cellRightClickConfig.hideColumn &&
!cellRightClickConfig.columnWidth
) {
$$("#luckysheet-cols-rows-data .luckysheet-menuseparator").style.display = "none";
}
}
// 2. 当一个功能菜单块内所有的按钮都隐藏的时候,它顶部的分割线也需要隐藏掉
if (
!cellRightClickConfig.insertColumn &&
!cellRightClickConfig.deleteColumn &&
!cellRightClickConfig.hideColumn &&
!cellRightClickConfig.columnWidth
) {
$$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "none";
}
if (
!cellRightClickConfig.clear &&
!cellRightClickConfig.matrix &&
!cellRightClickConfig.sort &&
!cellRightClickConfig.filter &&
!cellRightClickConfig.chart &&
!cellRightClickConfig.image &&
!cellRightClickConfig.link &&
!cellRightClickConfig.data &&
!cellRightClickConfig.cellFormat
) {
$$("#luckysheet-cols-rows-data .luckysheet-menuseparator").style.display = "none";
}
showrightclickmenu($("#luckysheet-rightclick-menu"), event.pageX, $(this).offset().top + 18);
Store.luckysheet_cols_menu_status = true;
//列宽默认值
let cfg = $.extend(true, {}, Store.config);
if (cfg["columnlen"] == null) {
cfg["columnlen"] = {};
}
let first_collen =
cfg["columnlen"][Store.luckysheet_select_save[0].column[0]] == null
? Store.defaultcollen
: cfg["columnlen"][Store.luckysheet_select_save[0].column[0]];
let isSame = true;
for (let i = 0; i < Store.luckysheet_select_save.length; i++) {
let s = Store.luckysheet_select_save[i];
let c1 = s.column[0],
c2 = s.column[1];
for (let c = c1; c <= c2; c++) {
let collen = cfg["columnlen"][c] == null ? Store.defaultcollen : cfg["columnlen"][c];
if (collen != first_collen) {
isSame = false;
break;
}
}
}
if (isSame) {
$("#luckysheet-cols-rows-add")
.find("input[type='number'].rcsize")
.val(first_collen);
} else {
$("#luckysheet-cols-rows-add")
.find("input[type='number'].rcsize")
.val("");
}
}
});
//表格行标题 改变行高按钮
$("#luckysheet-rows-change-size").mousedown(function(event) {
// *如果禁止前台编辑,则中止下一步操作
if (!checkIsAllowEdit()) {
return;
}
//有批注在编辑时
luckysheetPostil.removeActivePs();
//图片 active/cropping
if (
$("#luckysheet-modal-dialog-activeImage").is(":visible") ||
$("#luckysheet-modal-dialog-cropping").is(":visible")
) {
imageCtrl.cancelActiveImgItem();
}
$("#luckysheet-input-box").hide();
$("#luckysheet-rows-change-size").css({ opacity: 1 });
let mouse = mouseposition(event.pageX, event.pageY);
let y = mouse[1] + $("#luckysheet-rows-h").scrollTop();
let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
let winW = $("#luckysheet-cell-main").width();
let row_location = rowLocation(y),
row = row_location[1],
row_pre = row_location[0],
row_index = row_location[2];
Store.luckysheet_rows_change_size = true;
Store.luckysheet_scroll_status = true;
$("#luckysheet-change-size-line").css({
height: "1px",
"border-width": "0 0px 1px 0",
top: row - 3,
left: 0,
width: scrollLeft + winW,
display: "block",
cursor: "ns-resize",
});
$("#luckysheet-sheettable, #luckysheet-rows-h, #luckysheet-rows-h canvas").css("cursor", "ns-resize");
Store.luckysheet_rows_change_size_start = [row_pre, row_index];
$("#luckysheet-rightclick-menu").hide();
$("#luckysheet-rows-h-hover").hide();
$("#luckysheet-cols-menu-btn").hide();
event.stopPropagation();
});
//表格列标题 改变列宽按钮
$("#luckysheet-cols-change-size")
.mousedown(function(event) {
// *如果禁止前台编辑,则中止下一步操作
if (!checkIsAllowEdit()) {
return;
}
//有批注在编辑时
luckysheetPostil.removeActivePs();
//图片 active/cropping
if (
$("#luckysheet-modal-dialog-activeImage").is(":visible") ||
$("#luckysheet-modal-dialog-cropping").is(":visible")
) {
imageCtrl.cancelActiveImgItem();
}
$("#luckysheet-input-box").hide();
$("#luckysheet-cols-change-size").css({ opacity: 1 });
let mouse = mouseposition(event.pageX, event.pageY);
let scrollLeft = $("#luckysheet-cols-h-c").scrollLeft();
let scrollTop = $("#luckysheet-cell-main").scrollTop();
let winH = $("#luckysheet-cell-main").height();
let x = mouse[0] + scrollLeft;
let row_index = Store.visibledatarow.length - 1,
row = Store.visibledatarow[row_index],
row_pre = 0;
let col_location = colLocation(x),
col = col_location[1],
col_pre = col_location[0],
col_index = col_location[2];
Store.luckysheet_cols_change_size = true;
Store.luckysheet_scroll_status = true;
$("#luckysheet-change-size-line").css({
height: winH + scrollTop,
"border-width": "0 1px 0 0",
top: 0,
left: col - 3,
width: "1px",
display: "block",
cursor: "ew-resize",
});
$(
"#luckysheet-sheettable, #luckysheet-cols-h-c, .luckysheet-cols-h-cells, .luckysheet-cols-h-cells canvas",
).css("cursor", "ew-resize");
Store.luckysheet_cols_change_size_start = [col_pre, col_index];
$("#luckysheet-rightclick-menu").hide();
$("#luckysheet-cols-h-hover").hide();
$("#luckysheet-cols-menu-btn").hide();
Store.luckysheet_cols_dbclick_times = 0;
event.stopPropagation();
})
.dblclick(function() {
luckysheetcolsdbclick();
});
// 列标题的下拉箭头
$("#luckysheet-cols-menu-btn").click(function(event) {
// *如果禁止前台编辑,则中止下一步操作
if (!checkIsAllowEdit()) {
tooltip.info("", locale().pivotTable.errorNotAllowEdit);
return;
}
let $menu = $("#luckysheet-rightclick-menu");
let offset = $(this).offset();
$("#luckysheet-cols-rows-shift").show();
Store.luckysheetRightHeadClickIs = "column";
$("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-word").text(locale().rightclick.column);
$("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-left").text(locale().rightclick.left);
$("#luckysheet-rightclick-menu .luckysheet-cols-rows-shift-right").text(locale().rightclick.right);
$("#luckysheet-cols-rows-add").show();
$("#luckysheet-cols-rows-data").hide();
$("#luckysheet-cols-rows-shift").show();
$("#luckysheet-cols-rows-handleincell").hide();
$$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "block";
$$("#luckysheet-cols-rows-shift .luckysheet-menuseparator").style.display = "block";
// 自定义右键菜单:向左向右增加列,删除列,隐藏显示列,设置列宽
const cellRightClickConfig = luckysheetConfigsetting.cellRightClickConfig;
// 如果全部按钮都隐藏,则整个菜单容器也要隐藏
if (
!cellRightClickConfig.copy &&
!cellRightClickConfig.copyAs &&
!cellRightClickConfig.paste &&
!cellRightClickConfig.insertColumn &&
!cellRightClickConfig.deleteColumn &&
!cellRightClickConfig.hideColumn &&
!cellRightClickConfig.columnWidth &&
!cellRightClickConfig.sort
) {
return;
}
$$("#luckysheet-top-left-add-selected").style.display = cellRightClickConfig.insertColumn ? "block" : "none";
$$("#luckysheet-bottom-right-add-selected").style.display = cellRightClickConfig.insertColumn
? "block"
: "none";
$$("#luckysheet-del-selected").style.display = cellRightClickConfig.deleteColumn ? "block" : "none";
$$("#luckysheet-hide-selected").style.display = cellRightClickConfig.hideColumn ? "block" : "none";
$$("#luckysheet-show-selected").style.display = cellRightClickConfig.hideColumn ? "block" : "none";
$$("#luckysheet-column-row-width-selected").style.display = cellRightClickConfig.columnWidth ? "block" : "none";
// 1. 当一个功能菜单块上方的功能块按钮都隐藏的时候,下方的功能块的顶部分割线也需要隐藏
if (!cellRightClickConfig.copy && !cellRightClickConfig.copyAs && !cellRightClickConfig.paste) {
$$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "none";
if (
!cellRightClickConfig.insertColumn &&
!cellRightClickConfig.deleteColumn &&
!cellRightClickConfig.hideColumn &&
!cellRightClickConfig.columnWidth
) {
$$("#luckysheet-cols-rows-shift .luckysheet-menuseparator").style.display = "none";
}
}
// 2. 当一个功能菜单块内所有的按钮都隐藏的时候,它顶部的分割线也需要隐藏掉
if (
!cellRightClickConfig.insertColumn &&
!cellRightClickConfig.deleteColumn &&
!cellRightClickConfig.hideColumn &&
!cellRightClickConfig.columnWidth
) {
$$("#luckysheet-cols-rows-add .luckysheet-menuseparator").style.display = "none";
}
if (!cellRightClickConfig.sort) {
$$("#luckysheet-cols-rows-shift .luckysheet-menuseparator").style.display = "none";
}
showrightclickmenu($menu, offset.left, offset.top + 18);
Store.luckysheet_cols_menu_status = true;
});
//向左增加列,向上增加行
// $("#luckysheet-add-lefttop, #luckysheet-add-lefttop_t").click(function (event) {
$("#luckysheet-top-left-add-selected").click(function(event) {
// Click input element, don't comfirm
if (event.target.nodeName === "INPUT") {
return;
}
$("#luckysheet-rightclick-menu").hide();
luckysheetContainerFocus();
const _locale = locale();
const locale_drag = _locale.drag;
const locale_info = _locale.info;
if (Store.luckysheet_select_save.length > 1) {
if (isEditMode()) {
alert(locale_drag.noMulti);
} else {
tooltip.info(locale_drag.noMulti, "");
}
return;
}
let $t = $(this),
value = $t.find("input").val();
if (!isRealNum(value)) {
if (isEditMode()) {
alert(locale_info.tipInputNumber);
} else {
tooltip.info(locale_info.tipInputNumber, "");
}
return;
}
value = parseInt(value);
if (value < 1 || value > 100) {
if (isEditMode()) {
alert(locale_info.tipInputNumberLimit);
} else {
tooltip.info(locale_info.tipInputNumberLimit, "");
}
return;
}
let st_index = Store.luckysheet_select_save[0][Store.luckysheetRightHeadClickIs][0];
if(!method.createHookFunction("rowInsertBefore", st_index, value, "lefttop", Store.luckysheetRightHeadClickIs)){
return;
}
luckysheetextendtable(Store.luckysheetRightHeadClickIs, st_index, value, "lefttop");
});
// When you right-click a cell, a row is inserted before the row by default
$("#luckysheetColsRowsHandleAdd_row").click(function(event) {
$("#luckysheet-rightclick-menu").hide();
luckysheetContainerFocus();
if (Store.allowEdit === false) {
return;
}
let st_index = Store.luckysheet_select_save[0].row[0];
if(!method.createHookFunction("rowInsertBefore", st_index, 1, "lefttop", Store.luckysheetRightHeadClickIs)){
return;
}
luckysheetextendtable('row', st_index, 1, "lefttop");
})
$("#luckysheetColsRowsHandleAdd_column").click(function (event) {
$("#luckysheet-rightclick-menu").hide();
luckysheetContainerFocus();
if (Store.allowEdit === false) {
return;
}
let st_index = Store.luckysheet_select_save[0].column[0];
luckysheetextendtable("column", st_index, 1, "lefttop");
});
// custom right-click a cell buttton click
$(".luckysheetColsRowsHandleAdd_custom").click(function(clickEvent) {
$("#luckysheet-rightclick-menu").hide();
const cellRightClickConfig = luckysheetConfigsetting.cellRightClickConfig;
const rowIndex = Store.luckysheet_select_save[0].row[0];
const columnIndex = Store.luckysheet_select_save[0].column[0];
if (cellRightClickConfig.customs[Number(clickEvent.currentTarget.dataset.index)]) {
try {
cellRightClickConfig.customs[Number(clickEvent.currentTarget.dataset.index)].onClick(
clickEvent,
event,
{ rowIndex, columnIndex },
);
} catch (e) {
console.error("custom click error", e);
}
}
});
// Add the row up, and click the text area to trigger the confirmation instead of clicking the confirmation button to enhance the experience
// $("#luckysheet-addTopRows").click(function (event) {
// $("#luckysheetColsRowsHandleAdd_sub .luckysheet-cols-menuitem:first-child").click(function (event) {
// // Click input element, don't comfirm
// if(event.target.nodeName === 'INPUT'){
// return;
// }
// $("#luckysheet-rightclick-menu").hide();
// luckysheetContainerFocus();
// const _locale = locale();
// const locale_drag = _locale.drag;
// const locale_info = _locale.info;
// if(Store.luckysheet_select_save.length > 1){
// if(isEditMode()){
// alert(locale_drag.noMulti);
// }
// else{
// tooltip.info(locale_drag.noMulti, "");
// }
// return;
// }
// let $t = $(this), value = $t.find("input").val();
// if (!isRealNum(value)) {
// if(isEditMode()){
// alert(locale_info.tipInputNumber);
// }
// else{
// tooltip.info(locale_info.tipInputNumber, "");
// }
// return;
// }
// value = parseInt(value);
// if (value < 1 || value > 100) {
// if(isEditMode()){
// alert(locale_info.tipInputNumberLimit);
// }
// else{
// tooltip.info(locale_info.tipInputNumberLimit, "");
// }
// return;
// }
// let st_index = Store.luckysheet_select_save[0].row[0];
// luckysheetextendtable('row', st_index, value, "lefttop");
// $("#luckysheetColsRowsHandleAdd_sub").hide();
// })
// // input输入时阻止冒泡,禁止父级元素的确认事件触发
// $("input.luckysheet-mousedown-cancel").click(function(event) {
// event.stopPropagation;
// })
// $("#luckysheet-addLeftCols").click(function (event) {
// $("#luckysheetColsRowsHandleAdd_sub .luckysheet-cols-menuitem:nth-child(3)").click(function (event) {
// // Click input element, don't comfirm
// if(event.target.nodeName === 'INPUT'){
// return;
// }
// $("#luckysheet-rightclick-menu").hide();
// luckysheetContainerFocus();
// const _locale = locale();
// const locale_drag = _locale.drag;
// const locale_info = _locale.info;
// if(Store.luckysheet_select_save.length > 1){
// if(isEditMode()){
// alert(locale_drag.noMulti);
// }
// else{
// tooltip.info(locale_drag.noMulti, "");
// }
// return;
// }
// let $t = $(this), value = $t.find("input").val();
// if (!isRealNum(value)) {
// if(isEditMode()){
// alert(locale_info.tipInputNumber);
// }
// else{
// tooltip.info(locale_info.tipInputNumber, "");
// }
// return;
// }
// value = parseInt(value);
// if (value < 1 || value > 100) {
// if(isEditMode()){
// alert(locale_info.tipInputNumberLimit);
// }
// else{
// tooltip.info(locale_info.tipInputNumberLimit, "");
// }
// return;
// }
// let st_index = Store.luckysheet_select_save[0].column[0];
// luckysheetextendtable('column', st_index, value, "lefttop");
// $("#luckysheetColsRowsHandleAdd_sub").hide();
// })
//向右增加列,向下增加行
// $("#luckysheet-add-rightbottom, #luckysheet-add-rightbottom_t").click(function (event) {
$("#luckysheet-bottom-right-add-selected").click(function(event) {
// Click input element, don't comfirm
if (event.target.nodeName === "INPUT") {
return;
}
$("#luckysheet-rightclick-menu").hide();
luckysheetContainerFocus();
const _locale = locale();
const locale_drag = _locale.drag;
const locale_info = _locale.info;
if (Store.luckysheet_select_save.length > 1) {
if (isEditMode()) {
alert(locale_drag.noMulti);
} else {
tooltip.info(locale_drag.noMulti, "");
}
return;
}
let $t = $(this),
value = $t.find("input").val();
if (!isRealNum(value)) {
if (isEditMode()) {
alert(locale_info.tipInputNumber);
} else {
tooltip.info(locale_info.tipInputNumber, "");
}
return;
}
value = parseInt(value);
if (value < 1 || value > 100) {
if (isEditMode()) {
alert(locale_info.tipInputNumberLimit);
} else {
tooltip.info(locale_info.tipInputNumberLimit, "");
}
return;
}
let st_index = Store.luckysheet_select_save[0][Store.luckysheetRightHeadClickIs][1];
if(!method.createHookFunction("rowInsertBefore", st_index, value, "rightbottom", Store.luckysheetRightHeadClickIs)){
return;
}
luckysheetextendtable(Store.luckysheetRightHeadClickIs, st_index, value, "rightbottom");
});
// $("#luckysheet-addBottomRows").click(function (event) {
// $("#luckysheetColsRowsHandleAdd_sub .luckysheet-cols-menuitem:nth-child(2)").click(function (event) {
// // Click input element, don't comfirm
// if(event.target.nodeName === 'INPUT'){
// return;
// }
// $("#luckysheet-rightclick-menu").hide();
// luckysheetContainerFocus();
// const _locale = locale();
// const locale_drag = _locale.drag;
// const locale_info = _locale.info;
// if(Store.luckysheet_select_save.length > 1){
// if(isEditMode()){
// alert(locale_drag.noMulti);
// }
// else{
// tooltip.info(locale_drag.noMulti, "");
// }
// return;
// }
// let $t = $(this), value = $t.find("input").val();
// if (!isRealNum(value)) {
// if(isEditMode()){
// alert(locale_info.tipInputNumber);
// }
// else{
// tooltip.info(locale_info.tipInputNumber, "");
// }
// return;
// }
// value = parseInt(value);
// if (value < 1 || value > 100) {
// if(isEditMode()){
// alert(locale_info.tipInputNumberLimit);
// }
// else{
// tooltip.info(locale_info.tipInputNumberLimit, "");
// }
// return;
// }
// let st_index = Store.luckysheet_select_save[0].row[1];
// luckysheetextendtable('row', st_index, value, "rightbottom");
// $("#luckysheetColsRowsHandleAdd_sub").hide();
// });
// $("#luckysheet-addRightCols").click(function (event) {
// $("#luckysheetColsRowsHandleAdd_sub .luckysheet-cols-menuitem:nth-child(4)").click(function (event) {
// // Click input element, don't comfirm
// if(event.target.nodeName === 'INPUT'){
// return;
// }
// $("#luckysheet-rightclick-menu").hide();
// luckysheetContainerFocus();
// const _locale = locale();
// const locale_drag = _locale.drag;
// const locale_info = _locale.info;
// if(Store.luckysheet_select_save.length > 1){
// if(isEditMode()){
// alert(locale_drag.noMulti);
// }
// else{
// tooltip.info(locale_drag.noMulti, "");
// }
// return;
// }
// let $t = $(this), value = $t.find("input").val();
// if (!isRealNum(value)) {
// if(isEditMode()){
// alert(locale_info.tipInputNumber);
// }
// else{
// tooltip.info(locale_info.tipInputNumber, "");
// }
// return;
// }
// value = parseInt(value);
// if (value < 1 || value > 100) {
// if(isEditMode()){
// alert(locale_info.tipInputNumberLimit);
// }
// else{
// tooltip.info(locale_info.tipInputNumberLimit, "");
// }
// return;
// }
// let st_index = Store.luckysheet_select_save[0].column[1];
// luckysheetextendtable('column', st_index, value, "rightbottom");
// $("#luckysheetColsRowsHandleAdd_sub").hide();
// });
//删除选中行列
$("#luckysheet-del-selected, #luckysheet-del-selected_t").click(function(event) {
$("#luckysheet-rightclick-menu").hide();
luckysheetContainerFocus();
const locale_drag = locale().drag;
if (Store.luckysheet_select_save.length > 1) {
if (Store.luckysheetRightHeadClickIs == "row") {
if (isEditMode()) {
alert(locale_drag.noMulti);
} else {
tooltip.info(locale_drag.noMulti, "");
}
} else if (Store.luckysheetRightHeadClickIs == "column") {
if (isEditMode()) {
alert(locale_drag.noMulti);
} else {
tooltip.info(locale_drag.noMulti, "");
}
}
return;
}
let st_index = Store.luckysheet_select_save[0][Store.luckysheetRightHeadClickIs][0],
ed_index = Store.luckysheet_select_save[0][Store.luckysheetRightHeadClickIs][1];
if(!method.createHookFunction("rowDeleteBefore", st_index, ed_index, Store.luckysheetRightHeadClickIs)){
return;
}
luckysheetdeletetable(Store.luckysheetRightHeadClickIs, st_index, ed_index);
});
$("#luckysheet-delRows").click(function(event) {
$("#luckysheet-rightclick-menu").hide();
luckysheetContainerFocus();
const locale_drag = locale().drag;
if (Store.luckysheet_select_save.length > 1) {
if (Store.luckysheetRightHeadClickIs == "row") {
if (isEditMode()) {
alert(locale_drag.noMulti);
} else {
tooltip.info(locale_drag.noMulti, "");
}
} else if (Store.luckysheetRightHeadClickIs == "column") {
if (isEditMode()) {
alert(locale_drag.noMulti);
} else {
tooltip.info(locale_drag.noMulti, "");
}
}
return;
}
let st_index = Store.luckysheet_select_save[0].row[0],
ed_index = Store.luckysheet_select_save[0].row[1];
if(!method.createHookFunction("rowDeleteBefore", st_index, ed_index, 'row')){
return;
}
luckysheetdeletetable('row', st_index, ed_index);
})
$("#luckysheet-delCols").click(function (event) {
$("#luckysheet-rightclick-menu").hide();
luckysheetContainerFocus();
const locale_drag = locale().drag;
if (Store.luckysheet_select_save.length > 1) {
if (Store.luckysheetRightHeadClickIs == "row") {
if (isEditMode()) {
alert(locale_drag.noMulti);
} else {
tooltip.info(locale_drag.noMulti, "");
}
} else if (Store.luckysheetRightHeadClickIs == "column") {
if (isEditMode()) {
alert(locale_drag.noMulti);
} else {
tooltip.info(locale_drag.noMulti, "");
}
}
return;
}
let st_index = Store.luckysheet_select_save[0].column[0],
ed_index = Store.luckysheet_select_save[0].column[1];
luckysheetdeletetable("column", st_index, ed_index);
});
//隐藏选中行列
$("#luckysheet-hide-selected").click(function(event) {
$("#luckysheet-rightclick-menu").hide();
luckysheetContainerFocus();
const locale_drag = locale().drag;
if (Store.luckysheet_select_save.length > 1) {
if (Store.luckysheetRightHeadClickIs == "row") {
if (isEditMode()) {
alert(locale_drag.noMulti);
} else {
tooltip.info(locale_drag.noMulti, "");
}
} else if (Store.luckysheetRightHeadClickIs == "column") {
if (isEditMode()) {
alert(locale_drag.noMulti);
} else {
tooltip.info(locale_drag.noMulti, "");
}
}
return;
}
// 隐藏行
if (Store.luckysheetRightHeadClickIs == "row") {
if (!checkProtectionAuthorityNormal(Store.currentSheetIndex, "formatRows")) {
return;
}
let cfg = $.extend(true, {}, Store.config);
if (cfg["rowhidden"] == null) {
cfg["rowhidden"] = {};
}
for (let s = 0; s < Store.luckysheet_select_save.length; s++) {
let r1 = Store.luckysheet_select_save[s].row[0],
r2 = Store.luckysheet_select_save[s].row[1];
for (let r = r1; r <= r2; r++) {
cfg["rowhidden"][r] = 0;
}
}
//保存撤销
if (Store.clearjfundo) {
let redo = {};
redo["type"] = "showHidRows";
redo["sheetIndex"] = Store.currentSheetIndex;
redo["config"] = $.extend(true, {}, Store.config);
redo["curconfig"] = cfg;
Store.jfundo.length = 0;
Store.jfredo.push(redo);
}
//config
Store.config = cfg;
Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)].config = Store.config;
server.saveParam("cg", Store.currentSheetIndex, cfg["rowhidden"], { k: "rowhidden" });
//行高、列宽 刷新
jfrefreshgrid_rhcw(Store.flowdata.length, Store.flowdata[0].length);
}
// 隐藏列
else if (Store.luckysheetRightHeadClickIs == "column") {
if (!checkProtectionAuthorityNormal(Store.currentSheetIndex, "formatColumns")) {
return;
}
let cfg = $.extend(true, {}, Store.config);
if (cfg["colhidden"] == null) {
cfg["colhidden"] = {};
}
for (let s = 0; s < Store.luckysheet_select_save.length; s++) {
let c1 = Store.luckysheet_select_save[s].column[0],
c2 = Store.luckysheet_select_save[s].column[1];
for (let c = c1; c <= c2; c++) {
cfg["colhidden"][c] = 0;
}
}
//保存撤销
if (Store.clearjfundo) {
let redo = {};
redo["type"] = "showHidCols";
redo["sheetIndex"] = Store.currentSheetIndex;
redo["config"] = $.extend(true, {}, Store.config);
redo["curconfig"] = cfg;
Store.jfundo.length = 0;
Store.jfredo.push(redo);
}
//config
Store.config = cfg;
Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)].config = Store.config;
server.saveParam("cg", Store.currentSheetIndex, cfg["colhidden"], { k: "colhidden" });
//行高、列宽 刷新
jfrefreshgrid_rhcw(Store.flowdata.length, Store.flowdata[0].length);
}
});
//取消隐藏选中行列
$("#luckysheet-show-selected").click(function(event) {
$("#luckysheet-rightclick-menu").hide();
luckysheetContainerFocus();
const locale_drag = locale().drag;
if (Store.luckysheet_select_save.length > 1) {
if (Store.luckysheetRightHeadClickIs == "row") {
if (isEditMode()) {
alert(locale_drag.noMulti);
} else {
tooltip.info(locale_drag.noMulti, "");
}
} else if (Store.luckysheetRightHeadClickIs == "column") {
if (isEditMode()) {
alert(locale_drag.noMulti);
} else {
tooltip.info(locale_drag.noMulti, "");
}
}
return;
}
// 取消隐藏行
if (Store.luckysheetRightHeadClickIs == "row") {
if (!checkProtectionAuthorityNormal(Store.currentSheetIndex, "formatRows")) {
return;
}
let cfg = $.extend(true, {}, Store.config);
if (cfg["rowhidden"] == null) {
return;
}
for (let s = 0; s < Store.luckysheet_select_save.length; s++) {
let r1 = Store.luckysheet_select_save[s].row[0],
r2 = Store.luckysheet_select_save[s].row[1];
for (let r = r1; r <= r2; r++) {
delete cfg["rowhidden"][r];
}
}
//保存撤销
if (Store.clearjfundo) {
let redo = {};
redo["type"] = "showHidRows";
redo["sheetIndex"] = Store.currentSheetIndex;
redo["config"] = $.extend(true, {}, Store.config);
redo["curconfig"] = cfg;
Store.jfundo.length = 0;
Store.jfredo.push(redo);
}
//config
Store.config = cfg;
Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)].config = Store.config;
server.saveParam("cg", Store.currentSheetIndex, cfg["rowhidden"], { k: "rowhidden" });
//行高、列宽 刷新
jfrefreshgrid_rhcw(Store.flowdata.length, Store.flowdata[0].length);
} else if (Store.luckysheetRightHeadClickIs == "column") {
if (!checkProtectionAuthorityNormal(Store.currentSheetIndex, "formatColumns")) {
return;
}
let cfg = $.extend(true, {}, Store.config);
if (cfg["colhidden"] == null) {
return;
}
for (let s = 0; s < Store.luckysheet_select_save.length; s++) {
let c1 = Store.luckysheet_select_save[s].column[0],
c2 = Store.luckysheet_select_save[s].column[1];
for (let c = c1; c <= c2; c++) {
delete cfg["colhidden"][c];
}
}
//保存撤销
if (Store.clearjfundo) {
let redo = {};
redo["type"] = "showHidCols";
redo["sheetIndex"] = Store.currentSheetIndex;
redo["config"] = $.extend(true, {}, Store.config);
redo["curconfig"] = cfg;
Store.jfundo.length = 0;
Store.jfredo.push(redo);
}
//config
Store.config = cfg;
Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)].config = Store.config;
server.saveParam("cg", Store.currentSheetIndex, cfg["colhidden"], { k: "colhidden" });
//行高、列宽 刷新
jfrefreshgrid_rhcw(Store.flowdata.length, Store.flowdata[0].length);
}
});
//隐藏、显示行
// $("#luckysheet-hidRows").click(function (event) {
// if(!checkProtectionAuthorityNormal(Store.currentSheetIndex, "formatRows")){
// return;
// }
// $("#luckysheet-rightclick-menu").hide();
// luckysheetContainerFocus();
// let cfg = $.extend(true, {}, Store.config);
// if(cfg["rowhidden"] == null){
// cfg["rowhidden"] = {};
// }
// for(let s = 0; s < Store.luckysheet_select_save.length; s++){
// let r1 = Store.luckysheet_select_save[s].row[0],
// r2 = Store.luckysheet_select_save[s].row[1];
// for(let r = r1; r <= r2; r++){
// cfg["rowhidden"][r] = 0;
// }
// }
// //保存撤销
// if(Store.clearjfundo){
// let redo = {};
// redo["type"] = "showHidRows";
// redo["sheetIndex"] = Store.currentSheetIndex;
// redo["config"] = $.extend(true, {}, Store.config);
// redo["curconfig"] = cfg;
// Store.jfundo.length = 0;
// Store.jfredo.push(redo);
// }
// //config
// Store.config = cfg;
// Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)].config = Store.config;
// server.saveParam("cg", Store.currentSheetIndex, cfg["rowhidden"], { "k": "rowhidden" });
// //行高、列宽 刷新
// jfrefreshgrid_rhcw(Store.flowdata.length, Store.flowdata[0].length);
// })
// $("#luckysheet-showHidRows").click(function (event) {
// if(!checkProtectionAuthorityNormal(Store.currentSheetIndex, "formatRows")){
// return;
// }
// $("#luckysheet-rightclick-menu").hide();
// luckysheetContainerFocus();
// let cfg = $.extend(true, {}, Store.config);
// if(cfg["rowhidden"] == null){
// return;
// }
// for(let s = 0; s < Store.luckysheet_select_save.length; s++){
// let r1 = Store.luckysheet_select_save[s].row[0],
// r2 = Store.luckysheet_select_save[s].row[1];
// for(let r = r1; r <= r2; r++){
// delete cfg["rowhidden"][r];
// }
// }
// //保存撤销
// if(Store.clearjfundo){
// let redo = {};
// redo["type"] = "showHidRows";
// redo["sheetIndex"] = Store.currentSheetIndex;
// redo["config"] = $.extend(true, {}, Store.config);
// redo["curconfig"] = cfg;
// Store.jfundo.length = 0;
// Store.jfredo.push(redo);
// }
// //config
// Store.config = cfg;
// Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)].config = Store.config;
// server.saveParam("cg", Store.currentSheetIndex, cfg["rowhidden"], { "k": "rowhidden" });
// //行高、列宽 刷新
// jfrefreshgrid_rhcw(Store.flowdata.length, Store.flowdata[0].length);
// })
//隐藏、显示列
// $("#luckysheet-hidCols").click(function (event) {
// if(!checkProtectionAuthorityNormal(Store.currentSheetIndex, "formatColumns")){
// return;
// }
// $("#luckysheet-rightclick-menu").hide();
// luckysheetContainerFocus();
// let cfg = $.extend(true, {}, Store.config);
// if(cfg["colhidden"] == null){
// cfg["colhidden"] = {};
// }
// for(let s = 0; s < Store.luckysheet_select_save.length; s++){
// let c1 = Store.luckysheet_select_save[s].column[0],
// c2 = Store.luckysheet_select_save[s].column[1];
// for(let c = c1; c <= c2; c++){
// cfg["colhidden"][c] = 0;
// }
// }
// //保存撤销
// if(Store.clearjfundo){
// let redo = {};
// redo["type"] = "showHidCols";
// redo["sheetIndex"] = Store.currentSheetIndex;
// redo["config"] = $.extend(true, {}, Store.config);
// redo["curconfig"] = cfg;
// Store.jfundo.length = 0;
// Store.jfredo.push(redo);
// }
// //config
// Store.config = cfg;
// Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)].config = Store.config;
// server.saveParam("cg", Store.currentSheetIndex, cfg["colhidden"], { "k": "colhidden" });
// //行高、列宽 刷新
// jfrefreshgrid_rhcw(Store.flowdata.length, Store.flowdata[0].length);
// })
// $("#luckysheet-showHidCols").click(function (event) {
// if(!checkProtectionAuthorityNormal(Store.currentSheetIndex, "formatColumns")){
// return;
// }
// $("#luckysheet-rightclick-menu").hide();
// luckysheetContainerFocus();
// let cfg = $.extend(true, {}, Store.config);
// if(cfg["colhidden"] == null){
// return;
// }
// for(let s = 0; s < Store.luckysheet_select_save.length; s++){
// let c1 = Store.luckysheet_select_save[s].column[0],
// c2 = Store.luckysheet_select_save[s].column[1];
// for(let c = c1; c <= c2; c++){
// delete cfg["colhidden"][c];
// }
// }
// //保存撤销
// if(Store.clearjfundo){
// let redo = {};
// redo["type"] = "showHidCols";
// redo["sheetIndex"] = Store.currentSheetIndex;
// redo["config"] = $.extend(true, {}, Store.config);
// redo["curconfig"] = cfg;
// Store.jfundo.length = 0;
// Store.jfredo.push(redo);
// }
// //config
// Store.config = cfg;
// Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)].config = Store.config;
// server.saveParam("cg", Store.currentSheetIndex, cfg["colhidden"], { "k": "colhidden" });
// //行高、列宽 刷新
// jfrefreshgrid_rhcw(Store.flowdata.length, Store.flowdata[0].length);
// })
//删除单元格(左移、上移)
$("#luckysheet-delCellsMoveLeft").click(function(event) {
$("body .luckysheet-cols-menu").hide();
luckysheetContainerFocus();
const locale_drag = locale().drag;
if (Store.luckysheet_select_save.length > 1) {
if (isEditMode()) {
alert(locale_drag.noMulti);
} else {
tooltip.info(locale_drag.noMulti, "");
}
return;
}
let str = Store.luckysheet_select_save[0].row[0],
edr = Store.luckysheet_select_save[0].row[1],
stc = Store.luckysheet_select_save[0].column[0],
edc = Store.luckysheet_select_save[0].column[1];
luckysheetDeleteCell("moveLeft", str, edr, stc, edc);
});
$("#luckysheet-delCellsMoveUp").click(function(event) {
$("body .luckysheet-cols-menu").hide();
luckysheetContainerFocus();
const locale_drag = locale().drag;
if (Store.luckysheet_select_save.length > 1) {
if (isEditMode()) {
alert(locale_drag.noMulti);
} else {
tooltip.info(locale_drag.noMulti, "");
}
return;
}
let str = Store.luckysheet_select_save[0].row[0],
edr = Store.luckysheet_select_save[0].row[1],
stc = Store.luckysheet_select_save[0].column[0],
edc = Store.luckysheet_select_save[0].column[1];
luckysheetDeleteCell("moveUp", str, edr, stc, edc);
});
//清除单元格内容
$("#luckysheet-delete-text").click(function() {
if (!checkProtectionLockedRangeList(Store.luckysheet_select_save, Store.currentSheetIndex)) {
return;
}
$("#luckysheet-rightclick-menu").hide();
luckysheetContainerFocus();
if (Store.allowEdit === false) {
return;
}
if (Store.luckysheet_select_save.length > 0) {
let d = editor.deepCopyFlowData(Store.flowdata);
let has_PartMC = false;
for (let s = 0; s < Store.luckysheet_select_save.length; s++) {
let r1 = Store.luckysheet_select_save[s].row[0],
r2 = Store.luckysheet_select_save[s].row[1];
let c1 = Store.luckysheet_select_save[s].column[0],
c2 = Store.luckysheet_select_save[s].column[1];
if (hasPartMC(Store.config, r1, r2, c1, c2)) {
has_PartMC = true;
break;
}
}
if (has_PartMC) {
const locale_drag = locale().drag;
if (isEditMode()) {
alert(locale_drag.noPartMerge);
} else {
tooltip.info(locale_drag.noPartMerge, "");
}
return;
}
const file = Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)];
const hyperlink = file.hyperlink && $.extend(true, {}, file.hyperlink);
let hyperlinkUpdated;
for (let s = 0; s < Store.luckysheet_select_save.length; s++) {
let r1 = Store.luckysheet_select_save[s].row[0],
r2 = Store.luckysheet_select_save[s].row[1];
let c1 = Store.luckysheet_select_save[s].column[0],
c2 = Store.luckysheet_select_save[s].column[1];
for (let r = r1; r <= r2; r++) {
for (let c = c1; c <= c2; c++) {
if (pivotTable.isPivotRange(r, c)) {
continue;
}
if (getObjType(d[r][c]) == "object") {
delete d[r][c]["m"];
delete d[r][c]["v"];
if (d[r][c]["f"] != null) {
delete d[r][c]["f"];
formula.delFunctionGroup(r, c, Store.currentSheetIndex);
delete d[r][c]["spl"];
}
if (d[r][c]["ct"] != null && d[r][c]["ct"].t == "inlineStr") {
delete d[r][c]["ct"];
}
} else {
d[r][c] = null;
}
// 同步清除 hyperlink
if (hyperlink?.[`${r}_${c}`]) {
delete hyperlink[`${r}_${c}`];
hyperlinkUpdated = true;
}
}
}
}
jfrefreshgrid(d, Store.luckysheet_select_save, hyperlinkUpdated && { hyperlink });
// 清空编辑框的内容
// 备注:在functionInputHanddler方法中会把该标签的内容拷贝到 #luckysheet-functionbox-cell
$("#luckysheet-rich-text-editor").html("");
}
});
//行高列宽设置
// $("#luckysheet-rows-cols-changesize").click(function(){
$("#luckysheet-column-row-width-selected").click(function(event) {
// Click input element, don't comfirm
if (event.target.nodeName === "INPUT") {
return;
}
$("#luckysheet-rightclick-menu").hide();
luckysheetContainerFocus();
// let size = parseInt($(this).siblings("input[type='number']").val().trim());
let size = parseInt(
$(this)
.closest(".luckysheet-cols-menuitem")
.find("input[type='number']")
.val()
.trim(),
);
const locale_info = locale().info;
/* 对异常情况进行判断:NaN */
if (isNaN(size)) {
tooltip.info(locale_info.tipInputNumber, "");
return;
}
let cfg = $.extend(true, {}, Store.config);
let type;
let images = null;
if (Store.luckysheetRightHeadClickIs == "row") {
if (!checkProtectionAuthorityNormal(Store.currentSheetIndex, "formatRows")) {
return;
}
if (size < 0 || size > 545) {
if (isEditMode()) {
alert(locale_info.tipRowHeightLimit);
} else {
tooltip.info(locale_info.tipRowHeightLimit, "");
}
return;
}
type = "resizeR";
if (cfg["rowlen"] == null) {
cfg["rowlen"] = {};
}
for (let s = 0; s < Store.luckysheet_select_save.length; s++) {
let r1 = Store.luckysheet_select_save[s].row[0];
let r2 = Store.luckysheet_select_save[s].row[1];
for (let r = r1; r <= r2; r++) {
cfg["rowlen"][r] = size;
images = imageCtrl.moveChangeSize("row", r, size);
}
}
} else if (Store.luckysheetRightHeadClickIs == "column") {
if (!checkProtectionAuthorityNormal(Store.currentSheetIndex, "formatColumns")) {
return;
}
if (size < 0 || size > 2038) {
if (isEditMode()) {
alert(locale_info.tipColumnWidthLimit);
} else {
tooltip.info(locale_info.tipColumnWidthLimit, "");
}
return;
}
type = "resizeC";
if (cfg["columnlen"] == null) {
cfg["columnlen"] = {};
}
for (let s = 0; s < Store.luckysheet_select_save.length; s++) {
let c1 = Store.luckysheet_select_save[s].column[0];
let c2 = Store.luckysheet_select_save[s].column[1];
for (let c = c1; c <= c2; c++) {
cfg["columnlen"][c] = size;
images = imageCtrl.moveChangeSize("column", c, size);
}
}
}
if (Store.clearjfundo) {
Store.jfundo.length = 0;
Store.jfredo.push({
type: "resize",
ctrlType: type,
sheetIndex: Store.currentSheetIndex,
config: $.extend(true, {}, Store.config),
curconfig: $.extend(true, {}, cfg),
images: $.extend(true, {}, imageCtrl.images),
curImages: $.extend(true, {}, images),
});
}
//config
Store.config = cfg;
Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)].config = Store.config;
//images
Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)].images = images;
server.saveParam("all", Store.currentSheetIndex, images, { k: "images" });
imageCtrl.images = images;
imageCtrl.allImagesShow();
if (Store.luckysheetRightHeadClickIs == "row") {
server.saveParam("cg", Store.currentSheetIndex, cfg["rowlen"], { k: "rowlen" });
jfrefreshgrid_rhcw(Store.flowdata.length, null);
} else if (Store.luckysheetRightHeadClickIs == "column") {
server.saveParam("cg", Store.currentSheetIndex, cfg["columnlen"], { k: "columnlen" });
jfrefreshgrid_rhcw(null, Store.flowdata[0].length);
}
});
}
function luckysheetcolsdbclick() {
Store.luckysheet_cols_change_size = false;
$("#luckysheet-change-size-line").hide();
$("#luckysheet-cols-change-size").css("opacity", 0);
$("#luckysheet-sheettable, #luckysheet-cols-h-c, .luckysheet-cols-h-cells, .luckysheet-cols-h-cells canvas").css(
"cursor",
"default",
);
let mouse = mouseposition(event.pageX, event.pageY);
let scrollLeft = $("#luckysheet-cols-h-c").scrollLeft();
let x = mouse[0] + scrollLeft;
let colIndex = colLocation(x)[2];
let d = editor.deepCopyFlowData(Store.flowdata);
let canvas = $("#luckysheetTableContent")
.get(0)
.getContext("2d");
let cfg = $.extend(true, {}, Store.config);
if (cfg["columnlen"] == null) {
cfg["columnlen"] = {};
}
let matchColumn = {};
let scrollTop = $("#luckysheet-cell-main").scrollTop(),
drawHeight = Store.luckysheetTableContentHW[1];
let dataset_row_st = luckysheet_searcharray(Store.visibledatarow, scrollTop);
let dataset_row_ed = luckysheet_searcharray(Store.visibledatarow, scrollTop + drawHeight);
dataset_row_ed += dataset_row_ed - dataset_row_st;
if (dataset_row_ed >= d.length) {
dataset_row_ed = d.length - 1;
}
for (let s = 0; s < Store.luckysheet_select_save.length; s++) {
let c1 = Store.luckysheet_select_save[s].column[0],
c2 = Store.luckysheet_select_save[s].column[1];
if (colIndex < c1 || colIndex > c2) {
if (colIndex in matchColumn) {
//此列已计算过
continue;
}
let currentColLen = Store.defaultcollen;
for (let r = dataset_row_st; r <= dataset_row_ed; r++) {
let cell = d[r][colIndex];
if (cell == null || (isRealNull(cell.v) && !isInlineStringCell(cell))) {
continue;
}
// let fontset = luckysheetfontformat(cell);
// canvas.font = fontset;
// let value = getcellvalue(r, colIndex, d, "m").toString(); //单元格文本
// let textMetrics = getMeasureText(value, canvas).width; //文本宽度
let cellWidth = colLocationByIndex(colIndex)[1] - colLocationByIndex(colIndex)[0] - 2;
let textInfo = getCellTextInfo(cell, canvas, {
r: r,
c: colIndex,
cellWidth: cellWidth,
});
let computeRowlen = 0;
// console.log("rowlen", textInfo);
if (textInfo != null) {
computeRowlen = textInfo.textWidthAll;
}
if (computeRowlen + 6 > currentColLen) {
currentColLen = computeRowlen + 6;
}
}
if (currentColLen != Store.defaultcollen) {
cfg["columnlen"][colIndex] = currentColLen;
if (cfg["customWidth"]) {
delete cfg["customWidth"][colIndex];
}
}
matchColumn[colIndex] = 1;
} else {
for (let c = c1; c <= c2; c++) {
if (c in matchColumn) {
//此列已计算过
continue;
}
let currentColLen = Store.defaultcollen;
for (let r = dataset_row_st; r <= dataset_row_ed; r++) {
let cell = d[r][c];
if (cell == null || (isRealNull(cell.v) && !isInlineStringCell(cell))) {
continue;
}
// let fontset = luckysheetfontformat(cell);
// canvas.font = fontset;
// let value = getcellvalue(r, c, d, "m").toString(); //单元格文本
// let textMetrics = getMeasureText(value, canvas).width; //文本宽度
// if(textMetrics + 6 > currentColLen){
// currentColLen = textMetrics + 6;
// }
let cellWidth = colLocationByIndex(c)[1] - colLocationByIndex(c)[0] - 2;
let textInfo = getCellTextInfo(cell, canvas, {
r: r,
c: c,
cellWidth: cellWidth,
});
let computeRowlen = 0;
// console.log("rowlen", textInfo);
if (textInfo != null) {
computeRowlen = textInfo.textWidthAll;
}
if (computeRowlen + 6 > currentColLen) {
currentColLen = computeRowlen + 6;
}
}
if (currentColLen != Store.defaultcollen) {
cfg["columnlen"][c] = currentColLen;
if (cfg["customWidth"]) {
delete cfg["customWidth"][c];
}
}
matchColumn[c] = 1;
}
}
}
jfrefreshgridall(
Store.flowdata[0].length,
Store.flowdata.length,
Store.flowdata,
cfg,
Store.luckysheet_select_save,
"resizeC",
"columnlen",
);
}
/**
*
* @param {String} type:delete type,
* @param {*} st_index
* @param {*} ed_index
*/
// Delete row api
export function deleteRows(type, st_index, ed_index) {
Store.luckysheetRightHeadClickIs = "column";
}
// Delete column api
export function deleteColumns() {}