diff --git a/src/css/luckysheet-core.css b/src/css/luckysheet-core.css index 87514c0..164a0a4 100644 --- a/src/css/luckysheet-core.css +++ b/src/css/luckysheet-core.css @@ -1404,7 +1404,7 @@ body:not(.ewa-ipad) .jfgrid-cols-h-cell-nosel:hover, body:not(.ewa-ipad) .jfgrid margin-top: 2px; display: none; /*transition: all 0.1s;*/ - background-color: rgba(252,195,195, 0.5); + background-color: rgba(194, 194, 194, 0.5); } .jfgrid-rows-h-selected { @@ -1893,7 +1893,7 @@ body:not(.ewa-ipad) .jfgrid-cols-h-cell-nosel:hover, body:not(.ewa-ipad) .jfgrid position: absolute; pointer-events: none; z-index: 16; - border: 1px dashed #C83D3D; + border: 1px dashed #0188fb; margin: -1px 0 0 -1px; display: none; /*transition: all 0.1s;*/ @@ -1981,6 +1981,55 @@ body:not(.ewa-ipad) .jfgrid-cols-h-cell-nosel:hover, body:not(.ewa-ipad) .jfgrid width: 2px; } +.jfgrid-cs-touchhandle{ + display: none; + position: absolute; + width: 16px; + height: 16px; + padding: 5px; + z-index: 10; + pointer-events: auto; + touch-action: auto; +} +.jfgrid-cs-touchhandle:before{ + content: ''; + display: block; + width: 16px; + height: 16px; + border: 0.5px solid rgba(0, 0, 0, 0.15); + background-color: #ffffff; + box-sizing: border-box; + border-radius: 50%; +} +.jfgrid-cs-touchhandle-lt{ + left: -13px; + top: -13px; +} +.jfgrid-cs-touchhandle-lb{ + left: -13px; + bottom: -13px; +} +.jfgrid-cs-touchhandle-rt{ + right: -13px; + top: -13px; +} +.jfgrid-cs-touchhandle-rb{ + right: -13px; + bottom: -13px; +} +.jfgrid-cs-touchhandle .jfgrid-cs-touchhandle-btn{ + position: absolute; + width: 10px; + height: 10px; + left: 8px; + top: 8px; + background-color: #018ffb; + background-position: center; + box-sizing: border-box; + border-radius: 50%; + z-index: 11; +} + #jfgrid-dynamicArray-hightShow { position: absolute; pointer-events: none; diff --git a/src/luckysheet-core.js b/src/luckysheet-core.js index 95aa03c..eea5254 100644 --- a/src/luckysheet-core.js +++ b/src/luckysheet-core.js @@ -372,6 +372,8 @@ '
' + '
' + '
' + + '
' + + '
' + '' + '' + '
' + @@ -672,7 +674,7 @@ jfgrid.jfgridConfigsetting = jfgridConfigsetting; var jfgriddefaultstyle = { - font: 'normal '+ Math.ceil(10*devicePixelRatio) +'pt 微软雅黑, "Helvetica Neue", Helvetica, Arial, "PingFang SC", "Hiragino Sans GB", "Heiti SC", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif', + font: 'normal '+ Math.ceil(10 * window.devicePixelRatio) +'pt 微软雅黑, "Helvetica Neue", Helvetica, Arial, "PingFang SC", "Hiragino Sans GB", "Heiti SC", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif', fillStyle: "#000000", textBaseline: "middle", strokeStyle: "#dfdfdf", @@ -1783,9 +1785,177 @@ }; //设备是移动端 - if(jfgrid.browser.mobilecheck()){ + var mobilecheck = jfgrid.browser.mobilecheck(); + if(mobilecheck){ //去除滚动条 cellMainSrollBarSize = 0; + + //滑动滚动表格 + var jfgrid_touchmove_status = false, + jfgrid_touchmove_startPos = {}, + jfgrid_touchhandle_status = false; + $(document).on("touchstart", "#jfgrid-grid-window-1", function(event){ + jfgrid_touchmove_status = true; + + var touch = event.originalEvent.targetTouches[0]; + jfgrid_touchmove_startPos = { + x: touch.pageX, + y: touch.pageY + } + }) + $(document).on("touchmove", "#jfgrid-grid-window-1", function(event){ + if(event.originalEvent.targetTouches.length > 1 || (event.scale && event.scale !== 1)){ + return; + } + + var touch = event.originalEvent.targetTouches[0]; + + if(jfgrid_touchmove_status){//滚动 + var slideX = touch.pageX - jfgrid_touchmove_startPos.x; + var slideY = touch.pageY - jfgrid_touchmove_startPos.y; + + jfgrid_touchmove_startPos = { + x: touch.pageX, + y: touch.pageY + } + + var scrollLeft = $("#jfgrid-cell-main").scrollLeft(); + var scrollTop = $("#jfgrid-cell-main").scrollTop(); + + scrollLeft -= slideX; + scrollTop -= slideY; + + if(scrollLeft < 0){ + scrollLeft = 0; + } + + if(scrollTop < 0){ + scrollTop = 0; + } + + if(Math.abs(slideX) < Math.abs(slideY)){ + $("#jfgrid-scrollbar-y").scrollTop(scrollTop); + } + else{ + $("#jfgrid-scrollbar-x").scrollLeft(scrollLeft); + } + } + else if(jfgrid_touchhandle_status){//选区 + var mouse = jfgrid.mouseposition(touch.pageX, touch.pageY); + var x = mouse[0] + $("#jfgrid-cell-main").scrollLeft(); + var y = mouse[1] + $("#jfgrid-cell-main").scrollTop(); + + var rowLocation = jfgrid.rowLocation(y), + row = rowLocation[1], + row_pre = rowLocation[0], + row_index = rowLocation[2]; + var colLocation = jfgrid.colLocation(x), + col = colLocation[1], + col_pre = colLocation[0], + col_index = colLocation[2]; + + var last = $.extend(true, {}, jfgird_select_save[jfgird_select_save.length - 1]); + + var 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]; + } + + var 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]; + } + + var changeparam = jfgrid.menuButton.mergeMoveMain(columnseleted, rowseleted, last, top, height, left, width); + 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["column"] = columnseleted; + + last["left_move"] = left; + last["width_move"] = width; + last["top_move"] = top; + last["height_move"] = height; + + jfgird_select_save[jfgird_select_save.length - 1] = last; + + jfgrid.selectHightlightShow(); + + jfgrid.freezen.scrollFreezen(); + } + + event.stopPropagation(); + }) + $(document).on("touchend", function(event){ + jfgrid_touchmove_status = false; + jfgrid_touchmove_startPos = {}; + + jfgrid_touchhandle_status = false; + }) + + //滑动选择选区 + $(document).on("touchstart", ".jfgrid-cs-touchhandle", function(event){ + jfgrid_touchhandle_status = true; + event.stopPropagation(); + }) + + //禁止微信下拉拖出微信背景 + document.addEventListener("touchmove", function(event){ + event.preventDefault(); + }, { + passive: false + }) } jfgrid.controlHistory = { @@ -25069,10 +25239,57 @@ if(i == 0){ if(jfgird_select_save.length == 1){ - $("#jfgrid-cell-selected-boxs #jfgrid-cell-selected").css({ "left": jfgird_select_save[i]["left_move"], "width": jfgird_select_save[i]["width_move"], "top": jfgird_select_save[i]["top_move"], "height": jfgird_select_save[i]["height_move"], "display": "block", "border": "1px solid #0188fb" }).find(".jfgrid-cs-draghandle").css("display", "block").end().find(".jfgrid-cs-fillhandle").css("display", "block"); + if(mobilecheck){//移动端 + $("#jfgrid-cell-selected-boxs #jfgrid-cell-selected").css({ + "left": jfgird_select_save[i]["left_move"], + "width": jfgird_select_save[i]["width_move"], + "top": jfgird_select_save[i]["top_move"], + "height": jfgird_select_save[i]["height_move"], + "display": "block", + "border": "1px solid #0188fb" + }) + .find(".jfgrid-cs-draghandle") + .css("display", "block") + .end() + .find(".jfgrid-cs-fillhandle") + .css("display", "none") + .end() + .find(".jfgrid-cs-touchhandle") + .css("display", "block"); + } + else{ + $("#jfgrid-cell-selected-boxs #jfgrid-cell-selected").css({ + "left": jfgird_select_save[i]["left_move"], + "width": jfgird_select_save[i]["width_move"], + "top": jfgird_select_save[i]["top_move"], + "height": jfgird_select_save[i]["height_move"], + "display": "block", + "border": "1px solid #0188fb" + }) + .find(".jfgrid-cs-draghandle") + .css("display", "block") + .end() + .find(".jfgrid-cs-fillhandle") + .css("display", "block") + .end() + .find(".jfgrid-cs-touchhandle") + .css("display", "none"); + } } else{ - $("#jfgrid-cell-selected-boxs #jfgrid-cell-selected").css({ "left": jfgird_select_save[i]["left_move"], "width": jfgird_select_save[i]["width_move"], "top": jfgird_select_save[i]["top_move"], "height": jfgird_select_save[i]["height_move"], "display": "block", "border": "1px solid rgba(1, 136, 251, 0.15)" }).find(".jfgrid-cs-draghandle").css("display", "none").end().find(".jfgrid-cs-fillhandle").css("display", "none"); + $("#jfgrid-cell-selected-boxs #jfgrid-cell-selected").css({ + "left": jfgird_select_save[i]["left_move"], + "width": jfgird_select_save[i]["width_move"], + "top": jfgird_select_save[i]["top_move"], + "height": jfgird_select_save[i]["height_move"], + "display": "block", + "border": "1px solid rgba(1, 136, 251, 0.15)" + }) + .find(".jfgrid-cs-draghandle") + .css("display", "none") + .end() + .find(".jfgrid-cs-fillhandle") + .css("display", "none"); } } else{ @@ -25081,10 +25298,23 @@ if(i == jfgird_select_save.length - 1){ //focus 取选区数组最后一个 - $("#jfgrid-cell-selected-focus").css({ "left": jfgird_select_save[i]["left"], "width": jfgird_select_save[i]["width"], "top": jfgird_select_save[i]["top"], "height": jfgird_select_save[i]["height"], "display": "block" }); + $("#jfgrid-cell-selected-focus").css({ + "left": jfgird_select_save[i]["left"], + "width": jfgird_select_save[i]["width"], + "top": jfgird_select_save[i]["top"], + "height": jfgird_select_save[i]["height"], + "display": "block" + }); //行列数 - jfgrid.jfgrid_count_show(jfgird_select_save[i]["left_move"], jfgird_select_save[i]["top_move"], jfgird_select_save[i]["width_move"], jfgird_select_save[i]["height_move"], [r1, r2], [c1, c2]); - // + jfgrid.jfgrid_count_show( + jfgird_select_save[i]["left_move"], + jfgird_select_save[i]["top_move"], + jfgird_select_save[i]["width_move"], + jfgird_select_save[i]["height_move"], + [r1, r2], + [c1, c2] + ); + //左上角选择区域框 jfgrid.formula.fucntionboxshow(rf, cf); } } @@ -27489,7 +27719,6 @@ }); $("#jfgrid-cell-main, #jfgridTableContent").mousedown(function (event) { - // $("#jfgrid-cell-main, #jfgridTableContent").on('pointerdown', function (event) { $("#jfgrid-cell-selected").find(".jfgrid-cs-fillhandle").css("cursor","default").end().find(".jfgrid-cs-draghandle").css("cursor","default"); $("#jfgrid-cell-main, #jfgridTableContent, #jfgrid-sheettable_0").css("cursor","default"); @@ -28065,8 +28294,10 @@ jfgrid.freezen.scrollAdaptOfselect(); } - jfgridactiveCell(); - + if(!mobilecheck){ //非移动端聚焦输入框 + jfgridactiveCell(); + } + if(jfgrid.server.allowUpdate){ //允许编辑后的后台更新时 jfgrid.server.saveParam("mv", jfgrid.currentSheetIndex, jfgird_select_save); @@ -28554,7 +28785,7 @@ } } } - + return; } @@ -28638,6 +28869,7 @@ } } else { + if (ctrlKey || event.metaKey) { if (shiftKey) { if (!jfgrid_shiftkeydown) { @@ -32230,7 +32462,6 @@ jfgrid.jfcountfunc = jfcountfunc; $(document).mousemove(function (event) { - // $(document).on('pointermove', function (event) { jfgrid.postil.overshow(event); //有批注显示 clearInterval(jfautoscrollTimeout); @@ -33219,7 +33450,6 @@ }); $(document).mouseup(function (event) { - // $(document).on('pointerup', function (event) { //数据窗格主体 if (jfgird_select_status) { @@ -49163,7 +49393,7 @@ //清除canvas左上角区域 防止列标题栏序列号溢出显示 - jfgridTableContent.clearRect(0, 0, rowHeaderWidth, columeHeaderHeight); + jfgridTableContent.clearRect(0, 0, rowHeaderWidth * devicePixelRatio, columeHeaderHeight * devicePixelRatio); } function jfgridDrawgridColumnTitle(scrollWidth, drawWidth, offsetLeft) { @@ -49260,7 +49490,7 @@ jfgridTableContent.stroke(); //清除canvas左上角区域 防止列标题栏序列号溢出显示 - jfgridTableContent.clearRect(0, 0, rowHeaderWidth, columeHeaderHeight); + jfgridTableContent.clearRect(0, 0, rowHeaderWidth * devicePixelRatio, columeHeaderHeight * devicePixelRatio); } function jfgridDrawMain(scrollWidth, scrollHeight, drawWidth, drawHeight, offsetLeft, offsetTop, columnOffsetCell, rowOffsetCell, mycanvas, ctx, ctxdata) { @@ -54297,6 +54527,7 @@ // },3000); })(); + window.jfgrid = jfgrid; window.jfgridConfigsetting = jfgridConfigsetting; return jfgrid; diff --git a/src/luckysheet-function.js b/src/luckysheet-function.js index c2b925d..9f3685b 100644 --- a/src/luckysheet-function.js +++ b/src/luckysheet-function.js @@ -4753,7 +4753,9 @@ setTimeout(function() { var value = $editer.text(), valuetxt = value; + console.log(value, kcode) if (value.length > 0 && value.substr(0, 1) == "=" && kcode != 229) { + // if (value.length > 0 && value.substr(0, 1) == "=") { value = jfgrid.formula.functionHTMLGenerate(value); value1 = jfgrid.formula.functionHTMLGenerate(value1txt);