UNPKG

wetrade-design

Version:

一款多语言支持Vue3的UI框架

174 lines (173 loc) 5.62 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper")); var _graphEvent = _interopRequireDefault(require("./graphEvent")); var _graphNode = _interopRequireDefault(require("./graphNode")); var _graphLink = _interopRequireDefault(require("./graphLink")); var _index = require("./index"); /** * User: CHT * Date: 2020/5/8 * Time: 14:00 */ var Graph = /*#__PURE__*/function (_GraphEvent) { (0, _inherits2.default)(Graph, _GraphEvent); var _super = (0, _createSuper2.default)(Graph); function Graph(options) { var _this; (0, _classCallCheck2.default)(this, Graph); var relationMark = options.relationMark, startMark = options.startMark, endMark = options.endMark, _options$nodeList = options.nodeList, nodeList = _options$nodeList === void 0 ? [] : _options$nodeList, _options$linkList = options.linkList, linkList = _options$linkList === void 0 ? [] : _options$linkList, origin = options.origin; _this = _super.call(this); (0, _extends2.default)(_index.mark, { relationMark: relationMark, startMark: startMark, endMark: endMark }); _this.nodeList = []; _this.linkList = []; _this.origin = origin; _this.mouseOnLink = null; _this.mouseonNode = null; _this.maskBoundingClientRect = {}; _this.initNode(nodeList); _this.initLink(linkList); return _this; } (0, _createClass2.default)(Graph, [{ key: "pointMap", value: function pointMap() { var map = {}; this.nodeList.forEach(function (point) { map[point[_index.mark.relationMark]] = point; }); return map; } }, { key: "initNode", value: function initNode(nodeList) { var _this2 = this; (0, _index.arrayReplace)(this.nodeList, nodeList.map(function (node) { return _this2.createNode(node); })); return this.nodeList; } }, { key: "initLink", value: function initLink(linkList) { var _this3 = this; var list = []; linkList.forEach(function (link) { var _link$startAt = link.startAt, startAt = _link$startAt === void 0 ? [0, 0] : _link$startAt, _link$endAt = link.endAt, endAt = _link$endAt === void 0 ? [0, 0] : _link$endAt, _link$meta = link.meta, meta = _link$meta === void 0 ? null : _link$meta; var id = link[_index.mark.relationMark] || ''; var startId = link[_index.mark.startMark] || ''; var endId = link[_index.mark.endMark] || ''; var pointMap = _this3.pointMap(); var start = pointMap[startId]; var end = pointMap[endId]; if (start && end) { list.push(_this3.createLink({ id: id, start: start, end: end, meta: meta, startAt: startAt, endAt: endAt })); } }); (0, _index.arrayReplace)(this.linkList, list); return this.linkList; } }, { key: "createNode", value: function createNode(options) { return new _graphNode.default(options, this); } }, { key: "createLink", value: function createLink(options) { return new _graphLink.default(options, this); } }, { key: "addNode", value: function addNode(options) { var node = options.constructor === _graphNode.default ? options : this.createNode(options); this.nodeList.push(node); return node; } }, { key: "addLink", value: function addLink(options) { var newLink = options.constructor === _graphLink.default ? options : this.createLink(options); var currentLink = this.linkList.find(function (item) { return item.start === newLink.start && item.end === newLink.end; }); if (currentLink) { currentLink.startAt = newLink.startAt; currentLink.endAt = newLink.endAt; } else if (newLink.start && newLink.end) { this.linkList.push(newLink); } return newLink; } }, { key: "removeNode", value: function removeNode(node) { var _this4 = this; var idx = this.nodeList.indexOf(node); this.linkList.filter(function (link) { return link.start === node || link.end === node; }).forEach(function (link) { _this4.removeLink(link); }); this.nodeList.splice(idx, 1); return node; } }, { key: "removeLink", value: function removeLink(link) { var idx = this.linkList.indexOf(link); this.linkList.splice(idx, 1); if (this.mouseOnLink === link) { this.mouseOnLink = null; } return link; } }, { key: "toJSON", value: function toJSON() { return { origin: this.origin, nodeList: this.nodeList.map(function (node) { return node.toJSON(); }), linkList: this.linkList.map(function (link) { return link.toJSON(); }) }; } }]); return Graph; }(_graphEvent.default); var _default = Graph; exports.default = _default;