🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
DemoInstallSign in
Socket

bi-vue-mindmap

Package Overview
Dependencies
Maintainers
0
Versions
65
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

bi-vue-mindmap

基于 Vue 的思维导图

0.7.12
latest
npm
Version published
Weekly downloads
3
-40%
Maintainers
0
Weekly downloads
 
Created
Source

bi-vue-mindmap

🖼️ Screen Shoot

效果图1

🔨 Minimal Sample

<template>
  <BiVueMindmap ref="bi-vue-mindmap" :flatNodes="mindmapNodes" />
</template>
<script>
import BiVueMindmap, { BtnWrapper } from "bi-vue-mindmap";
export default {
  components: {
    BiVueMindmap,
  },
  data() {
    return {
      mindmapNodes: [
        {
          id: "xxx",
          parentId: null,
          title: "父节点",
          extra: {
            a: 1,
            b: "x",
          },
        },
        {
          id: "yyy",
          parentId: "xxx",
          title: "子节点",
          extra: {
            a: 2,
            b: "y",
          },
        },
      ],
    };
  },
};
</script>

<template>
  <BiVueMindmap ref="bi-vue-mindmap" :flatNodes="mindmapNodes">
    <template v-slot:operation>
      <BtnWrapper>
        <img
          class="btn-img"
          :style="{ width: '20px', height: '20px' }"
          :src="LOGO_ICON"
        />
      </BtnWrapper>
    </template>
  </BiVueMindmap>
</template>
<script>
import BiVueMindmap, { BtnWrapper } from "bi-vue-mindmap";
import LOGO_ICON from "../assets/logo.png";

export default {
  components: {
    BiVueMindmap,
    BtnWrapper,
  },
  data() {
    return {
      LOGO_ICON,
      mindmapNodes: [
        {
          id: "xxx",
          parentId: null,
          title: "父节点",
          extra: {
            a: 1,
            b: "x",
          },
          resources: [
            {
              type: "PIC",
              url: require("../assets/examples/landscape.png"),
            },
            {
              type: "VIDEO",
              url: require("../assets/examples/cat.mp4"),
            },
            {
              type: "FILE",
              url: require("../assets/examples/cat.mp4"),
            },
          ],
        },
        {
          id: "yyy",
          parentId: "xxx",
          title: "子节点",
          extra: {
            a: 2,
            b: "y",
          },
          resources: [
            {
              type: "PIC",
              url: require("../assets/examples/landscape.png"),
            },
          ],
        },
        {
          id: "zzz",
          parentId: "xxx",
          title: "子节点",
          extra: {
            a: 3,
            b: "z",
          },
          resources: [
            {
              type: "VIDEO",
              url: require("../assets/examples/cat.mp4"),
            },
          ],
        },
      ],
    };
  },
};
</script>

🔠 Properties

Prop NameTypeDefault ValueDescription
flatNodesArray.<Node>仅包含单个根节点节点数据(组件不会更改本数组内的数据)
isReadonlyBooleanfalse是否全局只读(true 会使整个导图没有任何编辑功能)
defaultLayoutString"horizontal"默认展示的布局方式(横向/竖向),取值范围["horizontal", "vertical"]
defaultLineStyleString"curve"默认的节点间连线样式,取值范围["curve", "straight"]
defaultLineColorString"#338AFF"默认的节点间连线的颜色(以 # 开头的十六进制颜色)
allowDropBooleanfalse是否允许往节点拖放图片/视频/文件/Html 内容
isBottomBarVisibleBooleantrue是否隐藏底部工具栏
isNodeHideString"vif"不在视窗范围内的节点是否渲染,取值范围["none", "vshow", "vif"]
operationPositionString"left-top"操作按钮组的位置,取值["left-top", "right-top", "left-bottom", "right-bottom"]

Node Fields

Field NameTypeDefault ValuerequiredDescription
idstring随机的 uuid非必填标识节点的全局唯一值
parentIdstring | nullnull除根节点外必填父节点的id(本身为根节点则本值设为null)
titlestring""非必填节点标题(自定义节点不需本值)
isReadonlybooleanfalse非必填节点是否为只读(当节点只读时,不能编辑节点标题,没有任何操作按钮)
orderNonumber1非必填在同一父节点下的排列顺序(从1开始,如果值相同,则按 flat-nodes 数组内的默认顺序)
extraobject{}非必填额外需要保存到节点对象的数据对象(可包含用户的自定义数据)
isCustomizedbooleanfalse非必填是否自定义节点内容(详见 Customization 一节)
resourcesarray[]非必填图片、视频、文件等附件资源
isFoldedbooleanfalse非必填节点属下的子节点是否折叠
redefineSubCountnumber0非必填重新定义某节点属下所有层级子节点的数量(而不是由本组件自动计算),当 isFolded 同时为 true 时,即使是末端子节点亦可显示后代数量,多用于节点数据懒加载
extraClassNamestringundefined非必填额外需要加到节点上的类名

Resource Fields

Field NameTypeDefault ValuerequiredDescription
typestring-必填资源类型,取值范围['PIC', 'VIDEO', 'FILE', 'HTML']
urlstring-非HTML时必填资源的预览或下载地址
titlestring-非HTML时必填标题/文件名
sizenumber-非HTML时必填大小(单位字节)
htmlContentstring-HTML时必填html内容

目前本组件仅支持一个根节点

🛠️ Methods

Method NameParamsDescription
refreshNodesAndLinks-刷新节点及连线(flat-nodes 数组内的元素数量或位置有改变时,会自动调用本方法,无需手动调用)
getNodeOrderNoByIdid:string通过节点id获取在同一父节点下该节点的排列顺序号
foldOrUnfoldnodeIds:string[], isFolded:boolean批量折叠节点
focusToNodenodeId:string屏幕视角中心聚焦到某个节点
focusToNodesnodeIds:string[]屏幕视角中心聚焦到多个节点的共同中心点
insertResourcenodeId:string, resource:Object向指定节点追加一个资源
plusScaleValue-放大一个单位导图缩放比例
minusScaleValue-缩小一个单位导图缩放比例
setScaleValuescaleValue:number设置缩放比例(例如设置为0.5,则表示导图缩小为正常尺寸的一半)
setFullScreenisFullScreen:boolean设置导图是否全屏
focusCenter-焦点定位到中心

Method Examples

this.$refs["bi-vue-mindmap"].refreshNodesAndLinks();
this.$refs["bi-vue-mindmap"].getNodeOrderNoById("yyy");
this.$refs["bi-vue-mindmap"].insertResource("idxxxxx", {
  type: "VIDEO",
  url: "https://xxx.com/xxx.mp4",
  title: "cat.mp4",
  size: 5000,
});

🎺 Events

Operation Events

Event NameParametersMeaning
title-changed节点对象, 原标题某节点的标题被改变
child-added新节点对象, 父节点对象, 新节点的排序号新的子节点被添加(id 为随机 uuid,可手动调用新节点对象的 setId() 更改为自定义的id)
sibling-added新节点对象, 兄弟节点对象, 新节点的排序号新的兄弟节点被添加(id 为随机 uuid,可手动调用新节点对象的 setId() 更改为自定义的id)
nodes-deleted被删除的节点对象二维数组, 形如: [[节点a, 子节点a1, 子节点a2...],[节点b, 子节点b1, 子节点b2...]...]1个或多个节点被删除
change-parent节点对象集合, 新父节点id, 旧父节点id集合节点移动到新的父节点下
node-folded被折叠的节点对象节点的下级子节点被隐藏
node-unfolded被展开的节点对象节点的下级子节点被展示
img-inserted节点对象, 含图片的资源对象, 浏览器文件对象(可用于上传后端), 资源的排序index节点内被插入图片
video-inserted节点对象, 含视频的资源对象, 浏览器文件对象(可用于上传后端), 资源的排序index节点内被插入视频
file-inserted节点对象, 含文件的资源对象, 浏览器文件对象(可用于上传后端), 资源的排序index节点内被插入文件
frame-size-reseted节点对象, 资源对象, 现尺寸{w, h}, 原尺寸{w, h}节点内图片或视频的显示尺寸被调整
resource-deleted节点对象, 被删除的资源对象节点内资源被删除
resource-forward节点对象, 被前移的资源对象多资源节点内资源被前移
resource-backward节点对象, 被后移的资源对象多资源节点内资源被后移
font-bold节点对象, 是否字体加粗节点文字字体加粗/取消加粗
font-italic节点对象, 是否设置斜体节点文字设置斜体/取消设置斜体
font-underline节点对象, 是否设置下划线节点文字设置下划线/取消设置下划线
font-eraser节点对象清除节点文字的样式
font-bg-color节点对象, 新设置的文字背景色设置节点的文字背景色

Normal Events

Event NameParametersMeaning
before-full-screen-在全屏之前
before-cancel-full-screen-在取消全屏之前

Infomation Events

Event NameParametersMeaning
map-style-changeparams: {width, height, scale, top, left}导图样式变化事件

Ctrl+Z Events

Event NameParametersMeaning
recover-title-changed节点对象title-changed 事件恢复
recover-child-added节点对象, 父节点对象, 新节点的排序号child-added 事件恢复
recover-nodes-deleted被恢复的节点对象二维数组node-deleted 事件恢复
recover-change-parent节点对象集合, 恢复后的父节点id集合, 恢复前的父节点idchange-parent 事件恢复
recover-node-folded折叠后被恢复的对象node-folded 事件恢复
recover-node-unfolded展开后被恢复的对象node-unfolded 事件恢复
recover-img-inserted节点对象, 含图片的资源对象img-inserted 事件恢复
recover-video-inserted节点对象, 含视频的资源对象video-inserted 事件恢复
recover-file-inserted节点对象, 含文件的资源对象file-inserted 事件恢复
recover-frame-size-reseted节点对象, 资源对象, 恢复后尺寸{w, h}, 恢复前尺寸{w, h}frame-size-reseted 事件恢复
recover-resource-deleted节点对象, 被恢复的资源对象resource-deleted 事件恢复
recover-resource-forward节点对象, 前移后被恢复的资源对象resource-forward 事件恢复
recover-resource-backward节点对象, 后移后被恢复的资源对象resource-backward 事件恢复
recover-font-bold节点对象, 还原后字体是否加粗font-bold 事件恢复
recover-font-italic节点对象, 还原后字体是否倾斜font-italic 事件恢复
recover-font-underline节点对象, 还原后字体是否有下划线font-underline 事件恢复
recover-font-bg-color节点对象, 还原后字体的背景色font-bg-color 事件恢复
recover-font-eraser节点对象, 还原后的字体样式font-eraser 事件恢复

Drag Drop Events

Event NameParametersMeaning
node-dragenter节点对象, 原生事件对象对应原生 dragenter 事件
node-dragleave节点对象, 原生事件对象对应原生 dragleave 事件
node-dragover节点对象, 原生事件对象对应原生 dragover 事件
node-drop节点对象, 原生事件对象对应原生 drop 事件

详情可参考:https://developer.mozilla.org/zh-CN/docs/Web/API/HTML_Drag_and_Drop_API

🎣 Hooks Before Events

Function NameParametersMeaning
before-child-added节点对象, 父节点对象, 新节点的排序号child-added 事件的前置钩子; 可修改节点对象的字段,从而控制新增子节点
before-sibling-added节点对象, 兄弟节点对象, 新节点的排序号sibling-added 事件的前置钩子; 可修改节点对象的字段,从而控制新增兄弟节点
before-change-parent节点对象集合, 新父节点id, 旧父节点id集合change-parent 事件的前置钩子
before-img-inserted浏览器文件对象(可用于上传后端), 图片资源的index, 图片资源对象img-inserted 事件的前置钩子; 可修改图片资源对象的 id 和 url 属性, url 属性是图片的预览地址
before-video-inserted浏览器文件对象(可用于上传后端), 视频资源的index, 视频资源对象video-inserted 事件的前置钩子; 可修改视频资源对象的 id 和 url 属性, url 属性是视频的预览地址
before-file-inserted浏览器文件对象(可用于上传后端), 文件资源的index, 文件资源对象file-inserted 事件的前置钩子; 可修改图片资源对象的 id, url, title, size 属性, url 属性是文件的下载地址
  • 钩子函数作为 Props 传递给组件
  • 以上前置钩子函数,函数内 return false 会使对应的后续事件取消发生

⚙️ Customization

节点 Node 对象中 isCustomized 字段设置为 true 后,节点则作为自定义节点渲染。以插槽的形式定义节点的渲染样式

Customized Node Additional Fields

Field NameTypeDefault ValueDescription
widthnumber100节点的宽度
heightnumber32节点的高度
calcCellSizefunction-计算节点高度和宽度的方法(当宽高有变时,可手动调用组件的 refreshNodesAndLinks() 方法刷新导图)

Customization Sample

<template>
  <BiVueMindmap
    :flatNodes="mindmapNodes"
    v-slot="{ id, parentId, orderNo, width, height, extra }"
  >
    <div class="my-node-template">
      <p class="title">{{ extra.myTitle }}</p>
      <button
        tabindex="-1"
        @click.stop="
          onBtnClick({ id, parentId, orderNo, width, height, extra })
        "
      >
        确认
      </button>
    </div>
  </BiVueMindmap>
</template>
<script>
import BiVueMindmap from "bi-vue-mindmap";
export default {
  components: {
    BiVueMindmap,
  },
  data() {
    return {
      mindmapNodes: [
        {
          id: "xxx",
          parentId: null,
          title: "父节点",
        },
        {
          id: "yyy",
          parentId: "xxx",
          isCustomized: true,
          width: 100,
          height: 32,
          extra: {
            myTitle: "Customized Node",
          },
          calcCellSize: function (node) {
            this.width = 200;
            this.height = 64;
            // ----- or -----
            // node.width = 200;
            // node.height = 64;
          },
        },
      ],
    };
  },
  methods: {
    onBtnClick({ id, parentId, orderNo, width, height }) {},
  },
};
</script>

🎹 快捷键

KeysDescription
Ctrl+Z恢复上一步操作
Ctrl+0将缩放比例恢复到100%
Detele删除当前激活的节点对象

Keywords

mindmap

FAQs

Package last updated on 25 Nov 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts