This repository has been archived by the owner on Mar 15, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpretty_pipeline.js
119 lines (99 loc) · 4.44 KB
/
pretty_pipeline.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
// Printing pretty pipeline structure
// --------------------- Statics ----------------------------
var PRETTY_DEFINITION_CONTAINER = "PRETTY_DEFINITION_CONTAINER";
var PRETTY_DEFINITION_CONTAINER_ID = "#" + PRETTY_DEFINITION_CONTAINER;
// -------------------- Processing code ---------------------
createContainer();
var definitionXMLDocument = getDefinitionXML();
console.log(definitionXMLDocument);
addToDefinitionContainer($(definitionXMLDocument).text());
$(PRETTY_DEFINITION_CONTAINER_ID).html('');
var chainList = buildDataArrayFromXML(definitionXMLDocument, {});
$.each(chainList, function (ind, curChain){
createTableForChainNew(curChain, curChain.name);
});
// --------------------- Functions ---------------------------
function getDefinitionXML(){
return $.parseXML($('pre').first().text());
}
function createContainer(){
$('<div id="' + PRETTY_DEFINITION_CONTAINER + '"></div>').insertAfter('hr');
}
function addToDefinitionContainer(value){
$(PRETTY_DEFINITION_CONTAINER_ID).append(JSON.stringify(value));
}
function buildDataArrayFromXML(definitionXMLDocument, chainList){
// searching for all pipeline chains
$(definitionXMLDocument).find('pipelinechain').each(function (index, element ){
var name = $(element).attr('name');
chainList[name] = buildChainObject(element);
})
return chainList;
}
function buildChainObject(chain){
var chainObj = {};
var name = $(chain).attr('name');
var headlink = $(chain).attr('headlink');
var links = {};
$(chain).find('pipelinelink').each(function (index, element ){
var curLink = {};
var linkName = $(element).attr('name');;
curLink['processor'] = $(element).find('processor').attr('jndi');
var transitions = [];
$(element).find('transition').each(function (ind, trans){
var curTransition = {};
var returnValue = $(trans).attr('returnvalue');
var linkName = $(trans).attr('link');
curTransition.returnValue = returnValue;
curTransition.linkName = linkName;
transitions.push(curTransition);
});
curLink['transitions'] = transitions;
links[linkName] = curLink;
});
chainObj.name = name;
chainObj.headlink = headlink;
chainObj.links = links;
return chainObj;
}
function linkPathToComponent(componentPath){
return document.location.origin + '/dyn/admin/nucleus/' + componentPath;
}
function htmlLinkToComponent(componentPath){
var plainLink = linkPathToComponent(componentPath);
return '<a href="' + plainLink + '">' + componentPath + '</a>';
}
function createTableForChainNew(chain, chainName){
// Creating table for a chain
$(PRETTY_DEFINITION_CONTAINER_ID).append('<table id="chain-' + chainName + '" style="font-size: 12px;"><tr></tr></table>');
$(getChainTableSelector(chainName)).append('<td style="border: 1px solid black; text-align : center;">' + chainName + '</td>');
var curLink = chain.links[chain.headlink];
var curLinkName = chain.headlink;
processPipeLink(chain, curLink, curLinkName, '', 2, 0, false);
}
function processPipeLink(chain, link, linkName, transitionVal, elemNum, rowNumber, appendRow){
if(appendRow){
appendRows(elemNum, rowNumber, chain.name);
}
$(getChainTableSelector(chain.name)).eq(rowNumber).append('<td>' + transitionVal + '></td>');
$(getChainTableSelector(chain.name)).eq(rowNumber).append('<td style="border: 1px solid black; text-align : center;">' + linkName + '<br>' + htmlLinkToComponent(link.processor) + '</td>');
if (link.transitions != null && link.transitions.length > 0){
$.each(link.transitions, function (index, element){
if (index == 0){
processPipeLink(chain, chain.links[element.linkName], element.linkName, element.returnValue, elemNum + 1, rowNumber, false);
} else {
processPipeLink(chain, chain.links[element.linkName], element.linkName, element.returnValue, elemNum + 1, ++rowNumber, true);
}
});
}
}
function appendRows(elemNum, rowNumber, chainName){
var chainTableSelector = PRETTY_DEFINITION_CONTAINER_ID + ' #chain-' + chainName;
$(chainTableSelector).append('<tr></tr>');
for (var i = 0; i < (elemNum + elemNum - 3); i++){
$(chainTableSelector + ' tr').eq(rowNumber).append('<td></td>');
}
}
function getChainTableSelector(chainName){
return PRETTY_DEFINITION_CONTAINER_ID + ' #chain-' + chainName + ' tr';
}