Skip to content

Commit

Permalink
update the filter/when title and tooltips dynamically as folks edit them
Browse files Browse the repository at this point in the history
  • Loading branch information
jstrachan committed Apr 11, 2013
1 parent 9ef7620 commit 4a68f26
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 42 deletions.
77 changes: 39 additions & 38 deletions hawtio-web/src/main/webapp/app/camel/js/helpers.ts
Expand Up @@ -226,6 +226,10 @@ module Camel {
return _apacheCamelModel.languages[nodeName];
}

export function isCamelLanguage(nodeName) {
return (camelLanguageSettings(nodeName) || nodeName === "expression") ? true : false;
}

export function loadCamelTree(xml: string, key: string) {
var doc = $.parseXML(xml);

Expand Down Expand Up @@ -289,13 +293,13 @@ module Camel {
if (nodeName) {
var nodeSettings = getCamelSchema(nodeName);
if (nodeSettings) {
var label = getRouteNodeLabel(n, nodeSettings);
var tooltip = nodeSettings["tooltip"] || nodeSettings["description"] || label;
var imageUrl = getRouteNodeIcon(nodeSettings);

var child = new Folder(label);
var child = new Folder(nodeName);
child.domain = jmxDomain;
child.typeName = "routeNode";
updateRouteNodeLabelAndTooltip(child, n, nodeSettings);

// TODO should maybe auto-generate these?
child.parent = folder;
child.folderNames = folder.folderNames;
Expand All @@ -316,29 +320,13 @@ module Camel {
}
child.key = key;
child.icon = imageUrl;
child.tooltip = tooltip;
child["routeXmlNode"] = n;
if (!folder.children) {
folder.children = [];
}
folder.children.push(child);
addRouteChildren(child, n);
return child;
} else {
// ignore non EIP nodes, though we should add expressions...
var langSettings = Camel.camelLanguageSettings(nodeName);
if (langSettings && folder) {
// lets add the language kind
var name = langSettings["name"] || nodeName;
var text = n.textContent;
if (text) {
folder.tooltip = folder.title + " " + name + " " + text;
folder.title = text;
} else {
folder.title = folder.title + " " + name;
}
}
return null;
}
}
return null;
Expand Down Expand Up @@ -413,29 +401,42 @@ module Camel {
}


export function getRouteNodeLabel(routeXmlNode, nodeSettings) {
export function updateRouteNodeLabelAndTooltip(folder, routeXmlNode, nodeSettings) {
var localName = routeXmlNode.localName;
var id = routeXmlNode.getAttribute("id");
var label = nodeSettings["title"] || localName;

// lets use the ID for routes and other things we give an id
var tooltip = nodeSettings["tooltip"] || nodeSettings["description"] || label;
if (id) {
return id;
}
var label = nodeSettings["title"] || routeXmlNode.localName;
/*
if (label === "endpoint" || label === "Endpoint") {
// if we are the first endpoint then use "From" otherwise use "To"
var parent = $(routeXmlNode).parent();
var endpoints = parent.children("endpoint");
var fromCount = parent.children("from").length;
var from = !fromCount && (endpoints.length && endpoints[0] === routeXmlNode);
label = (from) ? "From" : "To";
}
*/
var uri = getRouteNodeUri(routeXmlNode);
if (uri) {
// Don't use from/to as it gets odd if you drag/drop and reorder
// label += " " + uri;
label = uri;
label = id;
} else {
var uri = getRouteNodeUri(routeXmlNode);
if (uri) {
// Don't use from/to as it gets odd if you drag/drop and reorder
// label += " " + uri;
label = uri;
} else {
var children = $(routeXmlNode).children("*");
if (children && children.length) {
var child = children[0];
var childName = child.localName;
var expression = null;
if (Camel.isCamelLanguage(childName)) {
expression = child.textContent;
if (!expression) {
expression = child.getAttribute("expression");
}
}
if (expression) {
label += " " + expression;
tooltip += " " + childName + " expression";
}
}
}
}
folder.title = label;
folder.tooltip = tooltip;
return label;
}

Expand Down
4 changes: 2 additions & 2 deletions hawtio-web/src/main/webapp/app/wiki/js/camel.ts
Expand Up @@ -242,8 +242,8 @@ module Wiki {
var nodeName = routeXmlNode.localName;
var nodeSettings = Camel.getCamelSchema(nodeName);
if (nodeSettings) {
// redraw the title
selectedFolder.title = Camel.getRouteNodeLabel(routeXmlNode, nodeSettings);
// update the title and tooltip etc
Camel.updateRouteNodeLabelAndTooltip(selectedFolder, routeXmlNode, nodeSettings);
$scope.treeNode.render(false, false);
}
}
Expand Down
16 changes: 14 additions & 2 deletions hawtio-web/src/test/specs/spec/CamelSpec.js
@@ -1,7 +1,7 @@
describe("Camel", function () {

angular.forEach(["endpoint", "from", "to", "bean", "filter", "when", "otherwise"], function (value) {
it("the camel EIP pattern type '" + value + "' should be a valid camel pattern", function () {
it("the type '" + value + "' should be a valid camel pattern type name", function () {
expect(Camel.isCamelPattern(value)).toEqual(true);
});
});
Expand All @@ -13,8 +13,20 @@ describe("Camel", function () {
"org.apache.camel.model.dataformat.SyslogDataFormat",
"org.apache.camel.model.language.Expression"
], function (value) {
it("the non camel EIP pattern type '" + value + "' should not be a valid camel pattern", function () {
it("the type name '" + value + "' should not be a valid camel pattern type name", function () {
expect(Camel.isCamelPattern(value)).toEqual(false);
});
});

angular.forEach(["simple", "xpath", "expression"], function (value) {
it("'" + value + "' is a camel language", function () {
expect(Camel.isCamelLanguage(value)).toEqual(true);
});
});

angular.forEach(["filter", "choice", "when"], function (value) {
it("'" + value + "' is not camel language ", function () {
expect(Camel.isCamelLanguage(value)).toEqual(false);
});
});
});

0 comments on commit 4a68f26

Please sign in to comment.