最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

推薦幾個好用的工具

進入正題

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

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

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

1. 菜單插件安裝配置:

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

默認的菜單支持情況如下:

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

2. 菜單項配置:

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

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

3. 追加菜單選項:

默認的菜單肯定是不能夠覆蓋實際的業(yè)務(wù)場景的,所以菜單插件安裝后提供了 addMenuConfig 來擴充原有的菜單項,擴充菜單仍然需要在渲染前操作:

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

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

4. 重置菜單選項:

當默認的菜單項不夠使用時可以追加新的菜單選項進入,當不需要提供的菜單時就需要重置掉自帶的這幾個菜單項目,可以按照下面的代碼操作:

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

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

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

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

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

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

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

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

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

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) {
      // 單獨為非禁用的元素設(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,
}

補充監(jiān)聽事件函數(shù):

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

總結(jié)

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

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

相關(guān)文章

  • vue組件開發(fā)之tab切換組件使用詳解

    vue組件開發(fā)之tab切換組件使用詳解

    這篇文章主要為大家詳細介紹了vue組件開發(fā)之tab切換組件的使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • 圖文詳解keep-alive如何清除緩存

    圖文詳解keep-alive如何清除緩存

    vue項目中常常會用到keepalive來作緩存,在應(yīng)付基本要求上能夠說很是方便,可是遇到同一個頁面,根據(jù)條件不一樣,分別緩存或者不緩存,就有些麻煩了,這篇文章主要給大家介紹了關(guān)于keep-alive如何清除緩存的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • 實現(xiàn)elementUI表單的全局驗證的方法步驟

    實現(xiàn)elementUI表單的全局驗證的方法步驟

    這篇文章主要介紹了實現(xiàn)elementUI表單的全局驗證的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Map.vue基于百度地圖組件重構(gòu)筆記分享

    Map.vue基于百度地圖組件重構(gòu)筆記分享

    這篇文章主要為大家分享了Map.vue基于百度地圖組件重構(gòu)筆記,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Vue前端柱狀圖實例(疊狀條形圖)

    Vue前端柱狀圖實例(疊狀條形圖)

    這篇文章主要介紹了Vue前端柱狀圖實例(疊狀條形圖),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • vue中關(guān)于v-for循環(huán)key值問題的研究

    vue中關(guān)于v-for循環(huán)key值問題的研究

    這篇文章主要介紹了vue中關(guān)于v-for循環(huán)key值問題的研究,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Vite配置文件如何加載深入剖析

    Vite配置文件如何加載深入剖析

    我們知道,Vite?構(gòu)建環(huán)境分為開發(fā)環(huán)境和生產(chǎn)環(huán)境,不同環(huán)境會有不同的構(gòu)建策略,但不管是哪種環(huán)境,Vite?都會首先解析用戶配置,那接下來,本文就來與大家分析配置解析過程中?Vite?到底做了什么?即Vite是如何加載配置文件的
    2023-11-11
  • elementui上傳文件不允許重名的解決方案

    elementui上傳文件不允許重名的解決方案

    用戶可以多文件上傳 ,在上傳到服務(wù)器之前需要檢查服務(wù)器中有無重名的文件,如果有會返回重名文件的名稱數(shù)組,這些文件需要一個一個的向用戶確認是否要覆蓋重傳,這篇文章主要介紹了elementui上傳文件不允許重名,需要的朋友可以參考下
    2024-02-02
  • vue項目使用cdn加速減少webpack打包體積

    vue項目使用cdn加速減少webpack打包體積

    通過壓縮代碼的手段可減小網(wǎng)絡(luò)傳輸?shù)拇笮?但實際上最影響用戶體驗的還是網(wǎng)頁首次打開時的加載等待,其根本原因是網(wǎng)絡(luò)傳輸過程耗時較大,這篇文章主要給大家介紹了關(guān)于vue項目使用cdn加速減少webpack打包體積的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • vue動態(tài)菜單、動態(tài)路由加載以及刷新踩坑實戰(zhàn)

    vue動態(tài)菜單、動態(tài)路由加載以及刷新踩坑實戰(zhàn)

    這篇文章主要給大家介紹了關(guān)于vue動態(tài)菜單、動態(tài)路由加載以及刷新踩坑的相關(guān)資料,踩的這些坑其實是挺常見的,大家可以看看,避免遇到的時候再踩到同樣的坑,需要的朋友可以參考下
    2021-10-10

最新評論

永定县| 阜新| 民乐县| 丰都县| 阿勒泰市| 黄大仙区| 呼玛县| 阜宁县| 鄂托克旗| 安乡县| 新邵县| 濮阳县| 河南省| 金山区| 翁牛特旗| 西城区| 延川县| 边坝县| 县级市| 四会市| 固安县| 什邡市| 安吉县| 香港 | 梧州市| 德昌县| 濉溪县| 西乌珠穆沁旗| 积石山| 桃江县| 阿尔山市| 岳普湖县| 安乡县| 宕昌县| 云霄县| 得荣县| 台湾省| 泗洪县| 上饶市| 平原县| 仙桃市|