待定,修改未完成
配置项如下
var data = {
children: [
{
children: [
{
ifend: '1',
name: '节点二1',
number: '.18',
},
],
name: '节点一1',
number: '0',
},
{
ifend: '1',
name: '节点一2',
number: '.87',
},
{
ifend: '1',
name: '节点一3',
number: '.92',
},
{
ifend: '1',
name: '节点一4',
number: '1.68',
},
{
children: [
{
code: '2',
ifend: '1',
name: '节点二10',
number: '10.01',
},
{
ifend: '1',
name: '节点二11',
number: '0.31',
},
{
code: '2',
ifend: '1',
name: '节点二12',
number: '-.92',
},
{
code: '2',
name: '节点二2',
number: '100',
},
{
ifend: '1',
name: '节点二3',
number: '.05',
},
{
ifend: '1',
name: '节点二4',
number: '1.53',
},
{
ifend: '1',
name: '节点二5',
number: '1.14',
},
{
ifend: '1',
name: '节点二6',
number: '1.98',
},
{
ifend: '1',
name: '节点二7',
number: '.02',
},
{
ifend: '1',
name: '节点二8',
number: '1.03',
},
{
ifend: '1',
name: '节点二9',
number: '3.05',
},
],
name: '节点一5',
number: '.16',
},
{
ifend: '1',
name: '节点一6',
number: '2.33',
},
],
name: '节点',
number: '.46',
};
function format(data) {
data.x = 0;
data.y = 0;
if (!data.hasOwnProperty('children')) {
data.len = [1, -1];
data.leny = [1, 9];
return data;
}
var l2 = data.children;
var hi = parseInt(l2.length / 2);
var xi = l2.length - hi;
var his = getSum(l2, 0, hi);
var xis = getSum(l2, xi - 1, l2.length);
l2 = sortData(l2, hi, xi);
data.children = l2;
var jhi = hi > 9 || his === 0 ? 300 : 200;
var jxi = xi > 9 || xis === 0 ? 300 : 200;
var maxmin = [-100000, 100000];
var maxminy = [-100000, 100000];
for (var i = 0; i < l2.length; i++) {
if (i < hi) {
l2[i].x = getLoction(hi, data.x, i + 1);
l2[i].y = data.y + jhi;
l2[i].fx = getFX(hi, i, false);
} else {
l2[i].x = getLoction(xi, data.x, i - hi + 1);
l2[i].y = data.y - jxi;
l2[i].fx = getFX(xi, i - hi, true);
}
getMaxMin(maxmin, l2[i].x);
getMaxMin(maxminy, l2[i].y);
if (!l2[i].hasOwnProperty('children')) {
continue;
}
var l3 = l2[i].children;
for (var j = 0; j < l3.length; j++) {
if (i < hi) {
l3[j].x = getLoction(l3.length, l2[i].x, j + 1);
l3[j].y = l2[i].y + 200;
l3[j].fx = getFX(l3.length, j, false);
} else {
l3[j].x = getLoction(l3.length, l2[i].x, j + 1);
l3[j].y = l2[i].y - 200;
l3[j].fx = getFX(l3.length, j, true);
}
getMaxMin(maxmin, l3[j].x);
getMaxMin(maxminy, l3[j].y);
}
}
var c;
if (hi % 2 === 0) {
c = hi / 2;
if (l2[c].hasOwnProperty('children')) {
if (l2[c - 1].hasOwnProperty('children') && l2[c].children[0].x < l2[c].x - 50) {
var tem = 50 - l2[c].children[0].x;
for (var j = 0; j < l2[c].children.length; j++) {
l2[c].children[j].x = l2[c].children[j].x + tem;
getMaxMin(maxmin, l2[c].children[j].x);
}
l2[c].x = getLoction2(l2[c].children);
}
}
} else {
c = parseInt(hi / 2);
}
for (var i = c + 1; i < hi; i++) {
if (l2[i].hasOwnProperty('children')) {
if (
l2[i - 1].hasOwnProperty('children') &&
l2[i - 1].children[l2[i - 1].children.length - 1].x - l2[i].children[0].x > -100
) {
var tem = l2[i - 1].children[l2[i - 1].children.length - 1].x + 100 - l2[i].children[0].x;
for (var j = 0; j < l2[i].children.length; j++) {
l2[i].children[j].x = l2[i].children[j].x + tem;
getMaxMin(maxmin, l2[i].children[j].x);
}
l2[i].x = getLoction2(l2[i].children);
}
}
}
for (var i = c - 1; i >= 0; i--) {
if (l2[i].hasOwnProperty('children')) {
if (
l2[i + 1].hasOwnProperty('children') &&
l2[i + 1].children[0].x - l2[i].children[l2[i].children.length - 1].x < 100
) {
var tem = l2[i].children[l2[i].children.length - 1].x - (l2[i + 1].children[0].x - 100);
for (var j = 0; j < l2[i].children.length; j++) {
l2[i].children[j].x = l2[i].children[j].x - tem;
getMaxMin(maxmin, l2[i].children[j].x);
}
l2[i].x = getLoction2(l2[i].children);
}
}
}
if (xi % 2 === 0) {
c = xi / 2 + hi;
if (l2[c].hasOwnProperty('children')) {
if (l2[c - 1].hasOwnProperty('children') && l2[c].children[0].x < l2[c].x - 50) {
var tem = 50 - l2[c].children[0].x;
for (var j = 0; j < l2[c].children.length; j++) {
l2[c].children[j].x = l2[c].children[j].x + tem;
getMaxMin(maxmin, l2[c].children[j].x);
}
l2[c].x = getLoction2(l2[c].children);
}
}
} else {
c = parseInt(xi / 2) + hi;
}
for (var i = c + 1; i < l2.length; i++) {
if (l2[i].hasOwnProperty('children')) {
if (
l2[i - 1].hasOwnProperty('children') &&
l2[i - 1].children[l2[i - 1].children.length - 1].x - l2[i].children[0].x > -100
) {
var tem = l2[i - 1].children[l2[i - 1].children.length - 1].x + 100 - l2[i].children[0].x;
for (var j = 0; j < l2[i].children.length; j++) {
l2[i].children[j].x = l2[i].children[j].x + tem;
getMaxMin(maxmin, l2[i].children[j].x);
}
l2[i].x = getLoction2(l2[i].children);
}
}
}
for (var i = c - 1; i >= hi; i--) {
if (l2[i].hasOwnProperty('children')) {
if (
l2[i + 1].hasOwnProperty('children') &&
l2[i + 1].children[0].x - l2[i].children[l2[i].children.length - 1].x < 100
) {
var tem = l2[i].children[l2[i].children.length - 1].x - (l2[i + 1].children[0].x - 100);
for (var j = 0; j < l2[i].children.length; j++) {
l2[i].children[j].x = l2[i].children[j].x - tem;
getMaxMin(maxmin, l2[i].children[j].x);
}
l2[i].x = getLoction2(l2[i].children);
}
}
}
// data.x = (maxmin[0] - maxmin[1]) / 2 + maxmin[1];
if (maxmin[0] - maxmin[1] <= 400) {
maxmin[0] = maxmin[0] + 100;
maxmin[1] = maxmin[1] - 100;
}
data.len = maxmin;
data.leny = maxminy;
return data;
}
function format2(data) {
if (!data.hasOwnProperty('children')) {
return data;
}
var l2 = data.children;
var hi = parseInt(l2.length / 2);
var xi = l2.length - hi;
var maxmin = data.len;
for (var i = 0; i < l2.length; i++) {
if (!l2[i].hasOwnProperty('children')) {
if (i > 0 && i != hi && l2[i - 1].hasOwnProperty('children') && l2[i - 1].children.length > 5) {
var tem = (l2[i - 1].children.length - 5) / 2;
l2[i].x = l2[i].x + 100 * tem;
var len,
flag = false;
if (i < hi) {
len = hi;
} else {
len = l2.length;
}
for (var j = i + 1; j < len; j++) {
flag = true;
l2[j].x = l2[j].x + 100 * tem;
if (l2[j].hasOwnProperty('children')) {
var children = l2[j].children;
for (var k = 0; k < children.length; k++) {
children[k].x = children[k].x + 100 * tem;
getMaxMin(maxmin, children[k].x);
}
}
getMaxMin(maxmin, l2[j].x);
}
if (flag) {
l2[i].x = l2[i].x > maxmin[0] ? maxmin[0] : l2[i].x;
}
} else if (i < l2.length - 1 && l2[i + 1].hasOwnProperty('children') && l2[i + 1].children.length > 5) {
var tem = (l2[i + 1].children.length - 5) / 2;
l2[i].x = l2[i].x - 100 * tem;
var len,
flag = false;
if (i < hi) {
len = 0;
} else {
len = hi;
}
for (var j = i - 1; j >= len; j--) {
flag = true;
l2[j].x = l2[j].x - 100 * tem;
if (l2[j].hasOwnProperty('children')) {
var children = l2[j].children;
for (var k = 0; k < children.length; k++) {
children[k].x = children[k].x - 100 * tem;
getMaxMin(maxmin, children[k].x);
}
}
getMaxMin(maxmin, l2[j].x);
}
if (flag) {
l2[i].x = l2[i].x < maxmin[1] ? maxmin[1] : l2[i].x;
}
}
}
}
// data.x = (maxmin[0] - maxmin[1]) / 2 + maxmin[1];
if (maxmin[0] - maxmin[1] <= 400) {
maxmin[0] = maxmin[0] + 100;
maxmin[1] = maxmin[1] - 100;
}
data.len = maxmin;
return data;
}
function getLoction(num, x, index) {
if (num % 2 === 0) {
var c = num / 2 - index;
x = x - 50 - 100 * c;
} else {
var c = parseInt(num / 2 + 1) - index;
x = x - 100 * c;
}
return x;
}
/*function getLoction2(data) {
var len = data.length;
var x;
if (len % 2 === 0) {
var c = len / 2;
x = data[c - 1].x + 50;
} else {
var c = parseInt(len / 2 + 1);
x = data[c - 1].x;
}
return x;
}*/
function getFX(len, index, fx) {
var x, c;
if (len < 1) {
return 1;
}
c = len % 2 === 0 ? len / 2 : parseInt(len / 2) + 1;
x = index < c ? 1 : -1;
if (fx) {
x = -x;
}
return x;
}
function getSum(data, st, ed) {
if (ed > data.length) {
ed = data.length;
}
var count = 0;
for (var i = st; i < ed; i++) {
if (!data[i].hasOwnProperty('children')) {
continue;
}
var l3 = data[i].children;
count = count + l3.length;
}
return count;
}
function sortData(data, hi, xi) {
var res = [];
var len = hi - 1;
var pos = 0;
for (var i = 0; i < hi - 1; i++) {
var flag = 1;
for (var j = 0; j < len; j++) {
var dx = !data[j].hasOwnProperty('children') ? 0 : data[j].children.length,
dx1 = !data[j + 1].hasOwnProperty('children') ? 0 : data[j + 1].children.length;
if (dx > dx1) {
var tem = data[j];
data[j] = data[j + 1];
data[j + 1] = tem;
flag = 0;
pos = j;
}
}
len = pos;
if (flag === 1) {
break;
}
}
for (var i = 0; i < hi; i++) {
if (i % 2 === 0) {
res[i / 2] = data[i];
} else {
res[hi - (i + 1) / 2] = data[i];
}
}
len = data.length - 1;
pos = 0;
for (var i = hi; i < data.length - 1; i++) {
var flag = 1;
for (var j = hi; j < len; j++) {
var dx = !data[j].hasOwnProperty('children') ? 0 : data[j].children.length,
dx1 = !data[j + 1].hasOwnProperty('children') ? 0 : data[j + 1].children.length;
if (dx > dx1) {
var tem = data[j];
data[j] = data[j + 1];
data[j + 1] = tem;
flag = 0;
pos = j;
}
}
len = pos;
if (flag === 1) {
break;
}
}
for (var i = 0; i < xi; i++) {
if (i % 2 === 0) {
res[i / 2 + hi] = data[i + hi];
} else {
res[xi - (i + 1) / 2 + hi] = data[i + hi];
}
}
return res;
}
function getMaxMin(maxmin, x) {
if (maxmin[0] < x) {
maxmin[0] = x;
}
if (maxmin[1] > x) {
maxmin[1] = x;
}
return maxmin;
}
function initCharts(returninfo) {
var res = {};
var links = [];
var lines = [];
var yiji =
'image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAAgCAYAAABO6BuSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFMzhFMDM4REEwQUYxMUVBQkY1NEIzNTg4MTM4RjIxOCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMzhFMDM4RUEwQUYxMUVBQkY1NEIzNTg4MTM4RjIxOCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUzOEUwMzhCQTBBRjExRUFCRjU0QjM1ODgxMzhGMjE4IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUzOEUwMzhDQTBBRjExRUFCRjU0QjM1ODgxMzhGMjE4Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ZMccrwAACbZJREFUeNrkWUtvJFcV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';
var erji = yiji;
var sanji = erji;
returninfo.number = returninfo.number === undefined ? '--' : returninfo.number + '%';
returninfo.number = returninfo.number.startsWith('.') ? '0' + returninfo.number : returninfo.number;
returninfo.number = returninfo.number.startsWith('-.') ? returninfo.number.replace('-.', '-0.') : returninfo.number;
var url = '${pageContext.request.requestURL}'.replace('${pageContext.request.requestURI}', '');
var data = [
{
name: returninfo.name + ':' + returninfo.number,
tooltip: {
formatter: '{b}',
},
symbol: yiji,
symbolSize: [60, 40],
value: [returninfo.x, returninfo.y],
datadate: returninfo.datadate,
spid: returninfo.id,
},
];
if ('children' in returninfo) {
var l2 = returninfo.children;
var curveness, colork, colorn, xs;
for (var i = 0; i < l2.length; i++) {
curveness = l2[i].fx === 1 ? 0.1 : -0.1;
l2[i].number = l2[i].number === undefined ? '--' : l2[i].number + '%';
l2[i].number = l2[i].number.startsWith('.') ? '0' + l2[i].number : l2[i].number;
l2[i].number = l2[i].number.startsWith('-.') ? l2[i].number.replace('-.', '-0.') : l2[i].number;
colork = l2[i].code === '2' || l2[i].code === 2 ? '#C75050' : '#53B5EA';
var link = {
source: returninfo.name + ':' + returninfo.number,
target: l2[i].name + ':\n' + l2[i].number,
lineStyle: {
curveness: curveness,
color: colork,
},
};
links.push(link);
colorn = l2[i].code === '2' || l2[i].code === 2 ? 'rgba(199,80,80,0.5)' : 'rgba(55,155,255,0.5)';
var line = {
coords: [
[returninfo.x, returninfo.y],
[l2[i].x, l2[i].y],
],
lineStyle: {
curveness: curveness,
color: colorn,
},
};
lines.push(line);
var node = {
name: l2[i].name + ':\n' + l2[i].number,
tooltip: {
formatter: '{b}',
},
symbol: erji,
symbolSize: [60, 40],
value: [l2[i].x, l2[i].y],
datadate: l2[i].datadate,
ifend: l2[i].ifend,
spid: l2[i].id,
};
data.push(node);
if ('children' in l2[i]) {
var l3 = l2[i].children;
for (var j = 0; j < l3.length; j++) {
curveness = l3[j].fx === 1 ? 0.1 : -0.1;
l3[j].number = l3[j].number === undefined ? '--' : l3[j].number + '%';
l3[j].number = l3[j].number.startsWith('.') ? '0' + l3[j].number : l3[j].number;
l3[j].number = l3[j].number.startsWith('-.') ? l3[j].number.replace('-.', '-0.') : l3[j].number;
colork = l3[j].code === '2' || l3[j].code === 2 ? '#C75050' : '#53B5EA';
var link = {
source: l2[i].name + ':\n' + l2[i].number,
target: l3[j].name + ':\n' + l3[j].number,
lineStyle: {
curveness: curveness,
color: colork,
},
};
links.push(link);
colorn = l3[j].code === '2' || l3[j].code === 2 ? 'rgba(199,80,80,0.5)' : 'rgba(55,155,255,0.5)';
var line = {
coords: [
[l2[i].x, l2[i].y],
[l3[j].x, l3[j].y],
],
lineStyle: {
curveness: curveness,
color: colorn,
},
};
lines.push(line);
node = {
name: l3[j].name + ':\n' + l3[j].number,
tooltip: {
formatter: '{b}',
},
symbol: sanji,
symbolSize: [60, 40],
value: [l3[j].x, l3[j].y],
datadate: l3[j].datadate,
ifend: l3[j].ifend,
spid: l3[j].id,
};
data.push(node);
}
}
}
}
res.data = data;
res.links = links;
res.lines = lines;
res.len = returninfo.len;
res.leny = returninfo.leny;
return res;
}
var jsons = format(data);
debugger;
jsons = format2(jsons);
var returninfo = initCharts(jsons);
option = {
backgroundColor: '#f5f5f5',
grid: {
left: '5%',
right: '5%',
},
xAxis: {
show: false,
type: 'value',
max: returninfo.len[0],
min: returninfo.len[1],
},
yAxis: {
show: false,
type: 'value',
max: returninfo.leny[0],
min: returninfo.leny[1] - 10,
},
tooltip: {},
series: [
{
type: 'graph',
zlevel: 5,
draggable: false,
coordinateSystem: 'cartesian2d', //使用二维的直角坐标系(也称笛卡尔坐标系)
label: {
show: true,
color: '#000',
position: 'bottom',
},
data: returninfo.data,
links: returninfo.links,
lineStyle: {
opacity: 1,
width: 2,
},
},
{
type: 'lines',
coordinateSystem: 'cartesian2d',
zlevel: 1,
animation: false,
effect: {
show: true,
period: 5,
trailLength: 0.01,
symbolSize: 12,
symbol: 'pin',
loop: true,
},
data: returninfo.lines,
lineStyle: {
width: 0,
},
},
{
type: 'lines',
coordinateSystem: 'cartesian2d',
zlevel: 1,
animation: false,
effect: {
show: true,
period: 6,
trailLength: 0.01,
symbolSize: 12,
symbol: 'pin',
loop: true,
},
data: returninfo.lines,
lineStyle: {
width: 0,
},
},
{
type: 'lines',
coordinateSystem: 'cartesian2d',
zlevel: 1,
animation: false,
effect: {
show: true,
period: 8,
trailLength: 0.01,
symbolSize: 12,
symbol: 'pin',
loop: true,
},
data: returninfo.lines,
lineStyle: {
width: 0,
},
},
],
};
/*myChart.on('click', function(params) {
if (params.dataType === 'node') {
var data = params.data;
if (data.ifend === '1' || data.ifend === 1) {
var sp_id = data.spid;
var data_date = data.datadate;
var url = getUrlByParams("/branchLineLoss/getMeterJson?sp_id=" +
sp_id + "&data_date=" + data_date, null);
createRespone('楼层结构', url, null, null, '650px', '600px');
}
}
}*/