欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

LogicFlow內(nèi)置菜單插件實(shí)例詳解

 更新時(shí)間:2023年01月29日 11:01:15   作者:小鑫同學(xué)  
這篇文章主要為大家介紹了LogicFlow內(nèi)置菜單插件實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

推薦幾個(gè)好用的工具

進(jìn)入正題

LogicFlow 是一款流程圖編輯框架,提供了一系列流程圖交互、編輯所必需的功能和靈活的節(jié)點(diǎn)自定義、插件等拓展機(jī)制。

LogicFlow支持前端研發(fā)自定義開(kāi)發(fā)各種邏輯編排場(chǎng)景,如流程圖、ER圖、BPMN流程等。在工作審批配置、機(jī)器人邏輯編排、無(wú)代碼平臺(tái)流程配置都有較好的應(yīng)用。

這一節(jié)將講解快速上手 LogicFlow 流程圖編輯框架的內(nèi)置菜單插件,項(xiàng)目整體基于Vue3+Vite3+Ts4開(kāi)發(fā),為幫助還為熟練使用 Vue3 和 Typescript 語(yǔ)法的小伙伴提供便利,如果你已經(jīng)很熟練在Vue3中的開(kāi)發(fā)習(xí)慣,建議直接訪問(wèn) LogicFlow 將獲取完整的入門(mén)指南。

1. 菜單插件安裝配置:

菜單插件的安裝和配置同上一節(jié)的內(nèi)置插件配置,同樣是將導(dǎo)入的 Menu 對(duì)象在LF實(shí)例化時(shí)傳入 plugins 選項(xiàng)。

默認(rèn)的菜單支持情況如下:

節(jié)點(diǎn)右鍵菜單刪除復(fù)制編輯文案
邊右鍵菜單刪除?編輯文案
畫(huà)布右鍵菜單???

2. 菜單項(xiàng)配置:

下面表格中列出的就是每個(gè)菜單項(xiàng)所支持的配置選項(xiàng),僅有 callback 是必傳選項(xiàng):

字段類型作用是否必須描述
textstring文案菜單項(xiàng)展示的文案
classNamestringclass名稱每一項(xiàng)默認(rèn)class為lf-menu-item,設(shè)置了此字段,calss會(huì)在原來(lái)的基礎(chǔ)上添加className。
iconboolean是否創(chuàng)建icon的span展位如果簡(jiǎn)單的文案不能豐富表示菜單,可以加個(gè)icon設(shè)置為true,對(duì)應(yīng)的菜單項(xiàng)會(huì)增加class為lf-menu-icon的span,通過(guò)為其設(shè)置背景的方式,豐富菜單的表示,一般與className配合使用。
callbackFunction點(diǎn)擊后執(zhí)行的回調(diào)?三種菜單回調(diào)中分別可以拿到節(jié)點(diǎn)數(shù)據(jù)/邊數(shù)據(jù)/事件信息。

3. 追加菜單選項(xiàng):

默認(rèn)的菜單肯定是不能夠覆蓋實(shí)際的業(yè)務(wù)場(chǎng)景的,所以菜單插件安裝后提供了 addMenuConfig 來(lái)擴(kuò)充原有的菜單項(xiàng),擴(kuò)充菜單仍然需要在渲染前操作:

下面這段代碼配置分別為節(jié)點(diǎn)右鍵菜單添加了分享和屬性兩個(gè)菜單,邊右鍵菜單添加了屬性菜單,畫(huà)布右鍵菜單添加了分享菜單。

const menuConfig = {
  nodeMenu: [
    {
      text: '分享',
      callback() {
        alert('分享成功!');
      }
    },
    {
      text: '屬性',
      callback(node: any) {
        alert(`
          節(jié)點(diǎn)id:${node.id}
          節(jié)點(diǎn)類型:${node.type}
          節(jié)點(diǎn)坐標(biāo):(x: ${node.x}, y: ${node.y})`
        );
      },
    },
  ],
  edgeMenu: [
    {
      text: '屬性',
      callback(edge: any) {
        alert(`
          邊id:${edge.id}
          邊類型:${edge.type}
          邊坐標(biāo):(x: ${edge.x}, y: ${edge.y})
          源節(jié)點(diǎn)id:${edge.sourceNodeId}
          目標(biāo)節(jié)點(diǎn)id:${edge.targetNodeId}`
        );
      },
    },
  ],
  graphMenu: [
    {
      text: '分享',
      callback() {
        alert('分享成功!');
      }
    },
  ],
};
lf.value.extension.menu.addMenuConfig(menuConfig);

4. 重置菜單選項(xiàng):

當(dāng)默認(rèn)的菜單項(xiàng)不夠使用時(shí)可以追加新的菜單選項(xiàng)進(jìn)入,當(dāng)不需要提供的菜單時(shí)就需要重置掉自帶的這幾個(gè)菜單項(xiàng)目,可以按照下面的代碼操作:

edgeMenu: false, // 刪除默認(rèn)的邊右鍵菜單
graphMenu: [], // 覆蓋默認(rèn)的邊右鍵菜單,與false表現(xiàn)一樣

5. 指定類型元素配置菜單:

上面對(duì)菜單的增加和重置都是基于比較大的范圍做的操作,菜單項(xiàng)看起來(lái)都一模一樣的,那么為不同類型的元素如何配置不同的菜單項(xiàng)呢?接著往下操作:

lf.value.extension.menu.setMenuByType({
    type: 'rect',
    menu: [
      {
        text: '分享',
        callback() {
          alert('分享成功ByType!');
        }
      },
    ]
})

PS:上面的代碼把節(jié)點(diǎn)類型為 rect 的菜單替換為了僅有一個(gè)分享菜單項(xiàng),其它的按類型配置相同。

6. 指定業(yè)務(wù)狀態(tài)設(shè)置菜單:

不同的業(yè)務(wù)節(jié)點(diǎn)會(huì)擁有不同的狀態(tài),不同的狀態(tài)下支持的菜單項(xiàng)也是不相同的。

  • 在自定義節(jié)點(diǎn)時(shí)根據(jù)不同的業(yè)務(wù)狀態(tài)設(shè)置菜單項(xiàng);
  • 在自定義節(jié)點(diǎn)中無(wú)法直接使用LF實(shí)例,需要通過(guò) graphModel 來(lái)派發(fā)事件進(jìn)行消息通知;
  • 優(yōu)先級(jí):指定業(yè)務(wù)狀態(tài)設(shè)置菜單 > 指定類型元素配置菜單 > 通用菜單配置 > 默認(rèn)菜單。

下面的代碼是很經(jīng)典的自定義業(yè)務(wù)節(jié)點(diǎn)的代碼,其中需要說(shuō)明的是 isDisabledNode 為節(jié)點(diǎn)預(yù)留的 properties 屬性掛在的擴(kuò)展業(yè)務(wù)節(jié)點(diǎn),eventCenter.emit() 自定義業(yè)務(wù)節(jié)點(diǎn)內(nèi)派發(fā)事件的函數(shù),還需要配置對(duì)應(yīng)的接收函數(shù)來(lái)處理:

import { RectNode, RectNodeModel } from '@logicflow/core';
class CustomNodeModel extends RectNodeModel {
  setAttributes() {
    this.stroke = '#1E90FF';
    this.fill = '#F0F8FF';
    this.radius = 10;
    const { properties: { isDisabledNode } } = this;
    if (!isDisabledNode) {
      // 單獨(dú)為非禁用的元素設(shè)置菜單。
      this.menu = [
        {
          text: 'del',
          callback: (node: any) => {
            this.graphModel.deleteNode(node.id);
            this.graphModel.eventCenter.emit('custom:event', node);
          },
        },
        {
          text: 'edit',
          callback: (node: any) => {
            this.graphModel.setElementStateById(node.id, 2);
          },
        },
        {
          text: 'copy',
          callback: (node: any) => {
            this.graphModel.cloneNode(node.id);
          },
        },
      ];
    }
  }
}
export default {
    type: "CustomNode",
    view: RectNode,
    model: CustomNodeModel,
}

補(bǔ)充監(jiān)聽(tīng)事件函數(shù):

lf.value.on('custom:event', (r) => {
  console.log(r)
});

總結(jié)

這一節(jié)的內(nèi)容就到此結(jié)束了,代碼量相對(duì)校多,很多配置也依賴前面幾節(jié)的學(xué)習(xí),還有對(duì)于自定義Edge的添加菜單也是類似的操作,到此內(nèi)置插件的使用就到此告一段落了,接著還有最后一個(gè)小節(jié),就是要自定義插件,自定義插件將更有益于代碼的復(fù)用,期待一下吧~

更多關(guān)于LogicFlow內(nèi)置菜單插件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue后臺(tái)返回base64圖片無(wú)法顯示的解決

    vue后臺(tái)返回base64圖片無(wú)法顯示的解決

    這篇文章主要介紹了vue后臺(tái)返回base64圖片無(wú)法顯示的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • effect返回runner單測(cè)實(shí)現(xiàn)示例詳解

    effect返回runner單測(cè)實(shí)現(xiàn)示例詳解

    這篇文章主要為大家介紹了effect返回runner單測(cè)實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • webstorm建立vue-cli腳手架的傻瓜式教程

    webstorm建立vue-cli腳手架的傻瓜式教程

    這篇文章主要給大家介紹了關(guān)于webstorm建立vue-cli腳手架的傻瓜式教程,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 淺談vue中關(guān)于checkbox數(shù)據(jù)綁定v-model指令的個(gè)人理解

    淺談vue中關(guān)于checkbox數(shù)據(jù)綁定v-model指令的個(gè)人理解

    這篇文章主要介紹了淺談vue中關(guān)于checkbox數(shù)據(jù)綁定v-model指令的個(gè)人理解,v-model用于表單的數(shù)據(jù)綁定很常見(jiàn),下面就來(lái)詳細(xì)的介紹一下
    2018-11-11
  • vue如何安裝使用Quill富文本編輯器

    vue如何安裝使用Quill富文本編輯器

    這篇文章主要為大家詳細(xì)介紹了vue如何安裝使用Quill富文本編輯器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Vue中的請(qǐng)求攔截器和響應(yīng)攔截器用法及說(shuō)明

    Vue中的請(qǐng)求攔截器和響應(yīng)攔截器用法及說(shuō)明

    這篇文章主要介紹了Vue中的請(qǐng)求攔截器和響應(yīng)攔截器用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • vue 解除鼠標(biāo)的監(jiān)聽(tīng)事件的方法

    vue 解除鼠標(biāo)的監(jiān)聽(tīng)事件的方法

    這篇文章主要介紹了vue 解除鼠標(biāo)的監(jiān)聽(tīng)事件的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • vue實(shí)現(xiàn)簡(jiǎn)單的星級(jí)評(píng)分組件源碼

    vue實(shí)現(xiàn)簡(jiǎn)單的星級(jí)評(píng)分組件源碼

    這篇文章主要介紹了vue星級(jí)評(píng)分組件源碼,代碼簡(jiǎn)單易懂非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • Vue header組件開(kāi)發(fā)詳解

    Vue header組件開(kāi)發(fā)詳解

    本篇文章主要介紹了Vue header組件開(kāi)發(fā)詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • vue-cli腳手架搭建方式(vue腳手架方式搭建)

    vue-cli腳手架搭建方式(vue腳手架方式搭建)

    這篇文章主要介紹了vue-cli(vue腳手架方式搭建),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04

最新評(píng)論