自动化用例调用链模拟
配置项如下
var apis = [
{ uri: '1', status: 1 },
{ uri: '2', status: 1 },
{ uri: '3', status: 1 },
{ uri: '4', status: 1 },
{ uri: '5', status: 1 },
{ uri: '6', status: 1 },
{ uri: '7', status: 1 },
{ uri: '8', status: 0 },
{ uri: '9', status: 1 },
{ uri: '10', status: 1 },
{ uri: '11', status: 1 },
{ uri: '12', status: 1 },
{ uri: '13', status: 1 },
{ uri: '14', status: 1 } ,
{ uri: '15', status: 1 } ,
{ uri: '16', status: 1 } ,
{ uri: '17', status: 1 } ,
{ uri: '18', status: 1 } ,
{ uri: '19', status: 0 } ,
{ uri: '20', status: 1 } ,
{ uri: '21', status: 1 } ,
{ uri: '22', status: 1 } ,
{ uri: '23', status: 1 } ,
{ uri: '24', status: 1 } ,
{ uri: '25', status: 1 } ,
{ uri: '26', status: 1 } ,
{ uri: '27', status: 1 } ,
{ uri: '28', status: 1 } ,
{ uri: '29', status: 1 } ,
{ uri: '30', status: 1 } ,
{ uri: '31', status: 1 }
]
var xn = 8;
var ynj = [200, 400, 600, 800, 1000, 1200, 1400, 1600]
var yno = [1600, 1400, 1200, 1000, 800, 600, 400, 200]
var data = apis.map((el, ei) => {
let rn = Math.floor(ei / xn);
return {
name: el.uri,
draggable: false,
value: ((rn + 1) % 2 !== 0) ?
[ynj[ei % xn], 100 * (rn + 1)] : // 奇数行
[yno[ei % xn], 100 * (rn + 1)], // 偶数行
itemStyle: {
color: el.status === 1 ? '#90EE90' : '#FFA500'
}
}
})
var links = apis.map((el, ei) => {
if ((ei + 1) < apis.length) {
return {
source: el.uri,
value: '',
target: apis[ei + 1].uri
}
} else {
return {}
}
})
option = {
grid: [
{x: 40, y: 20, width: "95%", height: '95%' ,
tooltip:{
trigger: 'item',
formatter: "{a}"
},
}
],
egend: {
data:['自动化用例']
},
tooltip:
{
trigger: 'axis',
},
xAxis: [
{ gridIndex: 0, type:"value", show:false },
{ gridIndex: 0, type:"value", show:false }
],
yAxis: [
{
gridIndex: 0,
type:"category",
data:[""],
axisTick: {show: false},
axisLine: {show: false}
},
{ gridIndex: 0, show: false, type: 'value', inverse: true, max: 600 }
],
axisPointer: {
label: {
backgroundColor: '#777'
}
},
series: [
{
name: '自动化用例',
type: 'bar',
xAxisIndex: 0,
yAxisIndex: 0,
barWidth: '100%',
barGap: 0,
data: [2000],
itemStyle: {
color: '#85C5ED'
},
label:{
show: true,
color: '#000000',
position: [6, 45],
formatter: "{a}"
},
zlevel: 1
},
{
type: 'graph',
coordinateSystem: 'cartesian2d', // 使用二维的直角坐标系
legendHoverLink: false,
hoverAnimation: true,
nodeScaleRatio: false,
symbol: 'circle', // 节点显示形状
symbolSize: 30, // 节点大小
edgeSymbol: ['none', 'arrow'], // 线两边的标记
symbolOffset: [0, 0],
edgeSymbolSize: [0, 8], // 标记大小
edgeLabel: {
show: false,
normal: {
show: true,
position: 'middle',
textStyle: {
fontSize: 12
},
formatter: "{c}"
}
},
focusNodeAdjacency: true, // 鼠标移到节点上突出显示节点以及节点的边和邻接节点
roam: false, // 关闭鼠标缩放
itemStyle: {
normal: {
label: {
show: true,
textStyle: {
color: '#333'
}
},
nodeStyle : {
brushType : 'both',
borderColor : 'rgba(255,215,0,0.4)',
borderWidth : 1
}
}
},
lineStyle: {
normal: {
width: 1,
shadowColor: 'none',
color:'#000000',
},
},
tooltip: {
formatter: '{b}'
},
xAxisIndex: 1,
yAxisIndex: 1,
zlevel: 10,
data: data,
links: links
}
]
};