diff --git a/html/admin/js/graphViewer/graph/colourMapper.js b/html/admin/js/graphViewer/graph/colourMapper.js
index e54ee5d844..be1b249fac 100644
--- a/html/admin/js/graphViewer/graph/colourMapper.js
+++ b/html/admin/js/graphViewer/graph/colourMapper.js
@@ -38,34 +38,37 @@ function ColourMapper() {
self = this,
nextColour = 0;
- colours.push("navy");
- colours.push("green");
- colours.push("gold");
- colours.push("red");
- colours.push("saddlebrown");
- colours.push("skyblue");
- colours.push("olive");
- colours.push("deeppink");
- colours.push("orange");
- colours.push("silver");
- colours.push("blue");
- colours.push("yellowgreen");
- colours.push("firebrick");
- colours.push("rosybrown");
- colours.push("hotpink");
- colours.push("purple");
- colours.push("cyan");
- colours.push("teal");
- colours.push("peru");
- colours.push("maroon");
+ colours.push({back: "navy", front: "white"});
+ colours.push({back: "green", front: "white"});
+ colours.push({back: "gold", front: "black"});
+ colours.push({back: "red", front: "black"});
+ colours.push({back: "saddlebrown", front: "white"});
+ colours.push({back: "skyblue", front: "black"});
+ colours.push({back: "olive", front: "black"});
+ colours.push({back: "deeppink", front: "black"});
+ colours.push({back: "orange", front: "black"});
+ colours.push({back: "silver", front: "black"});
+ colours.push({back: "blue", front: "white"});
+ colours.push({back: "yellowgreen", front: "black"});
+ colours.push({back: "firebrick", front: "black"});
+ colours.push({back: "rosybrown", front: "black"});
+ colours.push({back: "hotpink", front: "black"});
+ colours.push({back: "purple", front: "white"});
+ colours.push({back: "cyan", front: "black"});
+ colours.push({back: "teal", front: "black"});
+ colours.push({back: "peru", front: "black"});
+ colours.push({back: "maroon", front: "white"});
this.getColour = function(value) {
if (mapping[value] === undefined) {
mapping[value] = colours[nextColour];
- if (reverseMapping[colours[nextColour]] === undefined) {
- reverseMapping[colours[nextColour]] = [];
+ if (reverseMapping[colours[nextColour].back] === undefined) {
+ reverseMapping[colours[nextColour].back] = {
+ front: colours[nextColour].front,
+ list: []
+ };
}
- reverseMapping[colours[nextColour]].push(value);
+ reverseMapping[colours[nextColour].back].list.push(value);
nextColour++;
if (nextColour === colours.length) {
nextColour = 0;
@@ -74,10 +77,30 @@ function ColourMapper() {
if (listener !== undefined) {
listener(self.getList());
}
- return mapping[value];
+ return mapping[value].back;
};
-
-
+
+ this.getForegroundColour = function(value) {
+ if (mapping[value] === undefined) {
+ mapping[value] = colours[nextColour];
+ if (reverseMapping[colours[nextColour].back] === undefined) {
+ reverseMapping[colours[nextColour].back] = {
+ front: colours[nextColour].front,
+ list: []
+ };
+ }
+ reverseMapping[colours[nextColour].back].list.push(value);
+ nextColour++;
+ if (nextColour === colours.length) {
+ nextColour = 0;
+ }
+ }
+ if (listener !== undefined) {
+ listener(self.getList());
+ }
+ return mapping[value].front;
+ };
+
this.reset = function() {
mapping = {};
diff --git a/html/admin/js/graphViewer/graph/nodeShaper.js b/html/admin/js/graphViewer/graph/nodeShaper.js
index a95b53b71c..a9d83e35d9 100644
--- a/html/admin/js/graphViewer/graph/nodeShaper.js
+++ b/html/admin/js/graphViewer/graph/nodeShaper.js
@@ -110,6 +110,7 @@ function NodeShaper(parent, flags, idfunc) {
addColor = noop,
addShape = noop,
addLabel = noop,
+ addLabelColor = function() {return "black";},
addCommunityShape = function(g) {
g.append("polygon")
.attr("points", "0,-25 -16,20 23,-10 -23,-10 16,20");
@@ -263,7 +264,7 @@ function NodeShaper(parent, flags, idfunc) {
addLabel = function (node) {
var textN = node.append("text") // Append a label for the node
.attr("text-anchor", "middle") // Define text-anchor
- .attr("fill", "black") // Force a black color
+ .attr("fill", addLabelColor) // Force a black color
.attr("stroke", "none"); // Make it readable
textN.each(function(d) {
var chunks = splitLabel(label(d));
@@ -283,7 +284,7 @@ function NodeShaper(parent, flags, idfunc) {
addLabel = function (node) {
var textN = node.append("text") // Append a label for the node
.attr("text-anchor", "middle") // Define text-anchor
- .attr("fill", "black") // Force a black color
+ .attr("fill", addLabelColor) // Force a black color
.attr("stroke", "none"); // Make it readable
textN.each(function(d) {
var chunks = splitLabel(d._data[label]);
@@ -320,6 +321,9 @@ function NodeShaper(parent, flags, idfunc) {
g.attr("stroke", color.stroke);
g.attr("fill", color.fill);
};
+ addLabelColor = function (d) {
+ return color.stroke;
+ };
break;
case "expand":
addColor = function (g) {
@@ -336,6 +340,9 @@ function NodeShaper(parent, flags, idfunc) {
return color.collapsed;
});
};
+ addLabelColor = function (d) {
+ return "black";
+ };
break;
case "attribute":
addColor = function (g) {
@@ -352,6 +359,13 @@ function NodeShaper(parent, flags, idfunc) {
return colourMapper.getColour(n._data[color.key]);
});
};
+ addLabelColor = function (n) {
+ if (n._data === undefined) {
+ return colourMapper.getForegroundColour(undefined);
+ }
+ return colourMapper.getForegroundColour(n._data[color.key]);
+
+ };
break;
default:
throw "Sorry given colour-scheme not known";
diff --git a/html/admin/js/graphViewer/jasmine_test/specColourMapper/colourMapperSpec.js b/html/admin/js/graphViewer/jasmine_test/specColourMapper/colourMapperSpec.js
index 21cd4b2363..6e6a379ef5 100644
--- a/html/admin/js/graphViewer/jasmine_test/specColourMapper/colourMapperSpec.js
+++ b/html/admin/js/graphViewer/jasmine_test/specColourMapper/colourMapperSpec.js
@@ -125,8 +125,8 @@
expect(_.keys(colorList).length).toEqual(3);
_.each(_.values(colorList), function(v) {
- expect(v).toEqual(jasmine.any(Array));
- expect(v.length).toEqual(1);
+ expect(v.list).toEqual(jasmine.any(Array));
+ expect(v.list.length).toEqual(1);
});
});
diff --git a/html/admin/js/graphViewer/jasmine_test/specNodeShaper/nodeShaperSpec.js b/html/admin/js/graphViewer/jasmine_test/specNodeShaper/nodeShaperSpec.js
index d76e5cc81f..d5ab4b414d 100644
--- a/html/admin/js/graphViewer/jasmine_test/specNodeShaper/nodeShaperSpec.js
+++ b/html/admin/js/graphViewer/jasmine_test/specNodeShaper/nodeShaperSpec.js
@@ -315,8 +315,8 @@
expect(_.keys(colorList).length).toEqual(3);
_.each(_.values(colorList), function(v) {
- expect(v).toEqual(jasmine.any(Array));
- expect(v.length).toEqual(1);
+ expect(v.list).toEqual(jasmine.any(Array));
+ expect(v.list.length).toEqual(1);
});
});
@@ -775,7 +775,7 @@
textEl;
shaper.drawNodes(node);
textEl = $("svg .node text");
- expect(textEl.attr("fill")).toEqual("black");
+ expect(textEl.attr("fill")).toEqual("#8AA051");
expect(textEl.attr("stroke")).toEqual("none");
});
diff --git a/html/admin/js/graphViewer/jasmine_test/specNodeShaper/nodeShaperUISpec.js b/html/admin/js/graphViewer/jasmine_test/specNodeShaper/nodeShaperUISpec.js
index 3ec6f3b3d5..cbe4f75cee 100644
--- a/html/admin/js/graphViewer/jasmine_test/specNodeShaper/nodeShaperUISpec.js
+++ b/html/admin/js/graphViewer/jasmine_test/specNodeShaper/nodeShaperUISpec.js
@@ -52,8 +52,14 @@
spyOn(shaper, 'changeTo');
spyOn(shaper, 'getColourMapping').andCallFake(function() {
return {
- "blue": ["bl", "ue"],
- "green": ["gr", "een"]
+ blue: {
+ list: ["bl", "ue"],
+ front: "white"
+ },
+ green: {
+ list: ["gr", "een"],
+ front: "black"
+ }
};
});
spyOn(shaper, "setColourMappingListener");
diff --git a/html/admin/js/graphViewer/ui/nodeShaperControls.js b/html/admin/js/graphViewer/ui/nodeShaperControls.js
index 9ccb8b4914..2a65addf15 100644
--- a/html/admin/js/graphViewer/ui/nodeShaperControls.js
+++ b/html/admin/js/graphViewer/ui/nodeShaperControls.js
@@ -47,9 +47,12 @@ function NodeShaperControls(list, shaper) {
}
var list = document.createElement("ul");
colourDiv.appendChild(list);
- _.each(mapping, function(els, col) {
- var li = document.createElement("li");
+ _.each(mapping, function(obj, col) {
+ var li = document.createElement("li"),
+ els = obj.list,
+ fore = obj.front;
li.style.backgroundColor = col;
+ li.style.color = fore;
li.appendChild(document.createTextNode(els.join(", ")));
list.appendChild(li);
});