import menuButton from './menuButton'; import {luckysheetupdateCell} from './updateCell'; import { keycode } from './constant'; import { luckysheetMoveHighlightCell, } from './sheetMove'; import insertFormula from './insertFormula'; import { rowLocation, colLocation, mouseposition } from '../global/location'; import { isEditMode } from '../global/validate'; import formula from '../global/formula'; import tooltip from '../global/tooltip'; import locale from '../locale/locale'; import Store from '../store'; export function formulaBarInitial(){ //公式栏处理 const _locale = locale(); const locale_formula= _locale.formula; $("#luckysheet-functionbox-cell").focus(function () { if(isEditMode()){//此模式下禁用公式栏 return; } if(Store.luckysheet_select_save.length > 0){ let last = Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1]; let row_index = last["row_focus"], col_index = last["column_focus"]; // let $input = $("#luckysheet-rich-text-editor"),value = $input.text(); // if(value) { // formula.updatecell(row_index, col_index); // } luckysheetupdateCell(row_index, col_index, Store.flowdata, null, true); formula.rangeResizeTo = $("#luckysheet-functionbox-cell"); } }).keydown(function (event) { if(isEditMode()){//此模式下禁用公式栏 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.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"); //$("#luckysheet-functionbox-cell").blur(); $("#luckysheet-rich-text-editor").focus(); } event.preventDefault(); } else if (kcode == keycode.ESC && parseInt($inputbox.css("top")) > 0) { formula.dontupdate(); luckysheetMoveHighlightCell("down", 0, "rangeOfSelect"); //$("#luckysheet-functionbox-cell").blur(); $("#luckysheet-rich-text-editor").focus(); 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) { if ($("#luckysheet-formula-search-c").is(":visible")) { let $up = $("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item-active").prev(); if ($up.length == 0) { $up = $("#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"); $up.addClass("luckysheet-formula-search-item-active"); event.preventDefault(); } } else if (kcode == keycode.DOWN && parseInt($inputbox.css("top")) > 0) { if ($("#luckysheet-formula-search-c").is(":visible")) { let $up = $("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item-active").next(); if ($up.length == 0) { $up = $("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item").first(); } $("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item").removeClass("luckysheet-formula-search-item-active"); $up.addClass("luckysheet-formula-search-item-active"); event.preventDefault(); } } else if (kcode == keycode.LEFT && parseInt($inputbox.css("top")) > 0) { formula.rangeHightlightselected($("#luckysheet-functionbox-cell")); } else if (kcode == keycode.RIGHT && parseInt($inputbox.css("top")) > 0) { formula.rangeHightlightselected($("#luckysheet-functionbox-cell")); } 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 || (event.ctrlKey && kcode == 86)) { formula.functionInputHanddler($("#luckysheet-rich-text-editor"), $("#luckysheet-functionbox-cell"), kcode); } }).click(function () { if(isEditMode()){//此模式下禁用公式栏 return; } formula.rangeHightlightselected($("#luckysheet-functionbox-cell")); }); //公式栏 取消(X)按钮 $("#luckysheet-wa-functionbox-cancel").click(function () { if (!$(this).hasClass("luckysheet-wa-calculate-active")) { return; } //若有参数弹出框,隐藏 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(); } formula.dontupdate(); luckysheetMoveHighlightCell("down", 0, "rangeOfSelect"); }); //公式栏 确认()按钮 $("#luckysheet-wa-functionbox-confirm").click(function () { if (!$(this).hasClass("luckysheet-wa-calculate-active")) { return; } //若有参数弹出框,隐藏 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(); } formula.updatecell(Store.luckysheetCellUpdate[0], Store.luckysheetCellUpdate[1]); luckysheetMoveHighlightCell("down", 0, "rangeOfSelect"); }); //公式栏 fx按钮 $("#luckysheet-wa-functionbox-fx").click(function () { //点击函数查找弹出框 if(Store.luckysheet_select_save.length == 0){ if(isEditMode()){ alert(locale_formula.tipSelectCell); } else{ tooltip.info(locale_formula.tipSelectCell,""); } 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); let cell = Store.flowdata[row_index][col_index]; if(cell != null && cell.f != null){ //单元格有计算 let functionStr = formula.getfunctionParam(cell.f); if(functionStr.fn != null){ //有函数公式 insertFormula.formulaParmDialog(functionStr.fn, functionStr.param); } else{ //无函数公式 insertFormula.formulaListDialog(); } } else{ //单元格无计算 $("#luckysheet-rich-text-editor").html('<span dir="auto" class="luckysheet-formula-text-color">=</span>'); $("#luckysheet-functionbox-cell").html($("#luckysheet-rich-text-editor").html()); insertFormula.formulaListDialog(); } insertFormula.init(); }); //公式选区操作 $("#luckysheet-formula-functionrange").on("mousedown", ".luckysheet-copy", function (event) { formula.rangeMove = true; Store.luckysheet_scroll_status = true; formula.rangeMoveObj = $(this).parent(); formula.rangeMoveIndex = $(this).parent().attr("rangeindex"); let mouse = mouseposition(event.pageX, event.pageY); let x = mouse[0] + $("#luckysheet-cell-main").scrollLeft(); let y = mouse[1] + $("#luckysheet-cell-main").scrollTop(); $("#luckysheet-formula-functionrange-highlight-" + formula.rangeMoveIndex).find(".luckysheet-selection-copy-hc").css("opacity", 0.13); let type = $(this).data("type"); if (type == "top") { y += 3; } else if (type == "right") { x -= 3; } else if (type == "bottom") { y -= 3; } else if (type == "left") { x += 3; } let row_index = rowLocation(y)[2]; let col_index = colLocation(x)[2]; formula.rangeMovexy = [row_index, col_index]; $("#luckysheet-sheettable").css("cursor", "move"); event.stopPropagation(); }); $("#luckysheet-formula-functionrange").on("mousedown", ".luckysheet-highlight", function (event) { formula.rangeResize = $(this).data("type");//开始状态resize formula.rangeResizeIndex = $(this).parent().attr("rangeindex"); let mouse = mouseposition(event.pageX, event.pageY), scrollLeft = $("#luckysheet-cell-main").scrollLeft(), scrollTop = $("#luckysheet-cell-main").scrollTop(); let x = mouse[0] + scrollLeft; let y = mouse[1] + scrollTop; formula.rangeResizeObj = $(this).parent(); $("#luckysheet-formula-functionrange-highlight-" + formula.rangeResizeIndex).find(".luckysheet-selection-copy-hc").css("opacity", 0.13); if (formula.rangeResize == "lt") { x += 3; y += 3; } else if (formula.rangeResize == "lb") { x += 3; y -= 3; } else if (formula.rangeResize == "rt") { x -= 3; y += 3; } else if (formula.rangeResize == "rb") { x -= 3; y -= 3; } let row_location = rowLocation(y), row = row_location[1], row_pre = row_location[0], row_index = row_location[2]; let col_location = colLocation(x), col = col_location[1], col_pre = col_location[0], col_index = col_location[2]; let position = formula.rangeResizeObj.position(); formula.rangeResizexy = [ col_pre, row_pre, formula.rangeResizeObj.width(), formula.rangeResizeObj.height(), position.left + scrollLeft, position.top + scrollTop, col, row ]; formula.rangeResizeWinH = $("#luckysheet-cell-main")[0].scrollHeight; formula.rangeResizeWinW = $("#luckysheet-cell-main")[0].scrollWidth; Store.luckysheet_scroll_status = true; event.stopPropagation(); }); }