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.
936 lines
42 KiB
936 lines
42 KiB
import luckysheetConfigsetting from './luckysheetConfigsetting';
|
|
import menuButton from './menuButton';
|
|
import conditionformat from './conditionformat';
|
|
import server from './server';
|
|
import {luckysheetupdateCell,setCenterInputPosition} from './updateCell';
|
|
import { keycode } from './constant';
|
|
import {
|
|
luckysheetMoveHighlightCell,
|
|
luckysheetMoveHighlightCell2,
|
|
luckysheetMoveHighlightRange,
|
|
luckysheetMoveHighlightRange2
|
|
} from './sheetMove';
|
|
import { selectHightlightShow, selectIsOverlap } from './select';
|
|
import selection from './selection';
|
|
import searchReplace from './searchReplace';
|
|
import controlHistory from './controlHistory';
|
|
import imageCtrl from './imageCtrl';
|
|
|
|
import {
|
|
getByteLen,
|
|
luckysheetactiveCell,
|
|
} from '../utils/util';
|
|
import { getSheetIndex } from '../methods/get';
|
|
import { hasPartMC, isEditMode } from '../global/validate';
|
|
import formula from '../global/formula';
|
|
import cleargridelement from '../global/cleargridelement';
|
|
import tooltip from '../global/tooltip';
|
|
import locale from '../locale/locale';
|
|
import {enterKeyControll} from './inlineString';
|
|
import Store from '../store';
|
|
|
|
|
|
let luckysheet_shiftkeydown = false;
|
|
|
|
function formulaMoveEvent(dir, ctrlKey, shiftKey, event){
|
|
if ($("#luckysheet-formula-search-c").is(":visible") && (dir=="up" || dir=="down") ) {
|
|
let $obj;
|
|
if(dir=="down"){
|
|
$obj = $("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item-active").next();
|
|
if ($obj.length == 0) {
|
|
$obj = $("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item").first();
|
|
}
|
|
}
|
|
else if(dir=="up"){
|
|
$obj = $("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item-active").prev();
|
|
if ($obj.length == 0) {
|
|
$obj = $("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item").last();
|
|
}
|
|
}
|
|
|
|
|
|
$("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item").removeClass("luckysheet-formula-search-item-active");
|
|
$obj.addClass("luckysheet-formula-search-item-active");
|
|
|
|
event.preventDefault();
|
|
}
|
|
else{
|
|
if($("#luckysheet-formula-functionrange-select").is(":visible")){
|
|
if(ctrlKey && shiftKey){
|
|
luckysheetMoveHighlightRange2(dir, "rangeOfFormula");
|
|
}
|
|
else if(ctrlKey){
|
|
luckysheetMoveHighlightCell2(dir, "rangeOfFormula");
|
|
}
|
|
else if(shiftKey){
|
|
let dir_n = dir, step = 1;
|
|
if(dir == 'up'){
|
|
dir_n = 'down';
|
|
step = -1;
|
|
}
|
|
if(dir == 'left'){
|
|
dir_n = 'right';
|
|
step = -1;
|
|
}
|
|
|
|
luckysheetMoveHighlightRange(dir_n, step, "rangeOfFormula");
|
|
}
|
|
else{
|
|
let dir_n = dir, step = 1;
|
|
if(dir == 'up'){
|
|
dir_n = 'down';
|
|
step = -1;
|
|
}
|
|
if(dir == 'left'){
|
|
dir_n = 'right';
|
|
step = -1;
|
|
}
|
|
|
|
luckysheetMoveHighlightCell(dir_n, step, "rangeOfFormula");
|
|
}
|
|
event.preventDefault();
|
|
}
|
|
else if(formula.israngeseleciton()){
|
|
let anchor = $(window.getSelection().anchorNode);
|
|
|
|
if(anchor.parent().next().text() == null || anchor.parent().next().text() == ""){
|
|
let vText = $("#luckysheet-input-box #luckysheet-input-box-index").text();
|
|
let range = formula.getcellrange(vText);
|
|
|
|
if(range == null){
|
|
range = formula.getcellrange($("#luckysheet-input-box-index").text());
|
|
}
|
|
|
|
let r1 = range["row"][0], r2 = range["row"][1];
|
|
let c1 = range["column"][0], c2 = range["column"][1];
|
|
|
|
let row = Store.visibledatarow[r2],
|
|
row_pre = r1 - 1 == -1 ? 0 : Store.visibledatarow[r1 - 1];
|
|
let col = Store.visibledatacolumn[c2],
|
|
col_pre = c1 - 1 == -1 ? 0 : Store.visibledatacolumn[c1 - 1];
|
|
|
|
formula.func_selectedrange = {
|
|
"left": col_pre,
|
|
"width": col - col_pre - 1,
|
|
"top": row_pre,
|
|
"height": row - row_pre - 1,
|
|
"left_move": col_pre,
|
|
"width_move": col - col_pre - 1,
|
|
"top_move": row_pre,
|
|
"height_move": row - row_pre - 1,
|
|
"row": [r1, r2],
|
|
"column": [c1, c2],
|
|
"row_focus": r1,
|
|
"column_focus": c1
|
|
};
|
|
|
|
formula.rangeSetValue({ "row": [r1, r2], "column": [c1, c2] });
|
|
|
|
formula.rangestart = true;
|
|
formula.rangedrag_column_start = false;
|
|
formula.rangedrag_row_start = false;
|
|
|
|
if(ctrlKey && shiftKey){
|
|
luckysheetMoveHighlightRange2(dir, "rangeOfFormula");
|
|
}
|
|
else if(ctrlKey){
|
|
luckysheetMoveHighlightCell2(dir, "rangeOfFormula");
|
|
}
|
|
else if(shiftKey){
|
|
let dir_n = dir, step = 1;
|
|
if(dir == 'up'){
|
|
dir_n = 'down';
|
|
step = -1;
|
|
}
|
|
if(dir == 'left'){
|
|
dir_n = 'right';
|
|
step = -1;
|
|
}
|
|
|
|
luckysheetMoveHighlightRange(dir_n, step, "rangeOfFormula");
|
|
}
|
|
else{
|
|
let dir_n = dir, step = 1;
|
|
if(dir == 'up'){
|
|
dir_n = 'down';
|
|
step = -1;
|
|
}
|
|
if(dir == 'left'){
|
|
dir_n = 'right';
|
|
step = -1;
|
|
}
|
|
|
|
luckysheetMoveHighlightCell(dir_n, step, "rangeOfFormula");
|
|
}
|
|
}
|
|
event.preventDefault();
|
|
}
|
|
else if(!ctrlKey && !shiftKey){
|
|
let anchor = $(window.getSelection().anchorNode);
|
|
let anchorOffset = window.getSelection().anchorOffset;
|
|
|
|
if(dir == 'up'){
|
|
if(anchor.parent().is("span") && anchor.parent().next().length == 0 && anchorOffset > 0){
|
|
formula.updatecell(Store.luckysheetCellUpdate[0], Store.luckysheetCellUpdate[1]);
|
|
luckysheetMoveHighlightCell("down", -1, "rangeOfSelect");
|
|
|
|
event.preventDefault();
|
|
}
|
|
else if(anchor.is("#luckysheet-rich-text-editor") && anchor.context.childElementCount == anchorOffset){
|
|
formula.updatecell(Store.luckysheetCellUpdate[0], Store.luckysheetCellUpdate[1]);
|
|
luckysheetMoveHighlightCell("down", -1, "rangeOfSelect");
|
|
|
|
event.preventDefault();
|
|
}
|
|
else if(anchor.parent().is("#luckysheet-rich-text-editor") && anchor.context.length == anchorOffset){
|
|
formula.updatecell(Store.luckysheetCellUpdate[0], Store.luckysheetCellUpdate[1]);
|
|
luckysheetMoveHighlightCell("down", -1, "rangeOfSelect");
|
|
|
|
event.preventDefault();
|
|
}
|
|
}
|
|
else if(dir == 'down'){
|
|
if(anchor.parent().is("span") && anchor.parent().next().length == 0 && anchorOffset > 0){
|
|
formula.updatecell(Store.luckysheetCellUpdate[0], Store.luckysheetCellUpdate[1]);
|
|
luckysheetMoveHighlightCell("down", 1, "rangeOfSelect");
|
|
|
|
event.preventDefault();
|
|
}
|
|
else if(anchor.is("#luckysheet-rich-text-editor") && anchor.context.childElementCount == anchorOffset){
|
|
formula.updatecell(Store.luckysheetCellUpdate[0], Store.luckysheetCellUpdate[1]);
|
|
luckysheetMoveHighlightCell("down", 1, "rangeOfSelect");
|
|
|
|
event.preventDefault();
|
|
}
|
|
else if(anchor.parent().is("#luckysheet-rich-text-editor") && anchor.context.length == anchorOffset){
|
|
formula.updatecell(Store.luckysheetCellUpdate[0], Store.luckysheetCellUpdate[1]);
|
|
luckysheetMoveHighlightCell("down", 1, "rangeOfSelect");
|
|
|
|
event.preventDefault();
|
|
}
|
|
}
|
|
else if(dir == 'left'){
|
|
if(anchor.parent().is("span") && anchor.parent().prev().length == 0 && anchorOffset == 0){
|
|
formula.updatecell(Store.luckysheetCellUpdate[0], Store.luckysheetCellUpdate[1]);
|
|
luckysheetMoveHighlightCell("right", -1, "rangeOfSelect");
|
|
|
|
event.preventDefault();
|
|
}
|
|
else if(anchor.is("#luckysheet-rich-text-editor") && anchorOffset == 1){
|
|
formula.updatecell(Store.luckysheetCellUpdate[0], Store.luckysheetCellUpdate[1]);
|
|
luckysheetMoveHighlightCell("right", -1, "rangeOfSelect");
|
|
|
|
event.preventDefault();
|
|
}
|
|
else if(anchor.parent().is("#luckysheet-rich-text-editor") && anchorOffset == 0){
|
|
formula.updatecell(Store.luckysheetCellUpdate[0], Store.luckysheetCellUpdate[1]);
|
|
luckysheetMoveHighlightCell("right", -1, "rangeOfSelect");
|
|
|
|
event.preventDefault();
|
|
}
|
|
}
|
|
else if(dir == 'right'){
|
|
if(anchor.parent().is("span") && anchor.parent().next().length == 0 && anchorOffset > 0){
|
|
formula.updatecell(Store.luckysheetCellUpdate[0], Store.luckysheetCellUpdate[1]);
|
|
luckysheetMoveHighlightCell("right", 1, "rangeOfSelect");
|
|
|
|
event.preventDefault();
|
|
}
|
|
else if(anchor.is("#luckysheet-rich-text-editor") && anchor.context.childElementCount == anchorOffset){
|
|
formula.updatecell(Store.luckysheetCellUpdate[0], Store.luckysheetCellUpdate[1]);
|
|
luckysheetMoveHighlightCell("right", 1, "rangeOfSelect");
|
|
|
|
event.preventDefault();
|
|
}
|
|
else if(anchor.parent().is("#luckysheet-rich-text-editor") && anchor.context.length == anchorOffset){
|
|
formula.updatecell(Store.luckysheetCellUpdate[0], Store.luckysheetCellUpdate[1]);
|
|
luckysheetMoveHighlightCell("right", 1, "rangeOfSelect");
|
|
|
|
event.preventDefault();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
export function keyboardInitial(){
|
|
const _locale = locale();
|
|
const locale_drag = _locale.drag;
|
|
|
|
//单元格编辑输入
|
|
$("#luckysheet-input-box").click(function () {
|
|
formula.rangeHightlightselected($("#luckysheet-rich-text-editor"));
|
|
}).add("#" + Store.container).on("keydown", function (event) {
|
|
if ($("#luckysheet-modal-dialog-mask").is(":visible") || $(event.target).hasClass("luckysheet-mousedown-cancel") || $(event.target).hasClass("formulaInputFocus")) {
|
|
return;
|
|
}
|
|
|
|
let ctrlKey = event.ctrlKey;
|
|
let altKey = event.altKey;
|
|
let shiftKey = event.shiftKey;
|
|
let kcode = event.keyCode;
|
|
|
|
if ($("#luckysheet-modal-dialog-mask").is(":visible") || $(event.target).hasClass("luckysheet-mousedown-cancel") || $(event.target).hasClass("sp-input") || (parseInt($("#luckysheet-input-box").css("top")) > 0 && $(event.target).closest(".luckysheet-input-box").length > 0 && kcode != keycode.ENTER && kcode != keycode.TAB && kcode != keycode.UP && kcode != keycode.DOWN && kcode != keycode.LEFT && kcode != keycode.RIGHT)) {
|
|
let anchor = $(window.getSelection().anchorNode);
|
|
|
|
if(anchor.parent().is("#luckysheet-helpbox-cell") || anchor.is("#luckysheet-helpbox-cell")){
|
|
if(kcode == keycode.ENTER){
|
|
let helpboxValue = $("#luckysheet-helpbox-cell").text();
|
|
|
|
if(formula.iscelldata(helpboxValue)){
|
|
let cellrange = formula.getcellrange(helpboxValue);
|
|
|
|
Store.luckysheet_select_save = [{ "row": cellrange["row"], "column": cellrange["column"], "row_focus": cellrange["row"][0], "column_focus": cellrange["column"][0] }];
|
|
selectHightlightShow();
|
|
|
|
$("#luckysheet-helpbox-cell").blur();
|
|
|
|
let scrollLeft = $("#luckysheet-cell-main").scrollLeft(),
|
|
scrollTop = $("#luckysheet-cell-main").scrollTop();
|
|
let winH = $("#luckysheet-cell-main").height(),
|
|
winW = $("#luckysheet-cell-main").width();
|
|
|
|
let row = Store.visibledatarow[cellrange["row"][1]],
|
|
row_pre = cellrange["row"][0] - 1 == -1 ? 0 : Store.visibledatarow[cellrange["row"][0] - 1];
|
|
let col = Store.visibledatacolumn[cellrange["column"][1]],
|
|
col_pre = cellrange["column"][0] - 1 == -1 ? 0 : Store.visibledatacolumn[cellrange["column"][0] - 1];
|
|
|
|
if (col - scrollLeft - winW + 20 > 0) {
|
|
$("#luckysheet-scrollbar-x").scrollLeft(col - winW + 20);
|
|
}
|
|
else if (col_pre - scrollLeft - 20 < 0) {
|
|
$("#luckysheet-scrollbar-x").scrollLeft(col_pre - 20);
|
|
}
|
|
|
|
if (row - scrollTop - winH + 20 > 0) {
|
|
$("#luckysheet-scrollbar-y").scrollTop(row - winH + 20);
|
|
}
|
|
else if (row_pre - scrollTop - 20 < 0) {
|
|
$("#luckysheet-scrollbar-y").scrollTop(row_pre - 20);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
let $inputbox = $("#luckysheet-input-box");
|
|
|
|
if((altKey || event.metaKey) && kcode == keycode.ENTER && parseInt($inputbox.css("top")) > 0){
|
|
let last = Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1];
|
|
let row_index = last["row_focus"], col_index = last["column_focus"];
|
|
enterKeyControll(Store.flowdata[row_index][col_index]);
|
|
event.preventDefault();
|
|
}
|
|
else if (kcode == keycode.ENTER && parseInt($inputbox.css("top")) > 0) {
|
|
if ($("#luckysheet-formula-search-c").is(":visible") && formula.searchFunctionCell != null) {
|
|
formula.searchFunctionEnter($("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item-active"));
|
|
}
|
|
else {
|
|
formula.updatecell(Store.luckysheetCellUpdate[0], Store.luckysheetCellUpdate[1]);
|
|
Store.luckysheet_select_save = [{
|
|
"row": [Store.luckysheetCellUpdate[0], Store.luckysheetCellUpdate[0]],
|
|
"column": [Store.luckysheetCellUpdate[1], Store.luckysheetCellUpdate[1]],
|
|
"row_focus": Store.luckysheetCellUpdate[0],
|
|
"column_focus": Store.luckysheetCellUpdate[1]
|
|
}];
|
|
luckysheetMoveHighlightCell("down", 1, "rangeOfSelect");
|
|
}
|
|
|
|
//若有参数弹出框,隐藏
|
|
if($("#luckysheet-search-formula-parm").is(":visible")){
|
|
$("#luckysheet-search-formula-parm").hide();
|
|
}
|
|
//若有参数选取范围弹出框,隐藏
|
|
if($("#luckysheet-search-formula-parm-select").is(":visible")){
|
|
$("#luckysheet-search-formula-parm-select").hide();
|
|
}
|
|
event.preventDefault();
|
|
}
|
|
else if (kcode == keycode.TAB) {
|
|
if (parseInt($inputbox.css("top")) > 0) {
|
|
return;
|
|
}
|
|
|
|
luckysheetMoveHighlightCell("right", 1, "rangeOfSelect");
|
|
event.preventDefault();
|
|
}
|
|
else if(kcode == keycode.F2){
|
|
if (parseInt($inputbox.css("top")) > 0) {
|
|
return;
|
|
}
|
|
|
|
let last = Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1];
|
|
|
|
let row_index = last["row_focus"], col_index = last["column_focus"];
|
|
|
|
luckysheetupdateCell(row_index, col_index, Store.flowdata);
|
|
event.preventDefault();
|
|
}
|
|
else if (kcode == keycode.F4 && parseInt($inputbox.css("top")) > 0) {
|
|
formula.setfreezonFuc(event);
|
|
event.preventDefault();
|
|
}
|
|
else if (kcode == keycode.ESC && parseInt($inputbox.css("top")) > 0) {
|
|
formula.dontupdate();
|
|
luckysheetMoveHighlightCell("down", 0, "rangeOfSelect");
|
|
event.preventDefault();
|
|
}
|
|
else if (kcode == keycode.ENTER) {
|
|
if($(event.target).hasClass("formulaInputFocus") || $("#luckysheet-conditionformat-dialog").is(":visible")){
|
|
return;
|
|
}
|
|
else if (String.fromCharCode(kcode) != null && $("#luckysheet-cell-selected").is(":visible")) {
|
|
let last = Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1];
|
|
|
|
let row_index = last["row_focus"], col_index = last["column_focus"];
|
|
|
|
luckysheetupdateCell(row_index, col_index, Store.flowdata);
|
|
event.preventDefault();
|
|
}
|
|
}
|
|
else {
|
|
if (ctrlKey || event.metaKey) {
|
|
if (shiftKey) {
|
|
if (!luckysheet_shiftkeydown) {
|
|
Store.luckysheet_shiftpositon = $.extend(true, {}, Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1]);
|
|
Store.luckysheet_shiftkeydown = true;
|
|
}
|
|
|
|
//Ctrl + shift + 方向键 调整选区
|
|
if (kcode == keycode.UP) {
|
|
if (parseInt($inputbox.css("top")) > 0 || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
|
|
return;
|
|
}
|
|
|
|
luckysheetMoveHighlightRange2("up", "rangeOfSelect");
|
|
}
|
|
else if (kcode == keycode.DOWN) {
|
|
if (parseInt($inputbox.css("top")) > 0 || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
|
|
return;
|
|
}
|
|
|
|
luckysheetMoveHighlightRange2("down", "rangeOfSelect");
|
|
}
|
|
else if (kcode == keycode.LEFT) {
|
|
if (parseInt($inputbox.css("top")) > 0 || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
|
|
return;
|
|
}
|
|
|
|
luckysheetMoveHighlightRange2("left", "rangeOfSelect");
|
|
}
|
|
else if (kcode == keycode.RIGHT) {
|
|
if (parseInt($inputbox.css("top")) > 0 || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
|
|
return;
|
|
}
|
|
|
|
luckysheetMoveHighlightRange2("right", "rangeOfSelect");
|
|
}
|
|
}
|
|
else if (kcode == 66) {//Ctrl + B 加粗
|
|
$("#luckysheet-icon-bold").click();
|
|
}
|
|
else if (kcode == 67) {//Ctrl + C 复制
|
|
if(imageCtrl.currentImgId != null){
|
|
imageCtrl.copyImgItem(event);
|
|
return;
|
|
}
|
|
|
|
//复制时存在格式刷状态,取消格式刷
|
|
if(menuButton.luckysheetPaintModelOn){
|
|
menuButton.cancelPaintModel();
|
|
}
|
|
|
|
if(Store.luckysheet_select_save.length == 0){
|
|
return;
|
|
}
|
|
|
|
//复制范围内包含部分合并单元格,提示
|
|
if(Store.config["merge"] != null){
|
|
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];
|
|
|
|
has_PartMC = hasPartMC(Store.config, r1, r2, c1, c2);
|
|
|
|
if(has_PartMC){
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(has_PartMC){
|
|
if(isEditMode()){
|
|
alert(locale_drag.noMerge);
|
|
}
|
|
else{
|
|
tooltip.info(locale_drag.noMerge, "");
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
|
|
//多重选区 有条件格式时 提示
|
|
let cdformat = Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)].luckysheet_conditionformat_save;
|
|
if(Store.luckysheet_select_save.length > 1 && cdformat != null && cdformat.length > 0){
|
|
let hasCF = false;
|
|
|
|
let cf_compute = conditionformat.getComputeMap();
|
|
|
|
label:
|
|
for(let s = 0; s < Store.luckysheet_select_save.length; s++){
|
|
if(hasCF){
|
|
break;
|
|
}
|
|
|
|
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(conditionformat.checksCF(r, c, cf_compute) != null){
|
|
hasCF = true;
|
|
continue label;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if(hasCF){
|
|
if(isEditMode()){
|
|
alert(locale_drag.noMulti);
|
|
}
|
|
else{
|
|
tooltip.info(locale_drag.noMulti, "");
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
|
|
//多重选区 行不一样且列不一样时 提示
|
|
if(Store.luckysheet_select_save.length > 1){
|
|
let isSameRow = true,
|
|
str_r = Store.luckysheet_select_save[0].row[0],
|
|
end_r = Store.luckysheet_select_save[0].row[1];
|
|
let isSameCol = true,
|
|
str_c = Store.luckysheet_select_save[0].column[0],
|
|
end_c = Store.luckysheet_select_save[0].column[1];
|
|
|
|
for(let s = 1; s < Store.luckysheet_select_save.length; s++){
|
|
if(Store.luckysheet_select_save[s].row[0] != str_r || Store.luckysheet_select_save[s].row[1] != end_r){
|
|
isSameRow = false;
|
|
}
|
|
if(Store.luckysheet_select_save[s].column[0] != str_c || Store.luckysheet_select_save[s].column[1] != end_c){
|
|
isSameCol = false;
|
|
}
|
|
}
|
|
|
|
if((!isSameRow && !isSameCol) || selectIsOverlap()){
|
|
if(isEditMode()){
|
|
alert(locale_drag.noMulti);
|
|
}
|
|
else{
|
|
tooltip.info(locale_drag.noMulti, "");
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
|
|
selection.copy(event);
|
|
|
|
Store.luckysheet_paste_iscut = false;
|
|
luckysheetactiveCell();
|
|
|
|
event.stopPropagation();
|
|
return;
|
|
}
|
|
else if (kcode == 70) {//Ctrl + F 查找
|
|
searchReplace.createDialog(0);
|
|
searchReplace.init();
|
|
|
|
$("#luckysheet-search-replace #searchInput input").focus();
|
|
}
|
|
else if (kcode == 72) {//Ctrl + H 替换
|
|
searchReplace.createDialog(1);
|
|
searchReplace.init();
|
|
|
|
$("#luckysheet-search-replace #searchInput input").focus();
|
|
}
|
|
else if (kcode == 73) {//Ctrl + I 斜体
|
|
$("#luckysheet-icon-italic").click();
|
|
}
|
|
else if (kcode == 86) {//Ctrl + V 粘贴
|
|
if(isEditMode()){//此模式下禁用粘贴
|
|
return;
|
|
}
|
|
|
|
if($(event.target).hasClass("formulaInputFocus")){
|
|
return;
|
|
}
|
|
|
|
if(Store.luckysheet_select_save.length > 1){
|
|
if(isEditMode()){
|
|
alert(locale_drag.noPaste);
|
|
}
|
|
else{
|
|
tooltip.info(locale_drag.noPaste, "");
|
|
}
|
|
return;
|
|
}
|
|
|
|
selection.isPasteAction = true;
|
|
luckysheetactiveCell();
|
|
|
|
event.stopPropagation();
|
|
return;
|
|
}
|
|
else if (kcode == 88) {//Ctrl + X 剪切
|
|
//复制时存在格式刷状态,取消格式刷
|
|
if(menuButton.luckysheetPaintModelOn){
|
|
menuButton.cancelPaintModel();
|
|
}
|
|
|
|
if(Store.luckysheet_select_save.length == 0){
|
|
return;
|
|
}
|
|
|
|
//复制范围内包含部分合并单元格,提示
|
|
if(Store.config["merge"] != null){
|
|
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];
|
|
|
|
has_PartMC = hasPartMC(Store.config, r1, r2, c1, c2);
|
|
|
|
if(has_PartMC){
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(has_PartMC){
|
|
if(luckysheetConfigsetting.editMode){
|
|
alert(_locale_drag.noMerge);
|
|
}
|
|
else{
|
|
tooltip.info(_locale_drag.noMerge, "");
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
|
|
//多重选区时 提示
|
|
if(Store.luckysheet_select_save.length > 1){
|
|
if(isEditMode()){
|
|
alert(locale_drag.noMulti);
|
|
}
|
|
else{
|
|
tooltip.info(locale_drag.noMulti, "");
|
|
}
|
|
return;
|
|
}
|
|
|
|
selection.copy(event);
|
|
|
|
Store.luckysheet_paste_iscut = true;
|
|
luckysheetactiveCell();
|
|
|
|
event.stopPropagation();
|
|
return;
|
|
}
|
|
else if (kcode == 90) {//Ctrl + Z 撤销
|
|
controlHistory.redo(event);
|
|
luckysheetactiveCell();
|
|
event.stopPropagation();
|
|
return;
|
|
}
|
|
else if (kcode == 89) {//Ctrl + Y 重做
|
|
controlHistory.undo(event);
|
|
luckysheetactiveCell();
|
|
event.stopPropagation();
|
|
return;
|
|
}
|
|
else if (kcode == keycode.UP) {//Ctrl + up 调整单元格
|
|
if (parseInt($inputbox.css("top")) > 0 || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
|
|
return;
|
|
}
|
|
|
|
luckysheetMoveHighlightCell2("up", "rangeOfSelect");
|
|
}
|
|
else if (kcode == keycode.DOWN) {//Ctrl + down 调整单元格
|
|
if (parseInt($inputbox.css("top")) > 0 || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
|
|
return;
|
|
}
|
|
|
|
luckysheetMoveHighlightCell2("down", "rangeOfSelect");
|
|
}
|
|
else if (kcode == keycode.LEFT) {//Ctrl + top 调整单元格
|
|
if (parseInt($inputbox.css("top")) > 0 || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
|
|
return;
|
|
}
|
|
|
|
luckysheetMoveHighlightCell2("left", "rangeOfSelect");
|
|
}
|
|
else if (kcode == keycode.RIGHT) {//Ctrl + right 调整单元格
|
|
if (parseInt($inputbox.css("top")) > 0 || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
|
|
return;
|
|
}
|
|
|
|
luckysheetMoveHighlightCell2("right", "rangeOfSelect");
|
|
}
|
|
else if (String.fromCharCode(kcode).toLocaleUpperCase() == "A") {//Ctrl + A 全选
|
|
$("#luckysheet-left-top").trigger("mousedown");
|
|
$(document).trigger("mouseup");
|
|
}
|
|
|
|
event.preventDefault();
|
|
return;
|
|
}
|
|
else if (shiftKey && (kcode == keycode.UP || kcode == keycode.DOWN || kcode == keycode.LEFT || kcode == keycode.RIGHT || (altKey && (kcode == 53 || kcode == 101)))) {
|
|
if (parseInt($inputbox.css("top")) > 0 || $(event.target).hasClass("formulaInputFocus")) {
|
|
return;
|
|
}
|
|
|
|
if (!luckysheet_shiftkeydown) {
|
|
Store.luckysheet_shiftpositon = $.extend(true, {}, Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1]);
|
|
Store.luckysheet_shiftkeydown = true;
|
|
}
|
|
|
|
//shift + 方向键 调整选区
|
|
if (kcode == keycode.UP) {
|
|
if($("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")){
|
|
return;
|
|
}
|
|
|
|
luckysheetMoveHighlightRange("down", -1, "rangeOfSelect");
|
|
}
|
|
else if (kcode == keycode.DOWN) {
|
|
if($("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")){
|
|
return;
|
|
}
|
|
|
|
luckysheetMoveHighlightRange("down", 1, "rangeOfSelect");
|
|
}
|
|
else if (kcode == keycode.LEFT) {
|
|
if($("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")){
|
|
return;
|
|
}
|
|
|
|
luckysheetMoveHighlightRange("right", -1, "rangeOfSelect");
|
|
}
|
|
else if (kcode == keycode.RIGHT) {
|
|
if($("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")){
|
|
return;
|
|
}
|
|
|
|
luckysheetMoveHighlightRange("right", 1, "rangeOfSelect");
|
|
}
|
|
else if (altKey && (kcode == 53 || kcode == 101)) {
|
|
//Alt + Shift + 5(删除线)
|
|
$("#luckysheet-icon-strikethrough").click();
|
|
}
|
|
|
|
event.preventDefault();
|
|
}
|
|
else if (kcode == keycode.ESC) {
|
|
if(menuButton.luckysheetPaintModelOn){
|
|
menuButton.cancelPaintModel();
|
|
}
|
|
else{
|
|
cleargridelement(event);
|
|
event.preventDefault();
|
|
}
|
|
|
|
selectHightlightShow();
|
|
}
|
|
else if (kcode == keycode.DELETE) {
|
|
if(imageCtrl.currentImgId != null){
|
|
imageCtrl.removeImgItem();
|
|
}
|
|
else{
|
|
$("#luckysheet-delete-text").click();
|
|
}
|
|
|
|
event.preventDefault();
|
|
}
|
|
else if(kcode == 8 && imageCtrl.currentImgId != null){
|
|
imageCtrl.removeImgItem();
|
|
event.preventDefault();
|
|
}
|
|
else if (kcode == keycode.UP) {
|
|
if (parseInt($inputbox.css("top")) > 0 || $(event.target).hasClass("formulaInputFocus") || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
|
|
return;
|
|
}
|
|
|
|
luckysheetMoveHighlightCell("down", -1, "rangeOfSelect");
|
|
event.preventDefault();
|
|
}
|
|
else if (kcode == keycode.DOWN) {
|
|
if (parseInt($inputbox.css("top")) > 0 || $(event.target).hasClass("formulaInputFocus") || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
|
|
return;
|
|
}
|
|
|
|
luckysheetMoveHighlightCell("down", 1, "rangeOfSelect");
|
|
event.preventDefault();
|
|
}
|
|
else if (kcode == keycode.LEFT) {
|
|
if (parseInt($inputbox.css("top")) > 0 || $(event.target).hasClass("formulaInputFocus") || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
|
|
return;
|
|
}
|
|
|
|
luckysheetMoveHighlightCell("right", -1, "rangeOfSelect");
|
|
event.preventDefault();
|
|
}
|
|
else if (kcode == keycode.RIGHT) {
|
|
if (parseInt($inputbox.css("top")) > 0 || $(event.target).hasClass("formulaInputFocus") || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) {
|
|
return;
|
|
}
|
|
|
|
luckysheetMoveHighlightCell("right", 1, "rangeOfSelect");
|
|
event.preventDefault();
|
|
}
|
|
else if (!((kcode >= 112 && kcode <= 123) || kcode <= 46 || kcode == 144 || kcode == 108 || event.ctrlKey || event.altKey || (event.shiftKey && (kcode == 37 || kcode == 38 || kcode == 39 || kcode == 40))) || kcode == 8 || kcode == 32 || kcode == 46 || kcode == 0 || (event.ctrlKey && kcode == 86)) {
|
|
if (String.fromCharCode(kcode) != null && $("#luckysheet-cell-selected").is(":visible") && (kcode != keycode.CAPSLOCK && kcode != keycode.WIN && kcode != 18)) {
|
|
let last = Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1];
|
|
|
|
let row_index = last["row_focus"], col_index = last["column_focus"];
|
|
|
|
luckysheetupdateCell(row_index, col_index, Store.flowdata, true);
|
|
if(kcode == 8){
|
|
$("#luckysheet-rich-text-editor").html("<br/>");
|
|
}
|
|
formula.functionInputHanddler($("#luckysheet-functionbox-cell"), $("#luckysheet-rich-text-editor"), kcode);
|
|
}
|
|
}
|
|
}
|
|
|
|
luckysheetactiveCell();
|
|
|
|
event.stopPropagation();
|
|
});
|
|
|
|
//单元格编辑 keydown (公式 上下左右键移动)
|
|
$("#" + Store.container).add("#luckysheet-input-box").keydown(function (event) {
|
|
if ($("#luckysheet-modal-dialog-mask").is(":visible") || $(event.target).hasClass("luckysheet-mousedown-cancel") || $(event.target).hasClass("formulaInputFocus")) {
|
|
return;
|
|
}
|
|
|
|
let ctrlKey = event.ctrlKey;
|
|
let altKey = event.altKey;
|
|
let shiftKey = event.shiftKey;
|
|
let kcode = event.keyCode;
|
|
|
|
let $inputbox = $("#luckysheet-input-box");
|
|
if (kcode == keycode.ESC && parseInt($("#luckysheet-input-box").css("top")) > 0) {
|
|
formula.dontupdate();
|
|
luckysheetMoveHighlightCell("down", 0, "rangeOfSelect");
|
|
event.preventDefault();
|
|
}
|
|
else if (kcode == keycode.ENTER && parseInt($inputbox.css("top")) > 0) {
|
|
if ($("#luckysheet-formula-search-c").is(":visible") && formula.searchFunctionCell != null) {
|
|
formula.searchFunctionEnter($("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item-active"));
|
|
event.preventDefault();
|
|
}
|
|
}
|
|
else if(kcode == keycode.TAB && parseInt($inputbox.css("top")) > 0){
|
|
if ($("#luckysheet-formula-search-c").is(":visible") && formula.searchFunctionCell != null) {
|
|
formula.searchFunctionEnter($("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item-active"));
|
|
}
|
|
else{
|
|
formula.updatecell(Store.luckysheetCellUpdate[0], Store.luckysheetCellUpdate[1]);
|
|
luckysheetMoveHighlightCell("right", 1, "rangeOfSelect");
|
|
}
|
|
|
|
event.preventDefault();
|
|
}
|
|
else if (kcode == keycode.F4 && parseInt($inputbox.css("top")) > 0) {
|
|
formula.setfreezonFuc(event);
|
|
event.preventDefault();
|
|
}
|
|
else if (kcode == keycode.UP && parseInt($inputbox.css("top")) > 0) {
|
|
formulaMoveEvent("up", ctrlKey, shiftKey,event);
|
|
}
|
|
else if (kcode == keycode.DOWN && parseInt($inputbox.css("top")) > 0) {
|
|
formulaMoveEvent("down", ctrlKey, shiftKey,event);
|
|
}
|
|
else if (kcode == keycode.LEFT && parseInt($inputbox.css("top")) > 0) {
|
|
formulaMoveEvent("left", ctrlKey, shiftKey,event);
|
|
}
|
|
else if (kcode == keycode.RIGHT && parseInt($inputbox.css("top")) > 0) {
|
|
formulaMoveEvent("right", ctrlKey, shiftKey,event);
|
|
}
|
|
else if (!((kcode >= 112 && kcode <= 123) || kcode <= 46 || kcode == 144 || kcode == 108 || event.ctrlKey || event.altKey || (event.shiftKey && (kcode == 37 || kcode == 38 || kcode == 39 || kcode == 40 || kcode == keycode.WIN || kcode == keycode.WIN_R || kcode == keycode.MENU))) || kcode == 8 || kcode == 32 || kcode == 46 || (event.ctrlKey && kcode == 86)) {
|
|
// if(event.target.id!="luckysheet-input-box" && event.target.id!="luckysheet-rich-text-editor"){
|
|
formula.functionInputHanddler($("#luckysheet-functionbox-cell"), $("#luckysheet-rich-text-editor"), kcode);
|
|
setCenterInputPosition(Store.luckysheetCellUpdate[0], Store.luckysheetCellUpdate[1], Store.flowdata);
|
|
// }
|
|
|
|
}
|
|
}).keyup(function (e) {
|
|
let kcode = e.keyCode;
|
|
|
|
if (!e.shiftKey && kcode == 16) {
|
|
Store.luckysheet_shiftkeydown = false;
|
|
Store.luckysheet_shiftpositon = null;
|
|
}
|
|
|
|
//输入框中文输入后 shift 和 空格 处理
|
|
if(parseInt($("#luckysheet-input-box").css("top")) > 0 && (kcode == 13 || kcode == 16 || kcode == 32)){
|
|
// if(event.target.id=="luckysheet-input-box" || event.target.id=="luckysheet-rich-text-editor"){
|
|
// formula.functionInputHanddler($("#luckysheet-functionbox-cell"), $("#luckysheet-rich-text-editor"), kcode);
|
|
// }
|
|
}
|
|
|
|
e.preventDefault();
|
|
});
|
|
|
|
//top workBook rename
|
|
$("#luckysheet_info_detail_input").val(server.title).css("width", getByteLen(server.title) * 10).keydown(function(){
|
|
let ctrlKey = event.ctrlKey;
|
|
let altKey = event.altKey;
|
|
let shiftKey = event.shiftKey;
|
|
let kcode = event.keyCode;
|
|
let $t = $(this);
|
|
if(kcode == keycode.ENTER){
|
|
$t.blur().change();
|
|
}
|
|
}).bind('input propertychange', function() {
|
|
let $t = $(this);
|
|
let inputlen = getByteLen($t.val())*10;
|
|
let updatelen = $("#luckysheet_info_detail_update").outerWidth();
|
|
let savelen = $("#luckysheet_info_detail_save").outerWidth();
|
|
let userlen = $("#luckysheet_info_detail_user").parent().outerWidth()+60;
|
|
let containerlen = $("#" + Store.container).outerWidth();
|
|
let otherlen = 100;
|
|
|
|
let minuslen = containerlen- savelen - updatelen - userlen - otherlen;
|
|
if(inputlen > minuslen){
|
|
$("#luckysheet_info_detail_input").css("width", minuslen);
|
|
}
|
|
else{
|
|
$("#luckysheet_info_detail_input").css("width", inputlen);
|
|
}
|
|
}).change(function(){
|
|
server.saveParam("na", null, $(this).val());
|
|
});
|
|
|
|
|
|
// 右击菜单的input输入框 敲击Enter一样生效
|
|
$("#" + Store.container).add("input.luckysheet-mousedown-cancel").keydown(function (event) {
|
|
|
|
const element = event.target.closest('.luckysheet-cols-menuitem');
|
|
if (typeof(element) != 'undefined' && element != null && event.keyCode === 13){
|
|
$(element).trigger('click');
|
|
}
|
|
|
|
})
|
|
}
|