提交 d9c5d2fc 编写于 作者: Z zakwu

fix(tree): code rebuild follow the review suggest

上级 b2856b28
...@@ -25,6 +25,7 @@ import Model from '../../model/Model'; ...@@ -25,6 +25,7 @@ import Model from '../../model/Model';
import {encodeHTML} from '../../util/format'; import {encodeHTML} from '../../util/format';
import createGraphFromNodeEdge from '../helper/createGraphFromNodeEdge'; import createGraphFromNodeEdge from '../helper/createGraphFromNodeEdge';
import LegendVisualProvider from '../../visual/LegendVisualProvider'; import LegendVisualProvider from '../../visual/LegendVisualProvider';
import {initCurvenessList} from '../helper/multipleGraphEdgeHelper';
var GraphSeries = echarts.extendSeriesModel({ var GraphSeries = echarts.extendSeriesModel({
...@@ -66,6 +67,8 @@ var GraphSeries = echarts.extendSeriesModel({ ...@@ -66,6 +67,8 @@ var GraphSeries = echarts.extendSeriesModel({
var self = this; var self = this;
if (nodes && edges) { if (nodes && edges) {
// auto curveness
initCurvenessList(edges, this);
return createGraphFromNodeEdge(nodes, edges, this, true, beforeLink).data; return createGraphFromNodeEdge(nodes, edges, this, true, beforeLink).data;
} }
...@@ -289,4 +292,4 @@ var GraphSeries = echarts.extendSeriesModel({ ...@@ -289,4 +292,4 @@ var GraphSeries = echarts.extendSeriesModel({
} }
}); });
export default GraphSeries; export default GraphSeries;
\ No newline at end of file
...@@ -19,6 +19,8 @@ ...@@ -19,6 +19,8 @@
import * as vec2 from 'zrender/src/core/vector'; import * as vec2 from 'zrender/src/core/vector';
import {getSymbolSize, getNodeGlobalScale} from './graphHelper'; import {getSymbolSize, getNodeGlobalScale} from './graphHelper';
import * as zrUtil from 'zrender/src/core/util';
import {getCurvenessForEdge} from '../helper/multipleGraphEdgeHelper';
var PI = Math.PI; var PI = Math.PI;
...@@ -73,8 +75,12 @@ export function circularLayout(seriesModel, basedOn) { ...@@ -73,8 +75,12 @@ export function circularLayout(seriesModel, basedOn) {
_layoutNodesBasedOn[basedOn](seriesModel, coordSys, graph, nodeData, r, cx, cy, count); _layoutNodesBasedOn[basedOn](seriesModel, coordSys, graph, nodeData, r, cx, cy, count);
graph.eachEdge(function (edge) { graph.eachEdge(function (edge, index) {
var curveness = edge.getModel().get('lineStyle.curveness') || 0; var curveness = zrUtil.retrieve3(
getCurvenessForEdge(edge, seriesModel, index),
edge.getModel().get('lineStyle.curveness'),
0
);
var p1 = vec2.clone(edge.node1.getLayout()); var p1 = vec2.clone(edge.node1.getLayout());
var p2 = vec2.clone(edge.node2.getLayout()); var p2 = vec2.clone(edge.node2.getLayout());
var cp1; var cp1;
......
...@@ -23,6 +23,7 @@ import {circularLayout} from './circularLayoutHelper'; ...@@ -23,6 +23,7 @@ import {circularLayout} from './circularLayoutHelper';
import {linearMap} from '../../util/number'; import {linearMap} from '../../util/number';
import * as vec2 from 'zrender/src/core/vector'; import * as vec2 from 'zrender/src/core/vector';
import * as zrUtil from 'zrender/src/core/util'; import * as zrUtil from 'zrender/src/core/util';
import {getCurvenessForEdge} from '../helper/multipleGraphEdgeHelper';
export default function (ecModel) { export default function (ecModel) {
ecModel.eachSeriesByType('graph', function (graphSeries) { ecModel.eachSeriesByType('graph', function (graphSeries) {
...@@ -84,11 +85,16 @@ export default function (ecModel) { ...@@ -84,11 +85,16 @@ export default function (ecModel) {
d = (edgeLength[0] + edgeLength[1]) / 2; d = (edgeLength[0] + edgeLength[1]) / 2;
} }
var edgeModel = edge.getModel(); var edgeModel = edge.getModel();
var curveness = zrUtil.retrieve3(
-getCurvenessForEdge(edge, graphSeries, idx, true),
edge.getModel().get('lineStyle.curveness'),
0
);
return { return {
n1: nodes[edge.node1.dataIndex], n1: nodes[edge.node1.dataIndex],
n2: nodes[edge.node2.dataIndex], n2: nodes[edge.node2.dataIndex],
d: d, d: d,
curveness: edgeModel.get('lineStyle.curveness') || 0, curveness: curveness,
ignoreForceLayout: edgeModel.get('ignoreForceLayout') ignoreForceLayout: edgeModel.get('ignoreForceLayout')
}; };
}); });
......
...@@ -18,6 +18,9 @@ ...@@ -18,6 +18,9 @@
*/ */
import * as vec2 from 'zrender/src/core/vector'; import * as vec2 from 'zrender/src/core/vector';
import * as zrUtil from 'zrender/src/core/util';
import {getCurvenessForEdge} from '../helper/multipleGraphEdgeHelper';
export function simpleLayout(seriesModel) { export function simpleLayout(seriesModel) {
var coordSys = seriesModel.coordinateSystem; var coordSys = seriesModel.coordinateSystem;
...@@ -31,12 +34,16 @@ export function simpleLayout(seriesModel) { ...@@ -31,12 +34,16 @@ export function simpleLayout(seriesModel) {
node.setLayout([+model.get('x'), +model.get('y')]); node.setLayout([+model.get('x'), +model.get('y')]);
}); });
simpleLayoutEdge(graph); simpleLayoutEdge(graph, seriesModel);
} }
export function simpleLayoutEdge(graph) { export function simpleLayoutEdge(graph, seriesModel) {
graph.eachEdge(function (edge) { graph.eachEdge(function (edge, index) {
var curveness = edge.getModel().get('lineStyle.curveness') || 0; var curveness = zrUtil.retrieve3(
edge.getModel().get('lineStyle.curveness') || null,
-getCurvenessForEdge(edge, seriesModel, index, true),
0
);
var p1 = vec2.clone(edge.node1.getLayout()); var p1 = vec2.clone(edge.node1.getLayout());
var p2 = vec2.clone(edge.node2.getLayout()); var p2 = vec2.clone(edge.node2.getLayout());
var points = [p1, p2]; var points = [p1, p2];
...@@ -48,4 +55,4 @@ export function simpleLayoutEdge(graph) { ...@@ -48,4 +55,4 @@ export function simpleLayoutEdge(graph) {
} }
edge.setLayout(points); edge.setLayout(points);
}); });
} }
\ No newline at end of file
...@@ -24,7 +24,6 @@ import linkList from '../../data/helper/linkList'; ...@@ -24,7 +24,6 @@ import linkList from '../../data/helper/linkList';
import createDimensions from '../../data/helper/createDimensions'; import createDimensions from '../../data/helper/createDimensions';
import CoordinateSystem from '../../CoordinateSystem'; import CoordinateSystem from '../../CoordinateSystem';
import createListFromArray from './createListFromArray'; import createListFromArray from './createListFromArray';
import {calculateMutilEdges, setCurvenessForLink} from './multipleGraphEdgeHelper';
export default function (nodes, edges, seriesModel, directed, beforeLink) { export default function (nodes, edges, seriesModel, directed, beforeLink) {
// ??? TODO // ??? TODO
...@@ -41,16 +40,13 @@ export default function (nodes, edges, seriesModel, directed, beforeLink) { ...@@ -41,16 +40,13 @@ export default function (nodes, edges, seriesModel, directed, beforeLink) {
var validEdges = []; var validEdges = [];
var linkCount = 0; var linkCount = 0;
// auto curveness
calculateMutilEdges(edges, seriesModel, graph);
for (var i = 0; i < edges.length; i++) { for (var i = 0; i < edges.length; i++) {
var link = edges[i]; var link = edges[i];
var source = link.source; var source = link.source;
var target = link.target; var target = link.target;
setCurvenessForLink(link, seriesModel, i, graph);
// addEdge may fail when source or target not exists // addEdge may fail when source or target not exists
if (graph.addEdge(source, target, linkCount)) { if (graph.addEdge(source, target, linkCount, seriesModel)) {
validEdges.push(link); validEdges.push(link);
linkNameList.push(zrUtil.retrieve(link.id, source + ' > ' + target)); linkNameList.push(zrUtil.retrieve(link.id, source + ' > ' + target));
linkCount++; linkCount++;
......
...@@ -17,122 +17,117 @@ ...@@ -17,122 +17,117 @@
* under the License. * under the License.
*/ */
var linkMap = {}; var KEY_DELIMITER = '-->';
var curvenessList = [];
/** /**
* params handler * params handler
* @param seriesModel * @param {module:echarts/model/SeriesModel} seriesModel
* @returns {*} * @returns {*}
*/ */
var getAutoCurvenessParams = function (seriesModel) { var getAutoCurvenessParams = function (seriesModel) {
var autoCurveness = seriesModel.getModel('autoCurveness'); return seriesModel.get('autoCurveness') || null;
if (!autoCurveness || !autoCurveness.option) {
return null;
}
return autoCurveness.option;
}; };
/** /**
* Generate a list of edge curvatures, 20 is the default * Generate a list of edge curvatures, 20 is the default
* @param seriesModel * @param {module:echarts/model/SeriesModel} seriesModel
* @param addLength append length * @param {number} appendLength
* @return 20 => [0, -0.2, 0.2, -0.4, 0.4, -0.6, 0.6, -0.8, 0.8, -1, 1, -1.2, 1.2, -1.4, 1.4, -1.6, 1.6, -1.8, 1.8, -2] * @return 20 => [0, -0.2, 0.2, -0.4, 0.4, -0.6, 0.6, -0.8, 0.8, -1, 1, -1.2, 1.2, -1.4, 1.4, -1.6, 1.6, -1.8, 1.8, -2]
*/ */
var createCurveness = function (seriesModel, addLength) { var createCurveness = function (seriesModel, appendLength) {
var autoCurvenssParmas = getAutoCurvenessParams(seriesModel); var autoCurvenessParmas = getAutoCurvenessParams(seriesModel);
var length = 20; var length = 20;
var curvenessList = [];
// handler the function set // handler the function set
if (typeof autoCurvenssParmas === 'number') { if (typeof autoCurvenessParmas === 'number') {
length = autoCurvenssParmas; length = autoCurvenessParmas;
} }
else if (typeof autoCurvenssParmas === 'function') { else if (Object.prototype.toString.call(autoCurvenessParmas) === '[object Array]') {
curvenessList = autoCurvenssParmas(); seriesModel._curvenessList = autoCurvenessParmas;
return; return;
} }
// addLength // append length
if (addLength) { if (appendLength > length) {
length = addLength; length = appendLength;
}
// if already calculated return
if (length < curvenessList.length) {
return;
} }
// 保证长度为偶数 // make sure the length is even
var len = length % 2 ? length + 2 : length + 3; var len = length % 2 ? length + 2 : length + 3;
curvenessList = []; curvenessList = [];
for (var i = 0; i < len; i++) { for (var i = 0; i < len; i++) {
curvenessList.push((i % 2 ? i + 1 : i) / 10 * (i % 2 ? -1 : 1)); curvenessList.push((i % 2 ? i + 1 : i) / 10 * (i % 2 ? -1 : 1));
} }
seriesModel._curvenessList = curvenessList;
}; };
/** /**
* Create different cache key data in the positive and negative directions, in order to set the curvature later * Create different cache key data in the positive and negative directions, in order to set the curvature later
* @param link * @param {number|string|module:echarts/data/Graph.Node} n1
* @param seriesModel * @param {number|string|module:echarts/data/Graph.Node} n2
* @returns {string} * @param {module:echarts/model/SeriesModel} seriesModel
* @returns {string} key
*/ */
var getKeyOfLinks = function (link, seriesModel) { var getKeyOfEdges = function (n1, n2, seriesModel) {
return [seriesModel.uid, link.source, link.target].join('>'); var source = [n1.id, n1.dataIndex].join('.');
var target = [n2.id, n2.dataIndex].join('.');
return [seriesModel.uid, source, target].join(KEY_DELIMITER);
}; };
/** /**
* get opposite key * get opposite key
* 获取反向的key * @param {string} key
* @param key
* @returns {string} * @returns {string}
*/ */
var getOppositeKey = function (key) { var getOppositeKey = function (key) {
var keys = key.split('>'); var keys = key.split(KEY_DELIMITER);
return [keys[0], keys[2], keys[1]].join(KEY_DELIMITER);
return [keys[0], keys[2], keys[1]].join('>');
}; };
/** /**
* set linkMap with key * set edgeMap with key
* @param link * @param {number|string|module:echarts/data/Graph.Node} n1
* @param seriesModel * @param {number|string|module:echarts/data/Graph.Node} n2
* @param index * @param {module:echarts/model/SeriesModel} seriesModel
* @param {number} index
*/ */
var setLinkToMap = function (link, seriesModel, index) { var setEdgeToMap = function (n1, n2, seriesModel, index) {
var key = getKeyOfLinks(link, seriesModel); var key = getKeyOfEdges(n1, n2, seriesModel);
var hasOppositeLinks = linkMap[getOppositeKey(key)]; var edgeMap = seriesModel._edgeMap;
var oppositeEdges = edgeMap[getOppositeKey(key)];
// set direction // set direction
if (hasOppositeLinks && linkMap[key] && !linkMap[key].isForward) { if (edgeMap[key] && !oppositeEdges) {
linkMap[getOppositeKey(key)].isForward = true; edgeMap[key].isForward = true;
}
else if (oppositeEdges && edgeMap[key]) {
oppositeEdges.isForward = true;
edgeMap[key].isForward = false;
} }
linkMap[key] = linkMap[key] || []; edgeMap[key] = edgeMap[key] || [];
linkMap[key].push(index); edgeMap[key].push(index);
}; };
/** /**
* get linkMap with key * get edgeMap with key
* @param link * @param edge
* @param seriesModel * @param {module:echarts/model/SeriesModel} seriesModel
* @param index
*/ */
var getLinkFromMap = function (link, seriesModel) { var getEdgeFromMap = function (edge, seriesModel) {
var key = getKeyOfLinks(link, seriesModel); var key = getKeyOfEdges(edge.node1, edge.node2, seriesModel);
return linkMap[key]; return seriesModel._edgeMap[key];
}; };
/** /**
* calculate all cases total length * calculate all cases total length
* @param link * @param edge
* @param seriesModel * @param seriesModel
* @returns {number} * @returns {number}
*/ */
var getTotalLengthBetweenNodes = function (link, seriesModel) { var getTotalLengthBetweenNodes = function (edge, seriesModel) {
var len = getLinkMapLengthWithKey([seriesModel.uid, link.source, link.target].join('>')); var len = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node1, edge.node2, seriesModel), seriesModel);
var lenV = getLinkMapLengthWithKey([seriesModel.uid, link.target, link.source].join('>')); var lenV = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node2, edge.node1, seriesModel), seriesModel);
return len + lenV; return len + lenV;
}; };
...@@ -141,81 +136,96 @@ var getTotalLengthBetweenNodes = function (link, seriesModel) { ...@@ -141,81 +136,96 @@ var getTotalLengthBetweenNodes = function (link, seriesModel) {
* *
* @param key * @param key
*/ */
var getLinkMapLengthWithKey = function (key) { var getEdgeMapLengthWithKey = function (key, seriesModel) {
return linkMap[key] ? linkMap[key].length : 0; var edgeMap = seriesModel._edgeMap;
return edgeMap[key] ? edgeMap[key].length : 0;
}; };
/** /**
* Count the number of edges between the same two points, used to obtain the curvature table and the parity of the edge * Count the number of edges between the same two points, used to obtain the curvature table and the parity of the edge
* @see /graph/GraphSeries.js@getInitialData
* @param edges * @param edges
* @param seriesModel * @param {module:echarts/model/SeriesModel} seriesModel
* @param graph
*/ */
export function calculateMutilEdges(edges, seriesModel, graph) { export function initCurvenessList(edges, seriesModel) {
if (!getAutoCurvenessParams(seriesModel)) { if (!getAutoCurvenessParams(seriesModel)) {
return; return;
} }
// Hang on this object 4 dispose // Hang on this object 4 dispose
curvenessList = graph.curvenessList || []; seriesModel._curvenessList = seriesModel._curvenessList || [];
linkMap = graph.linkMap = graph.linkMap || {}; // calc the array of curveness List
for (var i = 0; i < edges.length; i++) {
var link = edges[i];
var source = link.source;
var target = link.target;
if (!source || !target) {
continue;
}
setLinkToMap(link, seriesModel, i);
}
// calc the array of curvenessList
createCurveness(seriesModel); createCurveness(seriesModel);
} }
/** /**
* Set curvature for link * create the edgeMap after addEdges
* @param link * @see chart/helper/createGraphFromNodeEdge.js#L52
* @param seriesModel * @param {number|string|module:echarts/data/Graph.Node} n1
* @param {number|string|module:echarts/data/Graph.Node} n2
* @param {module:echarts/model/SeriesModel} seriesModel
* @param {number} dataIndex
*/
export function createEdgeMapForCurveness(n1, n2, seriesModel, dataIndex) {
seriesModel._edgeMap = seriesModel._edgeMap || {};
setEdgeToMap(n1, n2, seriesModel, dataIndex);
}
/**
* get curvature for edge
* @param edge
* @param {module:echarts/model/SeriesModel} seriesModel
* @param index * @param index
*/ */
export function setCurvenessForLink(link, seriesModel, index) { export function getCurvenessForEdge(edge, seriesModel, index, needReverse) {
if (!getAutoCurvenessParams(seriesModel)) { const autoCurvenessParams = getAutoCurvenessParams(seriesModel);
return; const isArrayParam = Object.prototype.toString.call(autoCurvenessParams) === '[object Array]';
if (!autoCurvenessParams) {
return null;
} }
var linkArray = getLinkFromMap(link, seriesModel); var edgeArray = getEdgeFromMap(edge, seriesModel);
if (!linkArray) { if (!edgeArray) {
return; return null;
} }
var linkIndex = linkArray.findIndex(function (it) { var edgeIndex = -1;
return it === index; for (var i = 0; i < edgeArray.length; i++) {
}); if (edgeArray[i] === index) {
var totalLen = getTotalLengthBetweenNodes(link, seriesModel); edgeIndex = i;
// if totalLen bigger than curvenessList, recreate curvenessList break;
if (totalLen > curvenessList.length) { }
createCurveness(seriesModel, totalLen);
} }
// if totalLen is Longer createCurveness
link.lineStyle = link.lineStyle || {}; var totalLen = getTotalLengthBetweenNodes(edge, seriesModel);
// if is opposite link, must set curvenss to opposite number createCurveness(seriesModel, totalLen);
var curKey = getKeyOfLinks(link, seriesModel);
if (!linkArray.isForward) { edge.lineStyle = edge.lineStyle || {};
// the opposite link show outside // if is opposite edge, must set curvenss to opposite number
var curKey = getKeyOfEdges(edge.node1, edge.node2, seriesModel);
var curvenessList = seriesModel._curvenessList;
// if pass array no need parity
var parityCorrection = isArrayParam ? 0 : totalLen % 2 ? 0 : 1;
if (!edgeArray.isForward) {
// the opposite edge show outside
var oppositeKey = getOppositeKey(curKey); var oppositeKey = getOppositeKey(curKey);
var len = getLinkMapLengthWithKey(oppositeKey); var len = getEdgeMapLengthWithKey(oppositeKey, seriesModel);
var layout = seriesModel.getModel('layout').option; var resValue = curvenessList[edgeIndex + len + parityCorrection];
// Because the curvature algorithm of each layout is different, the reverse needs to be adapted here // isNeedReverse, simple, force type need reverse the curveness in the junction of the forword and the opposite
if (layout === 'none' || layout === 'force') { if (needReverse) {
link.lineStyle.curveness = -1 * curvenessList[linkIndex + len + (totalLen % 2 ? 0 : 1)]; // set as array may make the parity by add 1
if (isArrayParam) {
return (len + parityCorrection + 1) % 2 ? resValue : -resValue;
}
else {
return (len + parityCorrection) % 2 ? resValue : -resValue;
}
} }
else if (layout === 'circular') { else {
link.lineStyle.curveness = curvenessList[linkIndex + len + (totalLen % 2 ? 0 : 1)]; return curvenessList[edgeIndex + len + parityCorrection];
} }
} }
else { else {
link.lineStyle.curveness = curvenessList[linkIndex + (totalLen % 2 ? 0 : 1)]; return curvenessList[edgeIndex];
} }
} }
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
import {__DEV__} from '../config'; import {__DEV__} from '../config';
import * as zrUtil from 'zrender/src/core/util'; import * as zrUtil from 'zrender/src/core/util';
import {enableClassCheck} from '../util/clazz'; import {enableClassCheck} from '../util/clazz';
import {createEdgeMapForCurveness} from '../chart/helper/multipleGraphEdgeHelper';
// id may be function name of Object, add a prefix to avoid this problem. // id may be function name of Object, add a prefix to avoid this problem.
function generateNodeKey(id) { function generateNodeKey(id) {
...@@ -137,9 +138,10 @@ graphProto.getNodeById = function (id) { ...@@ -137,9 +138,10 @@ graphProto.getNodeById = function (id) {
* @param {number|string|module:echarts/data/Graph.Node} n1 * @param {number|string|module:echarts/data/Graph.Node} n1
* @param {number|string|module:echarts/data/Graph.Node} n2 * @param {number|string|module:echarts/data/Graph.Node} n2
* @param {number} [dataIndex=-1] * @param {number} [dataIndex=-1]
* @param {module:echarts/model/SeriesModel} seriesModel
* @return {module:echarts/data/Graph.Edge} * @return {module:echarts/data/Graph.Edge}
*/ */
graphProto.addEdge = function (n1, n2, dataIndex) { graphProto.addEdge = function (n1, n2, dataIndex, seriesModel) {
var nodesMap = this._nodesMap; var nodesMap = this._nodesMap;
var edgesMap = this._edgesMap; var edgesMap = this._edgesMap;
...@@ -177,6 +179,8 @@ graphProto.addEdge = function (n1, n2, dataIndex) { ...@@ -177,6 +179,8 @@ graphProto.addEdge = function (n1, n2, dataIndex) {
this.edges.push(edge); this.edges.push(edge);
edgesMap[key] = edge; edgesMap[key] = edge;
createEdgeMapForCurveness(n1, n2, seriesModel, dataIndex);
return edge; return edge;
}; };
......
...@@ -34,6 +34,7 @@ under the License. ...@@ -34,6 +34,7 @@ under the License.
} }
</style> </style>
<div id="main0" class="main"></div> <div id="main0" class="main"></div>
<div id="main7" class="main"></div>
<div id="main1" class="main"></div> <div id="main1" class="main"></div>
<div id="main2" class="main"></div> <div id="main2" class="main"></div>
<div id="main3" class="main"></div> <div id="main3" class="main"></div>
...@@ -41,37 +42,74 @@ under the License. ...@@ -41,37 +42,74 @@ under the License.
<div id="main5" class="main"></div> <div id="main5" class="main"></div>
<div id="main6" class="main"></div> <div id="main6" class="main"></div>
<script> <script>
window.createLinks = function (length) { require([
var res = [] 'echarts'
for(var i = 0; i < length; i++) { ], function (echarts) {
var x = Math.round((Math.random() * 10)) % 2 var container = document.getElementById('main6');
res.push({ var data = [{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node2"}];
source: x ? 'node1' : 'node3',
target: x ? 'node3' : 'node1',
label: {
show: true
},
})
}
res.push({ var option = {
source: 'node1', title: {
target: 'node2' text: 'autoCurveness array test'
}) },
tooltip: {},
animationDurationUpdate: 1500,
animationEasingUpdate: 'quinticInOut',
series: [
{
type: 'graph',
layout: 'none',
symbolSize: 50,
roam: true,
label: {
show: true
},
edgeSymbol: ['circle', 'arrow'],
edgeSymbolSize: [4, 10],
edgeLabel: {
fontSize: 12
},
data: [{
name: 'node1',
x: 300,
y: 300
}, {
name: 'node2',
x: 800,
y: 300
}, {
name: 'node3',
x: 550,
y: 100
}],
links: data,
autoCurveness: [0.2, -0.2, 0.4, -0.4, 0.6, -0.6, 0.8, -0.8, 1, -1, 0.1, -0.1, 0.3, -0.3, 0.5, -0.5, 0.7, -0.7, 0.9, -0.9],
lineStyle: {
opacity: 0.9,
width: 2,
curveness: 0
}
}
]
}
return res; var chart = echarts.init(container, '', {renderer: 'svg'});
} chart.setOption(option)
})
</script> </script>
<script> <script>
require([ require([
'echarts' 'echarts'
], function (echarts) { ], function (echarts) {
var container = document.getElementById('main6'); var container = document.getElementById('main5');
var data = [{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node2"}];
var option = { var option = {
title: { title: {
text: 'autoCurveness函数测试' text: 'no set autoCurveness '
}, },
tooltip: {}, tooltip: {},
animationDurationUpdate: 1500, animationDurationUpdate: 1500,
...@@ -103,10 +141,7 @@ under the License. ...@@ -103,10 +141,7 @@ under the License.
x: 550, x: 550,
y: 100 y: 100
}], }],
links: createLinks(14), links: data,
autoCurveness: function() {
return [0.2, -0.2, 0.4, -0.4, 0.6, -0.6, 0.8, -0.8, 1, -1, 0.1, -0.1, 0.3, -0.3, 0.5, -0.5, 0.7, -0.7, 0.9, -0.9];
},
lineStyle: { lineStyle: {
opacity: 0.9, opacity: 0.9,
width: 2, width: 2,
...@@ -125,11 +160,16 @@ under the License. ...@@ -125,11 +160,16 @@ under the License.
require([ require([
'echarts' 'echarts'
], function (echarts) { ], function (echarts) {
var container = document.getElementById('main5'); var container = document.getElementById('main7');
var data = [
{source: 'node1', target: 'node3', label: {show: true}},
{source: 'node1', target: 'node3', label: {show: true}},
{source: 'node3', target: 'node1', label: {show: true}},
]
var option = { var option = {
title: { title: {
text: 'autoCurveness 不传入测试' text: 'autoCurveness 3 test case'
}, },
tooltip: {}, tooltip: {},
animationDurationUpdate: 1500, animationDurationUpdate: 1500,
...@@ -161,7 +201,8 @@ under the License. ...@@ -161,7 +201,8 @@ under the License.
x: 550, x: 550,
y: 100 y: 100
}], }],
links: createLinks(14), links: data,
autoCurveness: 3,
lineStyle: { lineStyle: {
opacity: 0.9, opacity: 0.9,
width: 2, width: 2,
...@@ -181,7 +222,6 @@ under the License. ...@@ -181,7 +222,6 @@ under the License.
if(i % 3 === 0) return 'none'; if(i % 3 === 0) return 'none';
if(i % 3 == 1) return 'circular'; if(i % 3 == 1) return 'circular';
if(i % 3 == 2) return 'force'; if(i % 3 == 2) return 'force';
// return 'force'
} }
require([ require([
'echarts' 'echarts'
...@@ -189,10 +229,17 @@ under the License. ...@@ -189,10 +229,17 @@ under the License.
for(var i = 0; i < 5; i++) { for(var i = 0; i < 5; i++) {
var container = document.getElementById('main' + i); var container = document.getElementById('main' + i);
var times = 8; var times = 8;
var datas = {
'1': [{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node2"}],
'9': [{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node2"}],
'17': [{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node2"}],
'25': [{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node2"}],
'33': [{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node1","target":"node3","label":{"show":true}},{"source":"node3","target":"node1","label":{"show":true}},{"source":"node1","target":"node2"}]
}
var option = { var option = {
title: { title: {
text: 'Graph 简单示例, 边数:' + (i * times + 1) + '布局' + getLayout(i) text: 'Graph, edges numbers:' + (i * times + 1) + ' layout' + getLayout(i)
}, },
tooltip: {}, tooltip: {},
animationDurationUpdate: 1500, animationDurationUpdate: 1500,
...@@ -224,7 +271,7 @@ under the License. ...@@ -224,7 +271,7 @@ under the License.
x: 550, x: 550,
y: 100 y: 100
}], }],
links: createLinks(i * times + 1), links: datas[(i * times + 1) + ''],
autoCurveness: i * times + 1, autoCurveness: i * times + 1,
lineStyle: { lineStyle: {
opacity: 0.9, opacity: 0.9,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册