vue-vis-network
Version:
Vue2 component to integrate with vis-network
250 lines (203 loc) • 6.69 kB
Markdown
# vue-vis-network
> Vue2 component to integrate with <a href="Vue2 component to integrate with vis-network">Vis-Network</a> views
<p align="center">
<a href="https://travis-ci.org/r3code/vue-vis-network">
<img src="https://travis-ci.org/r3code/vue-vis-network.svg?branch=master" alt="Build Status" />
</a>
<a href="https://coveralls.io/github/r3code/vue-vis-network?branch=master">
<img src="https://coveralls.io/repos/github/r3code/vue-vis-network/badge.svg?branch=master" alt="Coverage Status" />
</a>
<a href="LICENSE">
<img src="https://img.shields.io/badge/license-MIT-brightgreen.svg?" alt="Software License" />
</a>
<a href="https://npmjs.org/package/vue-vis-network">
<img src="https://img.shields.io/npm/v/vue-vis-network.svg?" alt="Packagist" />
</a>
<a href="https://github.com/r3code/vue-vis-network/releases">
<img src="https://img.shields.io/github/release/r3code/vue-vis-network.svg?" alt="Latest Version" />
</a>
<a href="https://github.com/r3code/vue-vis-network/issues">
<img src="https://img.shields.io/github/issues/r3code/vue-vis-network.svg?" alt="Issues" />
</a>
</p>
Best reagrds to the https://github.com/alexcode/vue2vis which is the base for this component. This project might have some issues from https://github.com/alexcode/vue2vis
### Installation
```
npm install --save vue-vis-network
```
or
```
yarn add vue-vis-network
```
## Usage
Declare the component
``` javascript
Vue.component('network', vueVisNetwork.Network);
```
Add the component in the template.
```html
<body>
<div id="app">
<network ref="network"
:nodes="nodes"
:edges="edges"
:options="options">
</network>
</div>
</body>
```
Add groups, items and options in your observed data or computed.
``` javascript
new Vue({
el: '#app',
data() {
return {
nodes: [
{id: 1, label: 'circle', shape: 'circle' },
{id: 2, label: 'ellipse', shape: 'ellipse'},
{id: 3, label: 'database',shape: 'database'},
{id: 4, label: 'box', shape: 'box' },
{id: 5, label: 'diamond', shape: 'diamond'},
{id: 6, label: 'dot', shape: 'dot'},
{id: 7, label: 'square', shape: 'square'},
{id: 8, label: 'triangle',shape: 'triangle'},
],
edges: [
{from: 1, to: 2},
{from: 2, to: 3},
{from: 2, to: 4},
{from: 2, to: 5},
{from: 5, to: 6},
{from: 5, to: 7},
{from: 6, to: 8}
],
options: {
nodes: {
borderWidth: 4
},
edges: {
color: 'lightgray'
}
}
}
},
});
```
Add Visjs CSS
``` css
@import "vue-vis-network/dist/vueVisNetwork.css";
```
Here is a basic working demo with item generation:
TODO:: [JS Fiddle Basic Demo](https://jsfiddle.net/TODO/)
## Events
### Component Events
By default all Vis-network events are emitted by your component. You can subscribe to a subset by passing an array in the prop `events` [Vis-network event](https://visjs.github.io/vis-network/docs/network/#Events).
```html
<body>
<div id="app">
<network ref="network"
:nodes="nodes"
:edges="edges"
:options="options"
:events="['selectNode', 'hoverNode']"
@selectNode="onNodeSelected"
@hoverNode="onNodeHovered">
</network>
</div>
</body>
```
### Data Events
When you pass an Array of data object, it is converted internally as a DataSet.
An event with the DataSet object will be fired at mounted. It's name will be prepend with the prop name (Ex: `items-mounted`, `groups-mounted`). You could use it to interact with the DataSet.
All the [Visjs DataSet event](https://visjs.github.io/vis-data/data/dataset.html#Events) will be prepened the same fashion (`items-add`, `items-remove`, `items-update`). For example, pushing a new object to the `items` prop will fire a `items-add` event with the following payload:
```javascript
{
event: 'add',
properties: {
items: [7],
},
senderId: null,
}
```
#### Advanced
You can also manage your own data bindings by passing your own DataSet or DataView instead of an Array.
``` javascript
import { DataSet } from 'vue-vis-network';
new Vue({
el: '#app',
data() {
return {
nodes: new DataSet([
{id: 1, label: 'circle', shape: 'circle' },
{id: 2, label: 'ellipse', shape: 'ellipse'},
{id: 3, label: 'database',shape: 'database'}
]),
edges: new DataSet([
{from: 1, to: 2},
{from: 1, to: 3}
]),
options: {
nodes: {
borderWidth: 4
}
}
}
},
});
```
## Vis-network documentation
For the full reference see:
* [Network](https://visjs.github.io/vis-network/docs/network/)
* [DataSet](https://visjs.github.io/vis-data/data/dataset.html)
* [DataView](https://visjs.github.io/vis-data/data/dataview.html)
## Change log
Please see [CHANGELOG](CHANGELOG.md) for more information what has changed recently.
## Testing
``` bash
$ npm run test
```
## Contributing
Please see [CONTRIBUTING](CONTRIBUTING.md) and [CONDUCT](CONDUCT.md) for details.
### Build Setup
``` bash
# Once you have cloned this repo, install dependencies
$ npm install
# Build for development and production with minification
$ npm run build
```
**Build for production**
```
# Linux
NODE_ENV=production npm run build
# Windows
set NODE_ENV=production && npm run build
# Prepare for NPM
set NODE_ENV=production && npm run build:bundle
```
### Run demo locally
``` bash
# install vue-vis-network local module
cd ..
npm link
# prepare example
cd example
# install the example dependencies
npm install
# add local vue-vis-network module to node_modules
npm link vue-vis-network
# run demo server
npm run serve
```
Go to <http://localhost:8080/> to see running examples
NOTE: If you make changes to the library you should run `npm run build` again in the root folder.
The dev server should detect modification and reload the demo
## Security
If you discover any security related issues, please email contact@r3code.ru instead of using the issue tracker.
## Credits
- [Dmitriy S. Sinyavskiy][link-author]
- [Alex Couturon](https://github.com/alexcode)
- [All Contributors][link-contributors]
## License
The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
[link-author]: https://github.com/r3code
[link-contributors]: ../../contributors