UNPKG

cione-comp-lib

Version:

`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`

200 lines (199 loc) 6.95 kB
import { __extends } from "../../../../tslib/tslib.es6.mjs"; import SeriesData from "../../data/SeriesData.mjs"; import { each, map, extend } from "../../../../zrender/lib/core/util.mjs"; import { defaultEmphasis } from "../../util/model.mjs"; import Model from "../../model/Model.mjs"; import createGraphFromNodeEdge from "../helper/createGraphFromNodeEdge.mjs"; import LegendVisualProvider from "../../visual/LegendVisualProvider.mjs"; import SeriesModel from "../../model/Series.mjs"; import { createTooltipMarkup } from "../../component/tooltip/tooltipMarkup.mjs"; import { defaultSeriesFormatTooltip } from "../../component/tooltip/seriesFormatTooltip.mjs"; import { initCurvenessList, createEdgeMapForCurveness } from "../helper/multipleGraphEdgeHelper.mjs"; var GraphSeriesModel = function(_super) { __extends(GraphSeriesModel2, _super); function GraphSeriesModel2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = GraphSeriesModel2.type; _this.hasSymbolVisual = true; return _this; } GraphSeriesModel2.prototype.init = function(option) { _super.prototype.init.apply(this, arguments); var self = this; function getCategoriesData() { return self._categoriesData; } this.legendVisualProvider = new LegendVisualProvider(getCategoriesData, getCategoriesData); this.fillDataTextStyle(option.edges || option.links); this._updateCategoriesData(); }; GraphSeriesModel2.prototype.mergeOption = function(option) { _super.prototype.mergeOption.apply(this, arguments); this.fillDataTextStyle(option.edges || option.links); this._updateCategoriesData(); }; GraphSeriesModel2.prototype.mergeDefaultAndTheme = function(option) { _super.prototype.mergeDefaultAndTheme.apply(this, arguments); defaultEmphasis(option, "edgeLabel", ["show"]); }; GraphSeriesModel2.prototype.getInitialData = function(option, ecModel) { var edges = option.edges || option.links || []; var nodes = option.data || option.nodes || []; var self = this; if (nodes && edges) { initCurvenessList(this); var graph = createGraphFromNodeEdge(nodes, edges, this, true, beforeLink); each(graph.edges, function(edge) { createEdgeMapForCurveness(edge.node1, edge.node2, this, edge.dataIndex); }, this); return graph.data; } function beforeLink(nodeData, edgeData) { nodeData.wrapMethod("getItemModel", function(model) { var categoriesModels = self._categoriesModels; var categoryIdx = model.getShallow("category"); var categoryModel = categoriesModels[categoryIdx]; if (categoryModel) { categoryModel.parentModel = model.parentModel; model.parentModel = categoryModel; } return model; }); var oldGetModel = Model.prototype.getModel; function newGetModel(path, parentModel) { var model = oldGetModel.call(this, path, parentModel); model.resolveParentPath = resolveParentPath; return model; } edgeData.wrapMethod("getItemModel", function(model) { model.resolveParentPath = resolveParentPath; model.getModel = newGetModel; return model; }); function resolveParentPath(pathArr) { if (pathArr && (pathArr[0] === "label" || pathArr[1] === "label")) { var newPathArr = pathArr.slice(); if (pathArr[0] === "label") { newPathArr[0] = "edgeLabel"; } else if (pathArr[1] === "label") { newPathArr[1] = "edgeLabel"; } return newPathArr; } return pathArr; } } }; GraphSeriesModel2.prototype.getGraph = function() { return this.getData().graph; }; GraphSeriesModel2.prototype.getEdgeData = function() { return this.getGraph().edgeData; }; GraphSeriesModel2.prototype.getCategoriesData = function() { return this._categoriesData; }; GraphSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) { if (dataType === "edge") { var nodeData = this.getData(); var params = this.getDataParams(dataIndex, dataType); var edge = nodeData.graph.getEdgeByIndex(dataIndex); var sourceName = nodeData.getName(edge.node1.dataIndex); var targetName = nodeData.getName(edge.node2.dataIndex); var nameArr = []; sourceName != null && nameArr.push(sourceName); targetName != null && nameArr.push(targetName); return createTooltipMarkup("nameValue", { name: nameArr.join(" > "), value: params.value, noValue: params.value == null }); } var nodeMarkup = defaultSeriesFormatTooltip({ series: this, dataIndex, multipleSeries }); return nodeMarkup; }; GraphSeriesModel2.prototype._updateCategoriesData = function() { var categories = map(this.option.categories || [], function(category) { return category.value != null ? category : extend({ value: 0 }, category); }); var categoriesData = new SeriesData(["value"], this); categoriesData.initData(categories); this._categoriesData = categoriesData; this._categoriesModels = categoriesData.mapArray(function(idx) { return categoriesData.getItemModel(idx); }); }; GraphSeriesModel2.prototype.setZoom = function(zoom) { this.option.zoom = zoom; }; GraphSeriesModel2.prototype.setCenter = function(center) { this.option.center = center; }; GraphSeriesModel2.prototype.isAnimationEnabled = function() { return _super.prototype.isAnimationEnabled.call(this) && !(this.get("layout") === "force" && this.get(["force", "layoutAnimation"])); }; GraphSeriesModel2.type = "series.graph"; GraphSeriesModel2.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"]; GraphSeriesModel2.defaultOption = { z: 2, coordinateSystem: "view", legendHoverLink: true, layout: null, circular: { rotateLabel: false }, force: { initLayout: null, repulsion: [0, 50], gravity: 0.1, friction: 0.6, edgeLength: 30, layoutAnimation: true }, left: "center", top: "center", symbol: "circle", symbolSize: 10, edgeSymbol: ["none", "none"], edgeSymbolSize: 10, edgeLabel: { position: "middle", distance: 5 }, draggable: false, roam: false, center: null, zoom: 1, nodeScaleRatio: 0.6, label: { show: false, formatter: "{b}" }, itemStyle: {}, lineStyle: { color: "#aaa", width: 1, opacity: 0.5 }, emphasis: { scale: true, label: { show: true } }, select: { itemStyle: { borderColor: "#212121" } } }; return GraphSeriesModel2; }(SeriesModel); var GraphSeriesModel$1 = GraphSeriesModel; export { GraphSeriesModel$1 as default };