From ca02b31427d39ef622d613a83d3a2b20e01c3c97 Mon Sep 17 00:00:00 2001 From: cdswyda Date: Fri, 17 Sep 2021 15:53:58 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20undo=20rodo=20=E4=B8=8D=E5=8F=AF?= =?UTF-8?q?=E7=94=A8=E6=97=B6=E5=9B=BE=E6=A0=87=E7=81=B0=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controllers/handler.js | 6 ++++++ src/controllers/listener.js | 20 ++++++++++++++++++++ src/controllers/toolbar.js | 4 ++-- src/css/luckysheet-core.css | 5 +++++ 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/controllers/handler.js b/src/controllers/handler.js index 4c3adde..f04bf81 100644 --- a/src/controllers/handler.js +++ b/src/controllers/handler.js @@ -5046,9 +5046,15 @@ export default function luckysheetHandler() { //回退 重做 按钮 $("#luckysheet-icon-undo").click(function (event) { + if ($this.hasClass('disabled')) { + return; + } controlHistory.redo(event); }); $("#luckysheet-icon-redo").click(function (event) { + if ($this.hasClass('disabled')) { + return; + } controlHistory.undo(event); }); diff --git a/src/controllers/listener.js b/src/controllers/listener.js index f9d7aba..0aa2b36 100644 --- a/src/controllers/listener.js +++ b/src/controllers/listener.js @@ -7,6 +7,20 @@ import method from '../global/method'; import { getluckysheetfile } from '../methods/get' import { toJson } from '../global/api'; +let undoTimer,redoTimer; +function undoAccessible(len) { + clearTimeout(undoTimer); + undoTimer = setTimeout(() => { + $('#luckysheet-icon-undo')[len ? 'removeClass' : 'addClass']('disabled'); + }, 10); +} +function redoAccessible(len) { + clearTimeout(redoTimer); + redoTimer = setTimeout(() => { + $('#luckysheet-icon-redo')[len ? 'removeClass' : 'addClass']('disabled'); + }, 10); +} + const initListener = function(){ // createProxy(Store,['jfredo']); createProxy(Store, 'jfredo',(target, property, val, receiver)=>{ @@ -14,7 +28,13 @@ const initListener = function(){ // 钩子函数 method.createHookFunction('updated',val) } + undoAccessible(Store.jfredo.length); } ); + createProxy(Store, 'jfundo',(target, property, val, receiver)=>{ + redoAccessible(Store.jfundo.length); + } ); + + createProxy(Store, 'asyncLoad', (target, property, val, receiver)=>{ if(property === 'length' && val === 0){ diff --git a/src/controllers/toolbar.js b/src/controllers/toolbar.js index 65c4ed9..af3b390 100644 --- a/src/controllers/toolbar.js +++ b/src/controllers/toolbar.js @@ -106,7 +106,7 @@ export function createToolbarHtml() { const fontarray = locale().fontarray; const defaultFmtArray = locale().defaultFmt; const htmlMap = { - undo: `
@@ -120,7 +120,7 @@ export function createToolbarHtml() {
`, - redo: `
diff --git a/src/css/luckysheet-core.css b/src/css/luckysheet-core.css index 96fb6fa..de178ca 100644 --- a/src/css/luckysheet-core.css +++ b/src/css/luckysheet-core.css @@ -7352,3 +7352,8 @@ fieldset[disabled] .btn-danger.focus { white-space: nowrap; } +#luckysheet-icon-undo.disabled, +#luckysheet-icon-redo.disabled { + cursor: default; + opacity: .4; +} \ No newline at end of file From d6770e5832de57e9b26d473d174d3fd3e5b38518 Mon Sep 17 00:00:00 2001 From: cdswyda Date: Fri, 17 Sep 2021 15:55:38 +0800 Subject: [PATCH 2/2] fix --- src/controllers/handler.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/handler.js b/src/controllers/handler.js index f04bf81..094cafd 100644 --- a/src/controllers/handler.js +++ b/src/controllers/handler.js @@ -5046,13 +5046,13 @@ export default function luckysheetHandler() { //回退 重做 按钮 $("#luckysheet-icon-undo").click(function (event) { - if ($this.hasClass('disabled')) { + if ($(this).hasClass('disabled')) { return; } controlHistory.redo(event); }); $("#luckysheet-icon-redo").click(function (event) { - if ($this.hasClass('disabled')) { + if ($(this).hasClass('disabled')) { return; } controlHistory.undo(event);