From 7255c51d7b46523ff423ee5560b78d18f8535821 Mon Sep 17 00:00:00 2001 From: inkforze Date: Tue, 13 Oct 2020 13:20:59 +0300 Subject: [PATCH 1/6] fix(validation of "0" values): fix --- src/controllers/dataVerificationCtrl.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/dataVerificationCtrl.js b/src/controllers/dataVerificationCtrl.js index 5251501..c9959de 100644 --- a/src/controllers/dataVerificationCtrl.js +++ b/src/controllers/dataVerificationCtrl.js @@ -1,6 +1,6 @@ import { replaceHtml } from '../utils/util'; import formula from '../global/formula'; -import { isRealNum } from '../global/validate'; +import { isRealNum, isRealNull } from '../global/validate'; import { isdatetime, diff } from '../global/datecontroll'; import { luckysheetrefreshgrid } from '../global/refresh'; import tooltip from '../global/tooltip'; @@ -1020,7 +1020,7 @@ const dataVerificationCtrl = { //数据验证未通过 let cellValue = getcellvalue(r, c, null); - if(cellValue == null || cellValue == ""){ + if(isRealNull(cellValue)){ return; } From 0ee5f31f5ce84c1a7fab2af17ff102790603e3bb Mon Sep 17 00:00:00 2001 From: inkforze Date: Tue, 13 Oct 2020 13:24:18 +0300 Subject: [PATCH 2/6] fix(fix focus after formula edit): fix --- src/controllers/formulaBar.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/controllers/formulaBar.js b/src/controllers/formulaBar.js index 7ee5da4..63c6815 100644 --- a/src/controllers/formulaBar.js +++ b/src/controllers/formulaBar.js @@ -59,13 +59,16 @@ export function formulaBarInitial(){ 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-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) { From f64ba54455e2a757c72fb4c0110fef2cc5ccdaab Mon Sep 17 00:00:00 2001 From: inkforze Date: Tue, 13 Oct 2020 13:37:19 +0300 Subject: [PATCH 3/6] fix(event name): fix --- src/controllers/formulaBar.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/formulaBar.js b/src/controllers/formulaBar.js index 63c6815..29b5329 100644 --- a/src/controllers/formulaBar.js +++ b/src/controllers/formulaBar.js @@ -227,11 +227,11 @@ export function formulaBarInitial(){ event.stopPropagation(); }); - $("#luckysheet-formula-functionrange").on("mousedown", ".luckysheet-highlight", function (e) { + $("#luckysheet-formula-functionrange").on("mousedown", ".luckysheet-highlight", function (event) { formula.rangeResize = $(this).data("type");//开始状态resize formula.rangeResizeIndex = $(this).parent().attr("rangeindex"); - let mouse = mouseposition(e.pageX, e.pageY), + let mouse = mouseposition(event.pageX, event.pageY), scrollLeft = $("#luckysheet-cell-main").scrollLeft(), scrollTop = $("#luckysheet-cell-main").scrollTop(); let x = mouse[0] + scrollLeft; From b83447d61805192d0310b20e97821eb01b790fb7 Mon Sep 17 00:00:00 2001 From: liuyang Date: Thu, 15 Oct 2020 19:10:39 +0800 Subject: [PATCH 4/6] fix(selection bug): fix it --- gulpfile.js | 3 ++- src/controllers/print.js | 5 +++-- src/controllers/select.js | 35 +++++++++++++--------------------- src/controllers/sheetmanage.js | 11 +++++++---- src/global/createdom.js | 4 ++-- 5 files changed, 27 insertions(+), 31 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index cd5c358..bbfd919 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -183,7 +183,8 @@ async function core() { file: 'dist/luckysheet.esm.js', format: 'esm', name: 'luckysheet', - sourcemap: true + sourcemap: true, + inlineDynamicImports:true, }); } diff --git a/src/controllers/print.js b/src/controllers/print.js index 3c92f45..a266ed3 100644 --- a/src/controllers/print.js +++ b/src/controllers/print.js @@ -20,10 +20,11 @@ let ExcelPlaceholder = { // Get the pixel value per millimeter function getOneMmsPx (){ let div = document.createElement("div"); - div.id = "mm"; div.style.width = "1mm"; document.querySelector("body").appendChild(div); - let mm1 = document.getElementById("mm").getBoundingClientRect(); + let mm1 = div.getBoundingClientRect(); + let w = mm1.width; + $(div).remove(); return mm1.width; } diff --git a/src/controllers/select.js b/src/controllers/select.js index 416baa7..a4c1b01 100644 --- a/src/controllers/select.js +++ b/src/controllers/select.js @@ -80,19 +80,10 @@ function selectHightlightShow(isRestore=false) { Store.luckysheet_select_save[i]["top"] = row_pre_f; Store.luckysheet_select_save[i]["height"] = row_f - row_pre_f - 1; - if(isRestore){ - Store.luckysheet_select_save[i]["left_move"] = col_pre_f; - Store.luckysheet_select_save[i]["width_move"] = col_f - col_pre_f - 1; - Store.luckysheet_select_save[i]["top_move"] = row_pre_f; - Store.luckysheet_select_save[i]["height_move"] = row_f - row_pre_f - 1; - } - else{ - - Store.luckysheet_select_save[i]["left_move"] = col_pre; - Store.luckysheet_select_save[i]["width_move"] = col - col_pre - 1; - Store.luckysheet_select_save[i]["top_move"] = row_pre; - Store.luckysheet_select_save[i]["height_move"] = row - row_pre - 1; - } + Store.luckysheet_select_save[i]["left_move"] = col_pre; + Store.luckysheet_select_save[i]["width_move"] = col - col_pre - 1; + Store.luckysheet_select_save[i]["top_move"] = row_pre; + Store.luckysheet_select_save[i]["height_move"] = row - row_pre - 1; if(i == 0){ if(Store.luckysheet_select_save.length == 1){ @@ -201,16 +192,16 @@ function selectTitlesShow(rangeArr,isRestore=false) { for(let i = 0; i < s.length; i++){ let r1 = s[i]["row"][0], r2 = s[i]["row"][1], c1 = s[i]["column"][0], c2 = s[i]["column"][1]; - if(isRestore){ - let margeset = menuButton.mergeborer(Store.flowdata, r1, c1); - if(!!margeset){ - r1 = margeset.row[2]; - r2 = margeset.row[3]; + // if(isRestore){ + // let margeset = menuButton.mergeborer(Store.flowdata, r1, c1); + // if(!!margeset){ + // r1 = margeset.row[2]; + // r2 = margeset.row[3]; - c1 = margeset.column[2]; - c2 = margeset.column[3]; - } - } + // c1 = margeset.column[2]; + // c2 = margeset.column[3]; + // } + // } //行、列标题栏 rowTitleMap = selectTitlesMap(rowTitleMap, r1, r2); diff --git a/src/controllers/sheetmanage.js b/src/controllers/sheetmanage.js index 6b3e548..bf008a6 100644 --- a/src/controllers/sheetmanage.js +++ b/src/controllers/sheetmanage.js @@ -691,7 +691,7 @@ const sheetmanage = { colwidth = c2 + 1; } - Store.flowdata = data; + // Store.flowdata = data; luckysheetcreatedom(colwidth, rowheight, data, menu, title); @@ -721,7 +721,8 @@ const sheetmanage = { let execF = function(){ _this.mergeCalculation(file["index"]); - editor.webWorkerFlowDataCache(Store.flowdata);//worker存数据 + _this.setSheetParam(false); + // editor.webWorkerFlowDataCache(Store.flowdata);//worker存数据 _this.storeSheetParam(); _this.restoreselect(); _this.CacheNotLoadControll = []; @@ -874,7 +875,7 @@ const sheetmanage = { file["zoomRatio"] = Store.zoomRatio; }, - setSheetParam: function(isload) { + setSheetParam: function(isload=true) { let index = this.getSheetIndex(Store.currentSheetIndex); let file = Store.luckysheetfile[index]; @@ -896,7 +897,9 @@ const sheetmanage = { luckysheetFreezen.freezenverticaldata = file["freezen"].vertical == null ? null : file["freezen"].vertical.freezenverticaldata; } - rhchInit(Store.flowdata.length, Store.flowdata[0].length); + if(isload){ + rhchInit(Store.flowdata.length, Store.flowdata[0].length); + } //批注 luckysheetPostil.buildAllPs(Store.flowdata); diff --git a/src/global/createdom.js b/src/global/createdom.js index de4b301..82f6d48 100644 --- a/src/global/createdom.js +++ b/src/global/createdom.js @@ -114,8 +114,8 @@ export default function luckysheetcreatedom(colwidth, rowheight, data, menu, tit $("#luckysheet-cols-h-c").height((Store.columeHeaderHeight-1.5)); $("#luckysheet-left-top").css({width:Store.rowHeaderWidth-1.5, height:Store.columeHeaderHeight-1.5}); - //批注 - luckysheetPostil.buildAllPs(Store.flowdata); + // //批注 + // luckysheetPostil.buildAllPs(Store.flowdata); $("#luckysheet_info_detail_input").val(luckysheetConfigsetting.title); } \ No newline at end of file From 8fb1a88669d772a0067edb614e5974ada7301c9c Mon Sep 17 00:00:00 2001 From: wbfsa Date: Fri, 16 Oct 2020 14:12:45 +0800 Subject: [PATCH 5/6] fix(image fuzzy): fix it --- src/css/luckysheet-core.css | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/css/luckysheet-core.css b/src/css/luckysheet-core.css index 468d90a..d3c3f59 100644 --- a/src/css/luckysheet-core.css +++ b/src/css/luckysheet-core.css @@ -6746,7 +6746,12 @@ fieldset[disabled] .btn-danger.focus { left: 0; top: 0; cursor: move; + image-rendering: -moz-crisp-edges; /* Firefox */ + image-rendering: -o-crisp-edges; /* Opera */ + image-rendering: -webkit-optimize-contrast; /*Webkit (non-standard naming) */ + image-rendering: crisp-edges; } + #luckysheet-modal-dialog-cropping::before{ content: ""; outline: 1px solid #fff; @@ -7039,6 +7044,10 @@ fieldset[disabled] .btn-danger.focus { box-shadow:none; background: none; box-shadow:none; + image-rendering: -moz-crisp-edges; /* Firefox */ + image-rendering: -o-crisp-edges; /* Opera */ + image-rendering: -webkit-optimize-contrast; /*Webkit (non-standard naming) */ + image-rendering: crisp-edges; } .luckysheet-modal-dialog-image .luckysheet-modal-dialog-content, #luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-content{ From 1337178a991b4aa99a6e255e50d69e2c8ca47b82 Mon Sep 17 00:00:00 2001 From: wbfsa Date: Fri, 16 Oct 2020 18:14:11 +0800 Subject: [PATCH 6/6] fix(image zoom): fix --- src/controllers/imageCtrl.js | 70 ++++++++++++++++++------------------ src/controllers/zoom.js | 7 ++++ src/css/luckysheet-core.css | 2 -- 3 files changed, 43 insertions(+), 36 deletions(-) diff --git a/src/controllers/imageCtrl.js b/src/controllers/imageCtrl.js index 2749b6b..3144047 100644 --- a/src/controllers/imageCtrl.js +++ b/src/controllers/imageCtrl.js @@ -97,17 +97,19 @@ const imageCtrl = { let src = imgItem.src; let imgItemParam = _this.getImgItemParam(imgItem); - let width = imgItemParam.width; - let height = imgItemParam.height; - let left = imgItemParam.left; - let top = imgItemParam.top; + let width = imgItemParam.width*Store.zoomRatio; + let height = imgItemParam.height*Store.zoomRatio; + let left = imgItemParam.left*Store.zoomRatio; + let top = imgItemParam.top*Store.zoomRatio; let position = imgItemParam.position; + let borderWidth = imgItem.border.width; + return `
- +
-
+
`; }, getSliderHtml: function() { @@ -352,10 +354,10 @@ const imageCtrl = { let item = _this.images[id]; let imgItemParam = _this.getImgItemParam(item); - let width = imgItemParam.width; - let height = imgItemParam.height; - let left = imgItemParam.left; - let top = imgItemParam.top; + let width = imgItemParam.width*Store.zoomRatio; + let height = imgItemParam.height*Store.zoomRatio; + let left = imgItemParam.left*Store.zoomRatio; + let top = imgItemParam.top*Store.zoomRatio; let position = imgItemParam.position; $("#luckysheet-modal-dialog-activeImage").show().css({ @@ -368,19 +370,19 @@ const imageCtrl = { $("#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-content").css({ "background-image": "url(" + item.src + ")", - "background-size": item.default.width + "px " + item.default.height + "px", - "background-position": -item.crop.offsetLeft + "px " + -item.crop.offsetTop + "px" + "background-size": item.default.width*Store.zoomRatio + "px " + item.default.height*Store.zoomRatio + "px", + "background-position": -item.crop.offsetLeft*Store.zoomRatio + "px " + -item.crop.offsetTop*Store.zoomRatio + "px" }) $("#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-border").css({ - "border-width": item.border.width, + "border-width": item.border.width*Store.zoomRatio, "border-style": item.border.style, "border-color": item.border.color, - "border-radius": item.border.radius, - "left": -item.border.width, - "right": -item.border.width, - "top": -item.border.width, - "bottom": -item.border.width, + "border-radius": item.border.radius*Store.zoomRatio, + "left": -item.border.width*Store.zoomRatio, + "right": -item.border.width*Store.zoomRatio, + "top": -item.border.width*Store.zoomRatio, + "bottom": -item.border.width*Store.zoomRatio, }) _this.sliderHtmlShow(); @@ -589,10 +591,10 @@ const imageCtrl = { let imgItem = _this.images[_this.currentImgId]; let imgItemParam = _this.getImgItemParam(imgItem); - let width = imgItemParam.width; - let height = imgItemParam.height; - let left = imgItemParam.left; - let top = imgItemParam.top; + let width = imgItemParam.width*Store.zoomRatio; + let height = imgItemParam.height*Store.zoomRatio; + let left = imgItemParam.left*Store.zoomRatio; + let top = imgItemParam.top*Store.zoomRatio; let position = imgItemParam.position; $("#" + _this.currentImgId).show().css({ @@ -603,20 +605,20 @@ const imageCtrl = { "position": position }); $("#" + _this.currentImgId + " img").css({ - "width": imgItem.default.width, - "height": imgItem.default.height, - "left": -imgItem.crop.offsetLeft, - "top": -imgItem.crop.offsetTop + "width": imgItem.default.width*Store.zoomRatio, + "height": imgItem.default.height*Store.zoomRatio, + "left": -imgItem.crop.offsetLeft*Store.zoomRatio, + "top": -imgItem.crop.offsetTop*Store.zoomRatio }); $("#" + _this.currentImgId + " .luckysheet-modal-dialog-border").css({ - "border-width": imgItem.border.width, + "border-width": imgItem.border.width*Store.zoomRatio, "border-style": imgItem.border.style, "border-color": imgItem.border.color, - "border-radius": imgItem.border.radius, - "left": -imgItem.border.width, - "right": -imgItem.border.width, - "top": -imgItem.border.width, - "bottom": -imgItem.border.width, + "border-radius": imgItem.border.radius*Store.zoomRatio, + "left": -imgItem.border.width*Store.zoomRatio, + "right": -imgItem.border.width*Store.zoomRatio, + "top": -imgItem.border.width*Store.zoomRatio, + "bottom": -imgItem.border.width*Store.zoomRatio, }) _this.currentImgId = null; @@ -955,7 +957,7 @@ const imageCtrl = { imgItem.default.top = imgItemParam.top + changeSize - imgItem.crop.offsetTop; } else{ - if(imgItemParam.top + imgItemParam.height > row){ + if(imgItemParam.top + imgItemParam.height >= row-2){ if(imgItemParam.top < row + changeSize){ let scaleY = (imgItemParam.height + changeSize) / imgItemParam.height; imgItem.default.height = Math.round(imgItem.default.height * scaleY); @@ -1012,7 +1014,7 @@ const imageCtrl = { imgItem.default.left = imgItemParam.left + changeSize - imgItem.crop.offsetLeft; } else{ - if(imgItemParam.left + imgItemParam.width > col){ + if(imgItemParam.left + imgItemParam.width >= col-2){ if(imgItemParam.left < col + changeSize){ let scaleX = (imgItemParam.width + changeSize) / imgItemParam.width; imgItem.default.width = Math.round(imgItem.default.width * scaleX); diff --git a/src/controllers/zoom.js b/src/controllers/zoom.js index df50d37..34d3569 100644 --- a/src/controllers/zoom.js +++ b/src/controllers/zoom.js @@ -5,6 +5,7 @@ import sheetmanage from './sheetmanage'; import {changeSheetContainerSize} from './resize'; import { jfrefreshgrid_rhcw } from '../global/refresh'; import server from './server'; +import imageCtrl from './imageCtrl'; @@ -29,6 +30,12 @@ export function zoomChange(ratio){ Store.zoomRatio = ratio; let currentSheet = sheetmanage.getSheetByIndex(); + + //图片 + imageCtrl.images = currentSheet.images; + imageCtrl.allImagesShow(); + imageCtrl.init(); + if(currentSheet.config==null){ currentSheet.config = {}; } diff --git a/src/css/luckysheet-core.css b/src/css/luckysheet-core.css index 8cfe1e2..1662096 100644 --- a/src/css/luckysheet-core.css +++ b/src/css/luckysheet-core.css @@ -4346,7 +4346,6 @@ fieldset[disabled] .btn-danger.focus { } .luckysheet-modal-dialog-slider-list-title { - width: 100%; height: 20px; line-height: 25px; padding: 0px 5px; @@ -4480,7 +4479,6 @@ fieldset[disabled] .btn-danger.focus { font-size: 13px; height: 20px; line-height: 20px; - width: 100%; padding-left: 5px; }