From 06eca10b342277b172ec8a026df52fd0ba415f45 Mon Sep 17 00:00:00 2001 From: yanxiong Date: Wed, 13 Jul 2022 19:39:53 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20enable=20=E6=96=B9=E6=B3=95=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=8F=82=E6=95=B0=20allowCreate=EF=BC=8C=E7=94=A8?= =?UTF-8?q?=E4=BA=8E=E6=8E=A7=E5=88=B6=E5=9C=A8=20enable=20=E4=B9=8B?= =?UTF-8?q?=E5=90=8E=E6=98=AF=E5=90=A6=E6=94=AF=E6=8C=81=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E7=BB=98=E5=88=B6=E7=89=A9=EF=BC=8C=E8=8B=A5=E4=BC=A0=E9=80=92?= =?UTF-8?q?=20false=20=E8=A1=A8=E7=A4=BA=E5=8F=AA=E5=85=81=E8=AE=B8?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E4=B8=8D=E6=94=AF=E6=8C=81=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/docs/method.md | 36 ++++++++++++++++++------------------ src/mode/base-mode.ts | 23 ++++++++++------------- 2 files changed, 28 insertions(+), 31 deletions(-) diff --git a/docs/docs/method.md b/docs/docs/method.md index 8967969..b461372 100644 --- a/docs/docs/method.md +++ b/docs/docs/method.md @@ -3,21 +3,21 @@ title: 方法 hide: true --- -| 名称 | 说明 | 类型 | -| ------------------- | -------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| enable | 开启绘制 | `() => void` | -| disable | 关闭绘制 | `() => void` | -| getData | 获取当期绘制数据 | `() => Feature[]` | -| setData | 覆盖并设置绘制数据 | `(features: Feature[]) => void` | -| clear | 清空绘制数据 | `(disable: boolean) => void` | -| show | 显示该 Draw 下所有的绘制物 | `() => void` | -| hide | 隐藏该 Draw 下所有的绘制物 | `() => void` | -| setActiveFeature | 将目标 Feature 设为激活态,可传目标 `Feature` 本身或其 `id`,传 `null` 或 `undefined` 则取消激活态 | `(feature: Feature | string | null | undefined) => void` | -| resetFeatures | 清除当前正在绘制的绘制物,同时将激活的绘制物置为普通态 | `() => void` | -| removeActiveFeature | 删除当前激活状态的绘制物 | `() => void` | -| removeFeature | 删除目标 Feature ,将目标 Feature 设为激活态,可传目标 Feature 本身或其 `properties` 中 `id` 字段 | `(feature: Feature | string) => void` | -| isEnable | 判断当前 Draw 是否在绘制状态 | `() => boolean` | -| setHelper | 设置当前绘制提示文案,建议通过配置进行自定义而非手动调用该方法 | `(content: string | Element | DocumentFragment) => boolean` | -| revertHistory | 回退至上一次保存的绘制状态 | `() => SourceData | undefined` | -| redoHistory | 重置到上一次回退 | `() => SourceData | undefined` | -| destroy | 销毁当前 Draw 实例 | `() => void` | +| 名称 | 说明 | 类型 | +| ------------------- | ------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| enable | 开启绘制,参数 `allowCreate` 用于控制 `enable` 之后是否支持新增绘制物,传 `false` 表示只允许编辑不允许新增,默认为 `true` | `(allowCreate: boolean = true) => void` | +| disable | 关闭绘制 | `() => void` | +| getData | 获取当期绘制数据 | `() => Feature[]` | +| setData | 覆盖并设置绘制数据 | `(features: Feature[]) => void` | +| clear | 清空绘制数据 | `(disable: boolean) => void` | +| show | 显示该 Draw 下所有的绘制物 | `() => void` | +| hide | 隐藏该 Draw 下所有的绘制物 | `() => void` | +| setActiveFeature | 将目标 Feature 设为激活态,可传目标 `Feature` 本身或其 `id`,传 `null` 或 `undefined` 则取消激活态 | `(feature: Feature | string | null | undefined) => void` | +| resetFeatures | 清除当前正在绘制的绘制物,同时将激活的绘制物置为普通态 | `() => void` | +| removeActiveFeature | 删除当前激活状态的绘制物 | `() => void` | +| removeFeature | 删除目标 Feature ,将目标 Feature 设为激活态,可传目标 Feature 本身或其 `properties` 中 `id` 字段 | `(feature: Feature | string) => void` | +| isEnable | 判断当前 Draw 是否在绘制状态 | `() => boolean` | +| setHelper | 设置当前绘制提示文案,建议通过配置进行自定义而非手动调用该方法 | `(content: string | Element | DocumentFragment) => boolean` | +| revertHistory | 回退至上一次保存的绘制状态 | `() => SourceData | undefined` | +| redoHistory | 重置到上一次回退 | `() => SourceData | undefined` | +| destroy | 销毁当前 Draw 实例 | `() => void` | diff --git a/src/mode/base-mode.ts b/src/mode/base-mode.ts index da714f4..9c3fd6f 100644 --- a/src/mode/base-mode.ts +++ b/src/mode/base-mode.ts @@ -63,6 +63,9 @@ export abstract class BaseMode< */ protected enabled = false; + // 在 enable 时传入,用于判断当前是否支持添加操作 + protected allowCreate = false; + /** * scene相关事件管理 * @protected @@ -93,7 +96,7 @@ export abstract class BaseMode< const data = this.getData(); const { multiple, maxCount } = this.options; const drawItem = data.find((item) => item.properties.isDraw); - if (!this.enabled) { + if (!this.enabled || !this.allowCreate) { return false; } if ((multiple && maxCount <= 0) || drawItem) { @@ -465,19 +468,16 @@ export abstract class BaseMode< } /** - * 启用Drawer + * 启用 Drawer + * @param allowCreate 是否支持添加操作 */ - enable() { - if (this.enabled) { - return; - } - this.enabled = true; + enable(allowCreate = true) { + this.allowCreate = allowCreate; + this.setHelper(this.addable ? 'draw' : null); this.resetCursor(); + this.enabled = true; this.bindEnableEvent(); this.addCount = 0; - if (this.addable) { - this.setHelper('draw'); - } setTimeout(() => { this.emit(DrawEvent.Enable, this); }, 0); @@ -487,9 +487,6 @@ export abstract class BaseMode< * 禁用Drawer */ disable() { - if (!this.enabled) { - return; - } this.resetFeatures(); this.enabled = false; this.setCursor(null);