123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- define(function(require, exports, module) {
- var kity = require('./kity');
- var utils = require('./utils');
- var Module = require('./module');
- var Minder = require('./minder');
- var MinderNode = require('./node');
- // 连线提供方
- var _connectProviders = {};
- function register(name, provider) {
- _connectProviders[name] = provider;
- }
- register('default', function(node, parent, connection) {
- connection.setPathData([
- 'M', parent.getLayoutVertexOut(),
- 'L', node.getLayoutVertexIn()
- ]);
- });
- kity.extendClass(MinderNode, {
- /**
- * @private
- * @method getConnect()
- * @for MinderNode
- * @description 获取当前节点的连线类型
- *
- * @grammar getConnect() => {string}
- */
- getConnect: function() {
- return this.data.connect || 'default';
- },
- getConnectProvider: function() {
- return _connectProviders[this.getConnect()] || _connectProviders['default'];
- },
- /**
- * @private
- * @method getConnection()
- * @for MinderNode
- * @description 获取当前节点的连线对象
- *
- * @grammar getConnection() => {kity.Path}
- */
- getConnection: function() {
- return this._connection || null;
- }
- });
- kity.extendClass(Minder, {
- getConnectContainer: function() {
- return this._connectContainer;
- },
- createConnect: function(node) {
- if (node.isRoot()) return;
- var connection = new kity.Path();
- node._connection = connection;
- this._connectContainer.addShape(connection);
- this.updateConnect(node);
- },
- removeConnect: function(node) {
- var me = this;
- node.traverse(function(node) {
- me._connectContainer.removeShape(node._connection);
- node._connection = null;
- });
- },
- updateConnect: function(node) {
- var connection = node._connection;
- var parent = node.parent;
- if (!parent || !connection) return;
- if (parent.isCollapsed()) {
- connection.setVisible(false);
- return;
- }
- connection.setVisible(true);
- var provider = node.getConnectProvider();
- var strokeColor = node.getStyle('connect-color') || 'white',
- strokeWidth = node.getStyle('connect-width') || 2;
- connection.stroke(strokeColor, strokeWidth);
- provider(node, parent, connection, strokeWidth, strokeColor);
- if (strokeWidth % 2 === 0) {
- connection.setTranslate(0.5, 0.5);
- } else {
- connection.setTranslate(0, 0);
- }
- }
- });
- Module.register('Connect', {
- init: function() {
- this._connectContainer = new kity.Group().setId(utils.uuid('minder_connect_group'));
- this.getRenderContainer().prependShape(this._connectContainer);
- },
- events: {
- 'nodeattach': function(e) {
- this.createConnect(e.node);
- },
- 'nodedetach': function(e) {
- this.removeConnect(e.node);
- },
- 'layoutapply layoutfinish noderender': function(e) {
- this.updateConnect(e.node);
- }
- }
- });
- exports.register = register;
- });
|