Git Product home page Git Product logo

mindmap's Introduction

思维导图Vue2组件 npm npm

一个由MindNode启发的思维导图Vue组件,基于d3.js实现
目前实现的功能有基本的编辑、拖移、缩放、撤销、上下文菜单、折叠...

近期更新

该项目基本不会再维护
目前正在开发Vue3、d3v6版本的思维导图组件,欢迎支持

安装

npm install @hellowuxin/mindmap

PROPS

Name Type Default Description
v-model Array undefined 设置思维导图数据
width Number 100% 设置组件宽度
height Number undefined 设置组件高度
xSpacing Number 80 设置节点横向间隔
ySpacing Number 20 设置节点纵向间隔
strokeWidth Number 4 设置连线的宽度
draggable Boolean true 设置节点是否可拖拽
gps Boolean true 是否显示居中按钮
fitView Boolean true 是否显示缩放按钮
showNodeAdd Boolean true 是否显示添加节点按钮
keyboard Boolean true 是否响应键盘事件
contextMenu Boolean true 是否响应右键菜单
zoomable Boolean true 是否可缩放、拖移
showUndo Boolean true 是否显示撤销重做按钮
download Boolean true 是否显示下载按钮

EVENTS

Name arguments Description
updateNodeName data, id 更新节点名称时,传入节点数据和节点id
click data, id 点击节点时,传入节点数据和节点id

样例

<template>
  <mindmap v-model="data"></mindmap>
</template>

<script>
import mindmap from '@hellowuxin/mindmap'

export default {
  components: { mindmap },
  data: () => ({
    data: [{
      "name":"如何学习D3",
      "children": [
        {
          "name":"预备知识",
          "children": [
            { "name":"HTML & CSS" },
            { "name":"JavaScript" },
            ...
          ]
        },
        {
          "name":"安装",
          "_children": [
            { "name": "折叠节点" }
          ]
        },
        {
          "name":"进阶",
          "left": true
        },
        ...
      ]
    }]
  })
}
</script>

键盘事件

⇥ tab⏎ enter⌫ backspace⌘ cmd+z⌘ cmd+y

交互逻辑

鼠标:space+左键移动、右键菜单、ctrl+滚轮缩放、左键选中

触控板:双指滚动移动、双指菜单、双指捏合缩放、单指选中

待解决

  • 导出多种格式
  • 设置节点的宽高
  • 多个根节点
  • ...

mindmap's People

Contributors

dependabot[bot] avatar hellowuxin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mindmap's Issues

多个导图

能不能考虑一下,在一个画布里面 添加多个思维导图呢?

手机双指捏合缩放无效?

iPhone7Plus,双指缩放无效。文档不是说支持吗?:zoomable="true"也加了。

PS:建议新建节点时,输入框自动获取焦点,最好加个选中的默认值如:new label之类的,并全选状态。

允许节点折叠

这分两种情况:

  1. 上来给现成的大量数据,这时可允许用户折叠以隐藏某个节点的子节点
  2. 上来给少量数据,折叠时可通过事件,从后端异步加载数据并添加为子节点

建议节点可以懒加载

看了作者的计划中有节点折叠,建议节点可以懒加载,因为有些情况子节点特别多,一下子显示出来不仅很乱,而且对前端后端都有性能问题,建议对节点增加事件和标志,这样子可以动态增减

Keyboard event and blur event conflict

Hello,sir!
When a node is selected, pressing enter will increase the peer node, and then start input. Pressing enter will end input and select. At this moment, pressing enter will increase the peer node. How to realize this

节点点击事件

你好大佬!我是个js初学者,我想得到节点的单击事件,从而获取节点的内容,请问大佬我该怎样操作?

增加节点编辑事件

在节点被编辑完成时,可以有事件相应,开发者可根据需求将编辑结果推送至后端,或做有效性检查以拒绝此次编辑等

点赞

很棒的项目,vue思维导图组件独树一帜,希望作者继续更新,star一个

自定义节点点击事件

目前是点击选中该节点,双击编辑节点。建议可以提供一个自定义点击事件处理

关于新建节点删除问题

大佬您好,新建节点后如果把文字删除,这个节点的区域就会很小很不明显,再想删除这个节点,不容易选中。
建议节点文字删除并确定后,自动把这个节点也删了,或者给节点选中区域设置个最小宽度
另外可以提pr吗

mind map 拖拽问题

draggable="false" click事件也无法响应了?,禁止拖拽之后不能点击节点了

节点拖拽切换节点位置

在使用过程中,拖拽到其他节点上切换的时候,发现有很多一部分几率会失败。希望可以增加拖拽到节点上后hover效果提示
{D9C229A6-EF18-4F61-B837-5853E88E5D46} png

运行报translate错误

一运行就报这个,并且鼠标一移动会增加错误,按照你的步骤来的
image
请问如何下手

事件机制

梳理:

  • 点击事件
  • 右键点击事件
  • 双击事件
  • 编辑完成事件
  • 展开折叠按钮事件
  • 被拖拽

双击节点内容后光标的位置如何控制呢

大佬,我想请教一下,目前双击节点内容之后鼠标的光标是在开头的位置,可以外部进行可配置的吗,就是我想双击的时候光标的位置在内容的后面出现

谢谢大神,还是有一些问题,当某一级节点有很多的时候,将一个节点拽到很远就会报错

谢谢大神,还是有一些问题,当某一级节点有很多的时候,将一个节点拽到很远就会报错。
其实也不用拖拽很远,就是某一级节点超过10个的时候,交换位置就会报错。

ImData.js:54 Uncaught TypeError: Cannot set property 'id' of undefined
at B (ImData.js:54)
at B (ImData.js:63)
at t.value (ImData.js:158)
at a.move (MindMap.vue:327)
at a.dragended (MindMap.vue:690)
at r.apply (dispatch.js:61)
at s (on.js:103)
at Object.d (drag.js:137)
at B (drag.js:76)
at on.js:27

image

然后拖拽节点到另一节点的功能也报错了。

同时我也在读源码,来理解您的思路。

右击事件

很感谢使用大佬的开源思维导图,我想在右击事件上加一个复制的功能该如何加?

click事件好像有点bug

有些节点点击后不会触发click,需要点击其他节点之后再回来点击这个节点,click才会触发

关于只读模式

你好,我本来想通过 showNodeAdd 和 禁用键盘来实现只读的功能,但直接禁用键盘又会导致拖拽功能不可用,请问有什么办法解决吗。
除此之外,我建议使用鼠标右键拖拽,感觉这样更符合使用习惯。

默认根节点大小/居中

请问如何实现默认根节点大小,现在使用根节点无限大。和实现居中效果,没有找到相关api

无法收缩

一个节点应该是可以点击后散开分支,再次点击后收拢.
但是目前来看是无法收拢的啊.

目前节点不能进行复制

大佬,您好,我又来*扰了您,您的组件很好用,膜拜下哈,问下节点之间的复制,可以纳入TODO计划里面吗?
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.