From 9153bc799db2aea947f2ba70a7b947daca55b844 Mon Sep 17 00:00:00 2001 From: wpxp123456 <2677556700@qq.com> Date: Fri, 11 Dec 2020 15:27:26 +0800 Subject: [PATCH 1/3] feat(feature): closeWebsocket api and ctrl ; feature fix #328, fix #326 --- docs/zh/guide/api.md | 6 ++++++ src/controllers/keyboard.js | 37 ++++++++++++++++++++++++++++++++++++- src/controllers/server.js | 7 +++---- src/global/api.js | 12 ++++++++++++ src/utils/util.js | 33 +++++++++++++++++++++++++++++++++ 5 files changed, 90 insertions(+), 5 deletions(-) diff --git a/docs/zh/guide/api.md b/docs/zh/guide/api.md index f5f11ee..2b3796e 100644 --- a/docs/zh/guide/api.md +++ b/docs/zh/guide/api.md @@ -2550,6 +2550,12 @@ Luckysheet针对常用的数据操作需求,开放了主要功能的API,开 传入目标语言,切换到对应的语言界面 +### closeWebsocket() + +- **说明**: + + 关闭websocket连接 + ### getRangeByTxt([txt]) - **说明**: diff --git a/src/controllers/keyboard.js b/src/controllers/keyboard.js index 3567174..f769da1 100644 --- a/src/controllers/keyboard.js +++ b/src/controllers/keyboard.js @@ -18,10 +18,12 @@ import imageCtrl from './imageCtrl'; import { getByteLen, + getNowDateTime, luckysheetactiveCell, } from '../utils/util'; import { getSheetIndex } from '../methods/get'; import { hasPartMC, isEditMode } from '../global/validate'; +import { luckysheetRangeLast } from '../global/cursorPos'; import formula from '../global/formula'; import cleargridelement from '../global/cleargridelement'; import tooltip from '../global/tooltip'; @@ -273,7 +275,7 @@ export function keyboardInitial(){ 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); @@ -435,6 +437,17 @@ export function keyboardInitial(){ luckysheetMoveHighlightRange2("right", "rangeOfSelect"); } + else if (kcode == 186 || kcode == 222) { + 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); + + let value = getNowDateTime(2); + $("#luckysheet-rich-text-editor").html(value); + luckysheetRangeLast($("#luckysheet-rich-text-editor")[0]); + formula.functionInputHanddler($("#luckysheet-functionbox-cell"), $("#luckysheet-rich-text-editor"), kcode); + } } else if (kcode == 66) {//Ctrl + B 加粗 $("#luckysheet-icon-bold").click(); @@ -695,6 +708,28 @@ export function keyboardInitial(){ luckysheetMoveHighlightCell2("right", "rangeOfSelect"); } + else if (kcode == 186) {//Ctrl + ; 填充系统日期 + 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); + + let value = getNowDateTime(1); + $("#luckysheet-rich-text-editor").html(value); + luckysheetRangeLast($("#luckysheet-rich-text-editor")[0]); + formula.functionInputHanddler($("#luckysheet-functionbox-cell"), $("#luckysheet-rich-text-editor"), kcode); + } + else if (kcode == 222) {//Ctrl + ' 填充系统时间 + 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); + + let value = getNowDateTime(2); + $("#luckysheet-rich-text-editor").html(value); + luckysheetRangeLast($("#luckysheet-rich-text-editor")[0]); + formula.functionInputHanddler($("#luckysheet-functionbox-cell"), $("#luckysheet-rich-text-editor"), kcode); + } else if (String.fromCharCode(kcode).toLocaleUpperCase() == "A") {//Ctrl + A 全选 // $("#luckysheet-left-top").trigger("mousedown"); // $(document).trigger("mouseup"); diff --git a/src/controllers/server.js b/src/controllers/server.js index 0f86499..1e3158f 100644 --- a/src/controllers/server.js +++ b/src/controllers/server.js @@ -157,10 +157,9 @@ const server = { //连接建立时触发 _this.websocket.onopen = function() { - - console.info(locale().websocket.success); - hideloading(); - _this.wxErrorCount = 0; + console.info(locale().websocket.success); + hideloading(); + _this.wxErrorCount = 0; //防止websocket长时间不发送消息导致断连 setInterval(function(){ diff --git a/src/global/api.js b/src/global/api.js index 01b0965..ebb9134 100644 --- a/src/global/api.js +++ b/src/global/api.js @@ -6237,6 +6237,18 @@ export function changLang(lang = 'zh'){ } +/** + * 关闭websocket连接 + */ +export function closeWebsocket(){ + if(server.websocket == null){ + return; + } + + server.websocket.close(); +} + + /** * 根据范围字符串转换为range数组 * @param {String} txt 范围字符串 diff --git a/src/utils/util.js b/src/utils/util.js index 8a32f41..293c4d7 100644 --- a/src/utils/util.js +++ b/src/utils/util.js @@ -74,6 +74,38 @@ function getObjType(obj) { return map[toString.call(obj)]; } +//获取当前日期时间 +function getNowDateTime(format) { + let now = new Date(); + let year = now.getFullYear(); //得到年份 + let month = now.getMonth(); //得到月份 + let date = now.getDate(); //得到日期 + let day = now.getDay(); //得到周几 + let hour = now.getHours(); //得到小时 + let minu = now.getMinutes(); //得到分钟 + let sec = now.getSeconds(); //得到秒 + + month = month + 1; + if (month < 10) month = "0" + month; + if (date < 10) date = "0" + date; + if (hour < 10) hour = "0" + hour; + if (minu < 10) minu = "0" + minu; + if (sec < 10) sec = "0" + sec; + + let time = ''; + + //日期 + if(format == 1) { + time = year + "-" + month + "-" + date; + } + //日期时间 + else if(format == 2) { + time = year + "-" + month + "-" + date+ " " + hour + ":" + minu + ":" + sec; + } + + return time; +} + //颜色 16进制转rgb function hexToRgb(hex) { let color = [], rgb = []; @@ -807,6 +839,7 @@ export { common_extend, replaceHtml, getObjType, + getNowDateTime, hexToRgb, rgbTohex, ABCatNum, From 4900b4a0f2a82528e130d7281bb1f153ed3297fe Mon Sep 17 00:00:00 2001 From: wpxp123456 <2677556700@qq.com> Date: Fri, 11 Dec 2020 15:36:43 +0800 Subject: [PATCH 2/3] fix(bug): bug bug fix #331 --- src/controllers/keyboard.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/controllers/keyboard.js b/src/controllers/keyboard.js index f769da1..ce2ac9d 100644 --- a/src/controllers/keyboard.js +++ b/src/controllers/keyboard.js @@ -815,7 +815,7 @@ export function keyboardInitial(){ 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")) { + if (parseInt($inputbox.css("top")) > 0 || Store.luckysheet_cell_selected_move || Store.luckysheet_cell_selected_extend || $(event.target).hasClass("formulaInputFocus") || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) { return; } @@ -823,7 +823,7 @@ export function keyboardInitial(){ 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")) { + if (parseInt($inputbox.css("top")) > 0 || Store.luckysheet_cell_selected_move || Store.luckysheet_cell_selected_extend || $(event.target).hasClass("formulaInputFocus") || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) { return; } @@ -831,7 +831,7 @@ export function keyboardInitial(){ 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")) { + if (parseInt($inputbox.css("top")) > 0 || Store.luckysheet_cell_selected_move || Store.luckysheet_cell_selected_extend || $(event.target).hasClass("formulaInputFocus") || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) { return; } @@ -839,7 +839,7 @@ export function keyboardInitial(){ 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")) { + if (parseInt($inputbox.css("top")) > 0 || Store.luckysheet_cell_selected_move || Store.luckysheet_cell_selected_extend || $(event.target).hasClass("formulaInputFocus") || $("#luckysheet-singleRange-dialog").is(":visible") || $("#luckysheet-multiRange-dialog").is(":visible")) { return; } From f8d48570e62e5086a07aa9baa8d31fdbfbfac7ce Mon Sep 17 00:00:00 2001 From: flowerField Date: Fri, 11 Dec 2020 16:59:04 +0800 Subject: [PATCH 3/3] =?UTF-8?q?showsheetbarConfig.sheet=20=3D=3D=20false?= =?UTF-8?q?=20=E5=B7=A5=E4=BD=9C=E8=A1=A8=E4=B8=8D=E5=8F=AF=E8=A7=81=20?= =?UTF-8?q?=E5=88=A0=E9=99=A4sheet=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controllers/sheetmanage.js | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/src/controllers/sheetmanage.js b/src/controllers/sheetmanage.js index 0f6c11b..6119652 100644 --- a/src/controllers/sheetmanage.js +++ b/src/controllers/sheetmanage.js @@ -274,21 +274,38 @@ const sheetmanage = { }, setSheetHide: function(index) { let _this = this; - - Store.luckysheetfile[_this.getSheetIndex(index)].hide = 1; + let currentIdx = _this.getSheetIndex(index); + Store.luckysheetfile[currentIdx].hide = 1; let luckysheetcurrentSheetitem = $("#luckysheet-sheets-item" + index); luckysheetcurrentSheetitem.hide(); $("#luckysheet-sheet-area div.luckysheet-sheets-item").removeClass("luckysheet-sheets-item-active"); - let indicator = luckysheetcurrentSheetitem.nextAll(":visible"); - if (luckysheetcurrentSheetitem.nextAll(":visible").length > 0) { - indicator = indicator.eq(0).data("index"); - } - else { - indicator = luckysheetcurrentSheetitem.prevAll(":visible").eq(0).data("index"); + let indicator; + if(luckysheetConfigsetting.showsheetbarConfig.sheet){ + indicator = luckysheetcurrentSheetitem.nextAll(":visible"); + if (luckysheetcurrentSheetitem.nextAll(":visible").length > 0) { + indicator = indicator.eq(0).data("index"); + } + else { + indicator = luckysheetcurrentSheetitem.prevAll(":visible").eq(0).data("index"); + } + }else{ + let nextActiveIdx , showSheetIdxs = []; + Store.luckysheetfile.forEach((ele,index)=>{ + if(1 !== ele.hide) showSheetIdxs.push(index); + }); + let len = showSheetIdxs.length; + if(1 === len){ + nextActiveIdx = showSheetIdxs[0]; + }else{ + nextActiveIdx = showSheetIdxs[len-1] > currentIdx ? showSheetIdxs.find(e => e>currentIdx ) : showSheetIdxs[len-1]; + } + + indicator = Store.luckysheetfile[nextActiveIdx].index; } + $("#luckysheet-sheets-item" + indicator).addClass("luckysheet-sheets-item-active"); _this.changeSheetExec(indicator);