wetrade-design
Version:
一款多语言支持Vue3的UI框架
174 lines (173 loc) • 5.62 kB
JavaScript
"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;