From bc578b47da11cffc4dc197906e43d799bcb0f986 Mon Sep 17 00:00:00 2001 From: Heiko Date: Thu, 25 Oct 2018 16:08:24 +0200 Subject: [PATCH] Bug fix 3.4/ui graph parsing (#7063) * fixes some graph data parsing issues, if format was not like it was expected * changelog --- CHANGELOG | 3 ++ .../APP/frontend/js/views/graphViewer.js | 29 ++++++++++++------- .../APP/frontend/js/views/queryView.js | 15 ++++++++-- 3 files changed, 33 insertions(+), 14 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 2ffd3f6546..9279091714 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,9 @@ v3.4.0-rc.4 (XXXX-XX-XX) ------------------------ +* fixes some graph data parsing issues in the ui, e.g. cleaning up duplicate + edges inside the graph viewer. + * in a cluster environment, the arangod process now exits if wrong credentials are used during the startup process. diff --git a/js/apps/system/_admin/aardvark/APP/frontend/js/views/graphViewer.js b/js/apps/system/_admin/aardvark/APP/frontend/js/views/graphViewer.js index 6a70578528..62af12fef3 100644 --- a/js/apps/system/_admin/aardvark/APP/frontend/js/views/graphViewer.js +++ b/js/apps/system/_admin/aardvark/APP/frontend/js/views/graphViewer.js @@ -149,7 +149,6 @@ self.renderGraph(data); }, error: function (e) { - console.log(e); arangoHelper.arangoError('Graph', 'Could not load full graph.'); } }); @@ -534,17 +533,22 @@ */ }); } else if (type === 'array') { - _.each(data, function (edge) { - vertices[edge._from] = null; - vertices[edge._to] = null; + var edgeObj = {}; - returnObj.edges.push({ - id: edge._id, - source: edge._from, - // label: edge._key, - color: '#cccccc', - target: edge._to - }); + _.each(data, function (edge) { + if (edge) { + vertices[edge._from] = null; + vertices[edge._to] = null; + + if (edge._id) { + edgeObj[edge._id] = { + id: edge._id, + source: edge._from, + color: '#cccccc', + target: edge._to + }; + } + } }); _.each(vertices, function (val, key) { @@ -557,6 +561,9 @@ y: Math.random() }); }); + _.each(edgeObj, function (edge) { + returnObj.edges.push(edge); + }); } return returnObj; diff --git a/js/apps/system/_admin/aardvark/APP/frontend/js/views/queryView.js b/js/apps/system/_admin/aardvark/APP/frontend/js/views/queryView.js index 77ccc1043f..7cd5e9f5dd 100644 --- a/js/apps/system/_admin/aardvark/APP/frontend/js/views/queryView.js +++ b/js/apps/system/_admin/aardvark/APP/frontend/js/views/queryView.js @@ -2495,8 +2495,17 @@ // check if result could be displayed as graph // case a) result has keys named vertices and edges - if (result[0]) { - if (result[0].vertices && result[0].edges) { + + var index = 0; + for (var i = 0; i < result.length; i++) { + if (result[i]) { + index = i; + break; + } + } + + if (result[index]) { + if (result[index].vertices && result[index].edges) { var hitsa = 0; var totala = 0; @@ -2739,7 +2748,7 @@ var headers = {}; // quick lookup cache var pos = 0; _.each(data.original, function (obj) { - if (first === true) { + if (first === true && obj) { tableDescription.titles = Object.keys(obj); tableDescription.titles.forEach(function (t) { headers[String(t)] = pos++;