cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
200 lines (199 loc) • 6.95 kB
JavaScript
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 };