From 5038508842f24da14c0a8663ddfbe8c9cf7f13fe Mon Sep 17 00:00:00 2001 From: cdswyda Date: Fri, 17 Sep 2021 11:56:49 +0800 Subject: [PATCH 1/7] =?UTF-8?q?feat:=20=E5=AE=9E=E7=8E=B0=20sheetCreateBef?= =?UTF-8?q?ore=20sheetCreateAfter=20=E9=92=A9=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/zh/guide/config.md | 6 +++--- src/controllers/sheetmanage.js | 12 +++++++++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/docs/zh/guide/config.md b/docs/zh/guide/config.md index 6283601..acc34da 100644 --- a/docs/zh/guide/config.md +++ b/docs/zh/guide/config.md @@ -1256,15 +1256,15 @@ Luckysheet开放了更细致的自定义配置选项,分别有 ## 工作表 -### sheetCreatekBefore -(TODO) +### sheetCreateBefore + - 类型:Function - 默认值:null - 作用:创建sheet页前触发,sheet页新建也包含数据透视表新建 ------------ ### sheetCreateAfter -(TODO) + - 类型:Function - 默认值:null - 作用:创建sheet页后触发,sheet页新建也包含数据透视表新建 diff --git a/src/controllers/sheetmanage.js b/src/controllers/sheetmanage.js index 3a5efe8..b5ed2bf 100644 --- a/src/controllers/sheetmanage.js +++ b/src/controllers/sheetmanage.js @@ -228,6 +228,10 @@ const sheetmanage = { // alert("非编辑模式下不允许该操作!"); return; } + // 钩子 sheetCreateBefore + if(!method.createHookFunction('sheetCreateBefore')){ + return; + } let _this = this; @@ -271,6 +275,8 @@ const sheetmanage = { } _this.changeSheetExec(index, isPivotTable, true); + + // 钩子 sheetCreateAfter 不应该在这里 应在绘制完成后 因此在 changeSheet 实现 }, setSheetHide: function(index) { let _this = this; @@ -1147,6 +1153,11 @@ const sheetmanage = { $("#luckysheet-cell-main #luckysheet-multipleRange-show").empty(); server.multipleIndex = 0; } + let file = Store.luckysheetfile[_this.getSheetIndex(index)] + // 钩子 sheetCreateAfter + if (isNewSheet) { + method.createHookFunction('sheetCreateAfter', { sheet: file }); + } // 钩子函数 method.createHookFunction('sheetActivate', index, isPivotInitial, isNewSheet); @@ -1157,7 +1168,6 @@ const sheetmanage = { _this.storeSheetParamALL(); _this.setCurSheet(index); - let file = Store.luckysheetfile[_this.getSheetIndex(index)] if (!!file.isPivotTable) { Store.luckysheetcurrentisPivotTable = true; From 4412c3aa79c446f470c7b04bd028e40adc05642e Mon Sep 17 00:00:00 2001 From: cdswyda Date: Fri, 17 Sep 2021 13:43:31 +0800 Subject: [PATCH 2/7] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20sheetHideBefor?= =?UTF-8?q?e=20sheetHideAfter=20=E9=92=A9=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/zh/guide/config.md | 18 ++++++++++++++++++ src/controllers/sheetmanage.js | 6 ++++++ 2 files changed, 24 insertions(+) diff --git a/docs/zh/guide/config.md b/docs/zh/guide/config.md index acc34da..7900be7 100644 --- a/docs/zh/guide/config.md +++ b/docs/zh/guide/config.md @@ -1271,6 +1271,24 @@ Luckysheet开放了更细致的自定义配置选项,分别有 - 参数: - {Object} [sheet]: 当前新创建的sheet页的配置 +------------ +### sheetHideBefore + +- 类型:Function +- 默认值:null +- 作用:隐藏sheet页前触发 +- 参数: + - {Object} [sheet]: 将要隐藏的sheet页的配置 + +------------ +### sheetHideAfter + +- 类型:Function +- 默认值:null +- 作用:隐藏sheet页后触发 +- 参数: + - {Object} [sheet]: 要隐藏的sheet页的配置 + ------------ ### sheetMoveBefore (TODO) diff --git a/src/controllers/sheetmanage.js b/src/controllers/sheetmanage.js index b5ed2bf..6b5ebcb 100644 --- a/src/controllers/sheetmanage.js +++ b/src/controllers/sheetmanage.js @@ -281,6 +281,10 @@ const sheetmanage = { setSheetHide: function(index) { let _this = this; let currentIdx = _this.getSheetIndex(index); + // 钩子 sheetHideBefore + if(!method.createHookFunction('sheetHideBefore', {sheet: Store.luckysheetfile[currentIdx]})){ + return; + } Store.luckysheetfile[currentIdx].hide = 1; let luckysheetcurrentSheetitem = $("#luckysheet-sheets-item" + index); @@ -317,6 +321,8 @@ const sheetmanage = { _this.changeSheetExec(indicator); server.saveParam("sh", luckysheetcurrentSheetitem.data("index"), 1, { "op": "hide", "cur": indicator }); + // 钩子 sheetHideAfter + method.createHookFunction('sheetHideAfter', {sheet: Store.luckysheetfile[currentIdx]}); }, setSheetShow: function(index) { let _this = this; From a849d52191aba742449915f3d446929abb55aa57 Mon Sep 17 00:00:00 2001 From: cdswyda Date: Fri, 17 Sep 2021 13:58:59 +0800 Subject: [PATCH 3/7] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20sheetShowBefor?= =?UTF-8?q?e=20sheetShowAfter=20=E9=92=A9=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/zh/guide/config.md | 18 ++++++++++++++++++ src/controllers/sheetmanage.js | 10 ++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/docs/zh/guide/config.md b/docs/zh/guide/config.md index 7900be7..9f8c760 100644 --- a/docs/zh/guide/config.md +++ b/docs/zh/guide/config.md @@ -1289,6 +1289,24 @@ Luckysheet开放了更细致的自定义配置选项,分别有 - 参数: - {Object} [sheet]: 要隐藏的sheet页的配置 +------------ +### sheetShowBefore + +- 类型:Function +- 默认值:null +- 作用:显示sheet页前触发 +- 参数: + - {Object} [sheet]: 将要显示的sheet页的配置 + +------------ +### sheetShowAfter + +- 类型:Function +- 默认值:null +- 作用:显示sheet页后触发 +- 参数: + - {Object} [sheet]: 要显示的sheet页的配置 + ------------ ### sheetMoveBefore (TODO) diff --git a/src/controllers/sheetmanage.js b/src/controllers/sheetmanage.js index 6b5ebcb..e154c4b 100644 --- a/src/controllers/sheetmanage.js +++ b/src/controllers/sheetmanage.js @@ -326,11 +326,17 @@ const sheetmanage = { }, setSheetShow: function(index) { let _this = this; - - Store.luckysheetfile[_this.getSheetIndex(index)].hide = 0; + const file = Store.luckysheetfile[_this.getSheetIndex(index)] + // 钩子 sheetShowBefore + if(!method.createHookFunction('sheetShowBefore', {sheet: file})){ + return; + } + file.hide = 0; _this.changeSheetExec(index); server.saveParam("sh", index, 0, {"op": "show", "cur": null}); + // 钩子 sheetShowAfter + method.createHookFunction('sheetShowAfter', {sheet: file}); }, sheetMaxIndex: 0, ordersheet: function(property) { From 0d17df93ec98c6af11d3467085ce6ed1c6f47a43 Mon Sep 17 00:00:00 2001 From: cdswyda Date: Fri, 17 Sep 2021 14:10:29 +0800 Subject: [PATCH 4/7] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20sheetCopyBefor?= =?UTF-8?q?e=20=E3=80=81=20sheetCopyAfter=20=E9=92=A9=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/zh/guide/config.md | 18 ++++++++++++++++++ src/controllers/sheetmanage.js | 20 ++++++++++++++++---- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/docs/zh/guide/config.md b/docs/zh/guide/config.md index 9f8c760..90704b6 100644 --- a/docs/zh/guide/config.md +++ b/docs/zh/guide/config.md @@ -1271,6 +1271,24 @@ Luckysheet开放了更细致的自定义配置选项,分别有 - 参数: - {Object} [sheet]: 当前新创建的sheet页的配置 +------------ +### sheetCopyBefore + +- 类型:Function +- 默认值:null +- 作用:拷贝创建sheet页前触发,sheet页新建也包含数据透视表新建 +- 参数: + - {Object} [targetSheet]: 被拷贝的sheet页配置 + - {Object} [copySheet]: 拷贝得到的sheet页的配置 +------------ +### sheetCopyAfter + +- 类型:Function +- 默认值:null +- 作用:拷贝创建sheet页后触发,sheet页新建也包含数据透视表新建 +- 参数: + - {Object} [sheet]: 当前创建的sheet页的配置 + ------------ ### sheetHideBefore diff --git a/src/controllers/sheetmanage.js b/src/controllers/sheetmanage.js index e154c4b..ec070c2 100644 --- a/src/controllers/sheetmanage.js +++ b/src/controllers/sheetmanage.js @@ -478,6 +478,14 @@ const sheetmanage = { copyjson.order = order; copyjson.index = index; copyjson.name = _this.generateCopySheetName(Store.luckysheetfile, copyjson.name); + + // 钩子 sheetCreateBefore + if(!method.createHookFunction('sheetCopyBefore', { + targetSheet: Store.luckysheetfile[copyarrindex], + copySheet: copyjson + })){ + return; + } let colorset = ''; if(copyjson.color != null){ @@ -496,7 +504,7 @@ const sheetmanage = { server.saveParam("shc", index, { "copyindex": copyindex, "name": copyjson.name }); - _this.changeSheetExec(index); + _this.changeSheetExec(index, undefined, undefined, true); _this.reOrderAllSheet(); if (Store.clearjfundo) { @@ -1149,7 +1157,7 @@ const sheetmanage = { } } }, - changeSheet: function(index, isPivotInitial, isNewSheet) { + changeSheet: function(index, isPivotInitial, isNewSheet, isCopySheet) { if(isEditMode()){ // alert("非编辑模式下不允许该操作!"); return; @@ -1170,6 +1178,10 @@ const sheetmanage = { if (isNewSheet) { method.createHookFunction('sheetCreateAfter', { sheet: file }); } + // 钩子 sheetCopyAfter + if (isCopySheet) { + method.createHookFunction('sheetCopyAfter', { sheet: file }); + } // 钩子函数 method.createHookFunction('sheetActivate', index, isPivotInitial, isNewSheet); @@ -1489,7 +1501,7 @@ const sheetmanage = { return null; }, - changeSheetExec: function(index, isPivotInitial, isNewSheet) { + changeSheetExec: function(index, isPivotInitial, isNewSheet, isCopySheet) { let $sheet = $("#luckysheet-sheets-item" + index); @@ -1498,7 +1510,7 @@ const sheetmanage = { $sheet.addClass("luckysheet-sheets-item-active").show(); cleargridelement(); - this.changeSheet(index, isPivotInitial, isNewSheet); + this.changeSheet(index, isPivotInitial, isNewSheet, isCopySheet); $("#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu").hide(); From 55668a72c2e90f3934d304ad5fc7b2cbecde98cc Mon Sep 17 00:00:00 2001 From: cdswyda Date: Fri, 17 Sep 2021 14:15:11 +0800 Subject: [PATCH 5/7] =?UTF-8?q?feat=EF=BC=9A=20=E6=96=B0=E5=A2=9E=20sheetD?= =?UTF-8?q?eleteBefore=20=20sheetDeleteAfter=20=E9=92=A9=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/zh/guide/config.md | 4 ++-- src/controllers/sheetmanage.js | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/docs/zh/guide/config.md b/docs/zh/guide/config.md index 90704b6..5e48a6f 100644 --- a/docs/zh/guide/config.md +++ b/docs/zh/guide/config.md @@ -1348,7 +1348,7 @@ Luckysheet开放了更细致的自定义配置选项,分别有 ------------ ### sheetDeleteBefore -(TODO) + - 类型:Function - 默认值:null - 作用:sheet删除前 @@ -1357,7 +1357,7 @@ Luckysheet开放了更细致的自定义配置选项,分别有 ------------ ### sheetDeleteAfter -(TODO) + - 类型:Function - 默认值:null - 作用:sheet删除后 diff --git a/src/controllers/sheetmanage.js b/src/controllers/sheetmanage.js index ec070c2..f8ee432 100644 --- a/src/controllers/sheetmanage.js +++ b/src/controllers/sheetmanage.js @@ -586,6 +586,14 @@ const sheetmanage = { } let arrIndex = _this.getSheetIndex(index); + + const file = Store.luckysheetfile[currentIdx]; + + // 钩子 sheetDeleteBefore + if(!method.createHookFunction('sheetDeleteBefore', { sheet: file })){ + return; + } + _this.setSheetHide(index); $("#luckysheet-sheets-item" + index).remove(); @@ -600,6 +608,8 @@ const sheetmanage = { removedsheet[0].type = "deleteSheet"; Store.jfredo.push(removedsheet[0]); } + // 钩子 sheetDeleteAfter + method.createHookFunction('sheetDeleteAfter', { sheet: file }); }, nulldata: null, getGridData: function(d) { From 13cd4b004d04bddaa2b38324fea3ef1bdae5d555 Mon Sep 17 00:00:00 2001 From: cdswyda Date: Fri, 17 Sep 2021 14:27:05 +0800 Subject: [PATCH 6/7] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=88=A0=E9=99=A4?= =?UTF-8?q?=20sheet=20=E9=A1=B5=E6=97=B6=E8=A7=A6=E5=8F=91=E9=9A=90?= =?UTF-8?q?=E8=97=8Fsheet=E9=92=A9=E5=AD=90=E7=9A=84=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 | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/controllers/sheetmanage.js b/src/controllers/sheetmanage.js index f8ee432..884273d 100644 --- a/src/controllers/sheetmanage.js +++ b/src/controllers/sheetmanage.js @@ -278,11 +278,11 @@ const sheetmanage = { // 钩子 sheetCreateAfter 不应该在这里 应在绘制完成后 因此在 changeSheet 实现 }, - setSheetHide: function(index) { + setSheetHide: function(index, isDelete) { let _this = this; let currentIdx = _this.getSheetIndex(index); // 钩子 sheetHideBefore - if(!method.createHookFunction('sheetHideBefore', {sheet: Store.luckysheetfile[currentIdx]})){ + if(!isDelete && !method.createHookFunction('sheetHideBefore', {sheet: Store.luckysheetfile[currentIdx]})){ return; } Store.luckysheetfile[currentIdx].hide = 1; @@ -322,7 +322,9 @@ const sheetmanage = { server.saveParam("sh", luckysheetcurrentSheetitem.data("index"), 1, { "op": "hide", "cur": indicator }); // 钩子 sheetHideAfter - method.createHookFunction('sheetHideAfter', {sheet: Store.luckysheetfile[currentIdx]}); + if (!isDelete) { + method.createHookFunction('sheetHideAfter', {sheet: Store.luckysheetfile[currentIdx]}); + } }, setSheetShow: function(index) { let _this = this; @@ -587,14 +589,14 @@ const sheetmanage = { let arrIndex = _this.getSheetIndex(index); - const file = Store.luckysheetfile[currentIdx]; + const file = Store.luckysheetfile[arrIndex]; // 钩子 sheetDeleteBefore if(!method.createHookFunction('sheetDeleteBefore', { sheet: file })){ return; } - _this.setSheetHide(index); + _this.setSheetHide(index, true); $("#luckysheet-sheets-item" + index).remove(); $("#luckysheet-datavisual-selection-set-" + index).remove(); From 0f99de220c241044b90883bdfe969142c6b0645c Mon Sep 17 00:00:00 2001 From: cdswyda Date: Fri, 17 Sep 2021 14:41:48 +0800 Subject: [PATCH 7/7] =?UTF-8?q?feat:=20=E5=AE=9E=E7=8E=B0=20sheetEditNameB?= =?UTF-8?q?efore=20sheetEditNameAfter=20=E9=92=A9=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/zh/guide/config.md | 4 ++-- src/controllers/sheetBar.js | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/docs/zh/guide/config.md b/docs/zh/guide/config.md index 5e48a6f..952b8c4 100644 --- a/docs/zh/guide/config.md +++ b/docs/zh/guide/config.md @@ -1366,7 +1366,7 @@ Luckysheet开放了更细致的自定义配置选项,分别有 ------------ ### sheetEditNameBefore -(TODO) + - 类型:Function - 默认值:null - 作用:sheet修改名称前 @@ -1376,7 +1376,7 @@ Luckysheet开放了更细致的自定义配置选项,分别有 ------------ ### sheetEditNameAfter -(TODO) + - 类型:Function - 默认值:null - 作用:sheet修改名称后 diff --git a/src/controllers/sheetBar.js b/src/controllers/sheetBar.js index 356cd47..6f76ea5 100644 --- a/src/controllers/sheetBar.js +++ b/src/controllers/sheetBar.js @@ -17,6 +17,7 @@ import locale from '../locale/locale'; import Store from '../store'; import luckysheetConfigsetting from './luckysheetConfigsetting'; import {pagerInit} from '../global/api' +import method from '../global/method'; //表格底部名称栏区域 相关事件(增、删、改、隐藏显示、颜色等等) @@ -325,6 +326,11 @@ export function initialSheetBar(){ Store.jfundo.length = 0; Store.jfredo.push(redo); } + // 钩子: sheetEditNameAfter + method.createHookFunction('sheetEditNameAfter', { + i: Store.luckysheetfile[index].index, + oldName: oldtxt, newName: txt + }); }); $("#luckysheet-sheet-area").on("keydown", "span.luckysheet-sheets-item-name", function (e) { @@ -342,6 +348,11 @@ export function initialSheetBar(){ }); $("#luckysheetsheetconfigrename").click(function () { + var $name = luckysheetcurrentSheetitem.find("span.luckysheet-sheets-item-name") + // 钩子 sheetEditNameBefore + if (!method.createHookFunction('sheetEditNameBefore', { i: luckysheetcurrentSheetitem.data('index') , name: $name.text() })){ + return; + } luckysheetsheetnameeditor(luckysheetcurrentSheetitem.find("span.luckysheet-sheets-item-name")); $("#luckysheet-input-box").removeAttr("style"); $("#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu").hide();