summaryrefslogtreecommitdiffstats
path: root/dgbuilder/public/util/js/dgeToXml.js.imp
blob: 199b1c6c59501249205a1fb590c71ef931ed8767 (plain)
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
function getNodeToXml(){
		var nodeSet=[];
		var activeWorkspace=RED.view.getWorkspace();
		RED.nodes.eachNode(function(n) {
			if (n.z == activeWorkspace) {
                    		nodeSet.push({n:n});
                	}
        	});

		var exportableNodeSet = RED.nodes.createExportableNodeSet(nodeSet);
		console.dir(exportableNodeSet);
		console.log(JSON.stringify(exportableNodeSet));

		function getDgStartNode(nodeList){
			for(var i=0;i<nodeList.length;i++){
				if(nodeList[i].type == 'dgstart'){
					return nodeList[i];
				}	
			}
			return null;
		}
		function getNode(id){
			for(var i=0;i<exportableNodeSet.length;i++){
				if(exportableNodeSet[i].id == id){
					return exportableNodeSet[i];
				}	
			}
			return null;
		}

		function getStartTag(node){
			var startTag="";
			var xmlStr="";
			if(node != null && node.type != 'dgstart'){
				xmlStr=node.xml;
				var regex = /(<)([\w-]+)(.*)?/;
                		var match = regex.exec(xmlStr);
                		if(match != null){
                        		if(match[1] != undefined && match[2] != undefined){
                                		startTag = match[2];
                        		}
                		}else{
					console.log("startTag not found.");
				}	
			}
			return startTag;
		}

		var dgstartNode = getDgStartNode(exportableNodeSet);

		var level=0;
		var fullXmlStr="";

		printXml(dgstartNode);
		

		function printXml(node){
			var xmlStr="";
			var startTag = "";
			if(node != null && node.type != 'dgstart'){
				xmlStr=node.xml;
				startTag = getStartTag(node);
				if(level > 0){
					var spacing = Array(level).join("  ");	
					xmlStr=xmlStr.replace(/\n/g,spacing);
					fullXmlStr +=xmlStr;
					
					console.log(xmlStr);
				}else{
					fullXmlStr +=xmlStr;
					console.log(xmlStr);
				}
			}

			//console.log("startTag:" + startTag);
	
			var wiredNodes = [];
			if(node != null && node.wires != null && node.wires[0] != null &&  node.wires[0] != undefined && node.wires[0].length >0 ){
				wiredNodes=node.wires[0];
				//sort based on y position
				wiredNodes.sort(function(a, b){
					return a.y-b.y;
				});
			}

			for(var k=0;wiredNodes != null && k<wiredNodes.length;k++){
				level++;
				var nd = getNode(wiredNodes[k]);
				printXml(nd);
			}

			//append end tag
			if(startTag != ""){
				if(level >0){
					var spacing = Array(level).join("  ");	
					fullXmlStr += spacing + "</" + startTag + ">";
					console.log(spacing + "</" + startTag + ">");
				}else{
					fullXmlStr += "</" + startTag + ">";
					console.log("</" + startTag + ">");
				}
			}	

			if(level>0){
				level=level-1;
			}
			console.log("endTag:" + startTag);
			//console.log("xml:" + fullXmlStr);
		}
		console.log("fullXmlStr:" + fullXmlStr);

		/*
		for (var link in allLinks){
			var nd = RED.nodes.node(link);
			console.dir(nd);						 
			var obj = RED.nodes.getNodeSet(RED.view.getWorkspace());
			console.dir(obj);
		}
		*/


		//console.dir(RED.nodes.getAllFlowNodes());
		//console.dir(RED.nodes.getType());
		/*
		console.dir(RED.nodes.nodes);
		RED.nodes.nodes.forEach(function (node){
			console.dir(node);
		});
		*/

	    /*var map = {68: false, 69: false, 86: false};
	    $("#node-input-validate").keydown(function(e) {
    		if (e.keyCode in map) {
			map[e.keyCode] = true;
			if (map[68] && map[69] && map[86]) {
            			// FIRE EVENT
				return "abcd";
                        }
    		}
		}).keyup(function(e) {
    			if (e.keyCode in map) {
        			map[e.keyCode] = false;
    			}
		});
	*/	
	return fullXmlStr;
}