]> git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/slc/web/Applet.js
8d1e794367ca5494abef4587a3d27ef46f3647dc
[gpl/argeo-slc.git] / org.argeo.slc.webapp / src / main / webapp / source / class / org / argeo / slc / web / Applet.js
1 /**
2 * @author Charles
3 */
4 qx.Class.define("org.argeo.slc.web.Applet",
5 {
6 extend : qx.ui.container.Composite,
7 implement : [org.argeo.ria.components.IView],
8
9 construct : function(){
10 this.base(arguments);
11 this.setLayout(new qx.ui.layout.VBox());
12 this.passedStatus = "<div align=\"center\"><img src=\"resource/slc/dialog-ok.png\" height=\"16\" width=\"16\"></div>";
13 this.failedStatus = "<div align=\"center\"><img src=\"resource/slc/flag.png\" height=\"16\" width=\"16\"></div>";
14 },
15
16 properties :
17 {
18 view : {
19 init : null
20 },
21 commands : {
22 init : {
23 "close" : {
24 label : "Close Result",
25 icon : "resource/slc/window-close.png",
26 shortcut : "Control+w",
27 enabled : true,
28 menu : "Test",
29 toolbar : "result",
30 callback : function(e){
31 // Call service to delete
32 //org.argeo.slc.web.components.ViewsManager.getInstance().getViewPaneById("applet").empty();
33 this.getView().empty();
34 },
35 selectionChange : function(viewId, xmlNode){
36 if(viewId != "applet") return;
37 /*
38 if(xmlNode){
39 this.setEnabled(true);
40 }else{
41 this.setEnabled(false);
42 }
43 */
44 },
45 command : null
46 }
47 }
48 }
49 },
50
51 /*
52 *****************************************************************************
53 MEMBERS
54 *****************************************************************************
55 */
56
57 members :
58 {
59 init : function(viewPane){
60 this.setView(viewPane);
61 },
62
63 load : function(xmlNode){
64 this.data = xmlNode;
65 if(!xmlNode) return;
66 // Load XML or Whatever
67 //var testType = qx.dom.Node.getText(qx.xml.Element.selectSingleNode(this.data, "param[@name='testType']"));
68 var service;
69 var testId = qx.dom.Node.getText(org.argeo.ria.util.Element.selectSingleNode(this.data, "param[@name='uuid']"));
70 this.info("Opening test "+testId);
71 this.getView().setViewTitle("Test "+testId);
72 service = "../resultViewXml.xslt?uuid="+testId;
73 var serviceManager = org.argeo.ria.remote.RequestManager.getInstance();
74 var request = serviceManager.getRequest(service, "GET", "application/xml");
75 request.addListener("completed", function(response){
76 this.createXmlGui(response.getContent());
77 this.getView().setOnLoad(false);
78 }, this);
79 this.getView().setOnLoad(true);
80 request.send();
81
82 },
83
84 addScroll : function(){
85 return false;
86 },
87
88 createXmlGui : function(responseXml){
89 var NSMap = {
90 "slc" : "http://argeo.org/projects/slc/schemas"
91 }
92 if(!qx.Class.hasMixin(qx.ui.treevirtual.TreeVirtual, qx.ui.treevirtual.MNode)){
93 qx.Class.include(qx.ui.treevirtual.TreeVirtual,qx.ui.treevirtual.MNode);
94 }
95 this.tree = new qx.ui.treevirtual.TreeVirtual(["Test", "State", "Message", "Id"]);
96 this.tree.getTableColumnModel().setDataCellRenderer(0, new org.argeo.ria.util.TreeDataCellRenderer());
97 this.tree.setRowHeight(18);
98 this.tree.setStatusBarVisible(false);
99 this.tree.setDecorator(new qx.ui.decoration.Background("#fff"));
100 var model = this.tree.getDataModel();
101 var resNodes = org.argeo.ria.util.Element.selectNodes(responseXml, "//slc:result-part", NSMap);
102 window.result = responseXml;
103 var resultParts = {};
104 var addedPaths = {};
105 for(var i=0;i<resNodes.length;i++){
106 var currentParentId = null;
107 var node = resNodes[i];
108 var pathAttr = qx.xml.Element.getSingleNodeText(node, "@path");
109 var pathParts = pathAttr.split("/");
110 if(pathParts[0] == ""){
111 pathParts.shift();
112 }
113 var crtPath = "";
114 for(var j=0;j<pathParts.length;j++){
115 //if(pathParts[j] == "") continue;
116 crtPath = crtPath.concat("/", pathParts[j]);
117 if(addedPaths[crtPath]) {
118 currentParentId = addedPaths[crtPath];
119 continue; // Node already exists, set as parent and go to next!
120 }
121 var element = org.argeo.ria.util.Element.selectSingleNode(responseXml, '//slc:element[@path="'+crtPath+'"]', NSMap);
122 var label;
123 if(element != null){
124 label = org.argeo.ria.util.Element.getSingleNodeText(element, "*/slc:label", NSMap);
125 }else{
126 label = crtPath;
127 }
128 var newId;
129 newId = model.addBranch(currentParentId, label, false);
130
131 // Test Leaf Node
132 var simpleResults = org.argeo.ria.util.Element.selectNodes(node, "slc:part-sub-list/slc:parts/slc:simple-result-part", NSMap);
133 if(!simpleResults || !simpleResults.length){
134 addedPaths[crtPath] = newId;
135 currentParentId = newId;
136 continue;
137 }
138 for(var k=0;k<simpleResults.length;k++){
139 var sResNode = simpleResults[k];
140 resId = model.addLeaf(currentParentId, label);
141 model.setColumnData(resId, 3, org.argeo.ria.util.Element.getSingleNodeText(sResNode, "slc:test-run-uuid", NSMap));
142 model.setColumnData(resId, 2, org.argeo.ria.util.Element.getSingleNodeText(sResNode, "slc:message", NSMap));
143 var status = org.argeo.ria.util.Element.getSingleNodeText(sResNode, "slc:status", NSMap);
144 if(status != "PASSED"){
145 status = this.failedStatus ;
146 this._setParentBranchAsFailed(resId);
147 }else{
148 status = this.passedStatus;
149 }
150 model.setColumnData(resId, 1, status);
151 }
152
153 addedPaths[crtPath] = newId;
154 currentParentId = newId;
155 }
156 }
157 this.add(this.tree, {flex:1});
158 model.setData();
159 var columnModel = this.tree.getTableColumnModel();
160 var resize = columnModel.getBehavior();
161 resize.set(0, {width:250, minWidth:250});
162 resize.set(1, {width:40});
163 resize.set(2, {width:"1*"});
164 resize.set(3, {width:100});
165 columnModel.setDataCellRenderer(1, new qx.ui.table.cellrenderer.Html());
166
167 this.tree.getSelectionManager().getSelectionModel().addListener("changeSelection", function(e){
168 var viewSelection = this.getView().getViewSelection();
169 viewSelection.clear();
170 var nodes = this.tree.getDataModel().getSelectedNodes();
171 if(nodes.length){
172 viewSelection.addNode(nodes[0]);
173 this.getView().setViewSelection(viewSelection);
174 }
175 }, this);
176
177 var contextMenu = org.argeo.ria.event.CommandsManager.getInstance().createMenuFromIds(["close"]);
178 this.tree.setContextMenu(contextMenu);
179
180 },
181
182 _setParentBranchAsFailed : function(id){
183 var model = this.tree.getDataModel();
184 while(id != null && id!=0){
185 var node = this.tree.nodeGet(id);
186 id = node.parentNodeId;
187 if(id != null && id!=0){
188 model.setColumnData(id, 1, this.failedStatus);
189 this.tree.nodeSetOpened(id, true);
190 }
191 }
192 },
193
194 createHtmlGui : function(responseText){
195 var htmlElement = new qx.ui.embed.Html(responseText);
196 htmlElement.setOverflowX("auto");
197 htmlElement.setOverflowY("auto");
198 this.add(htmlElement, {flex:1});
199 }
200
201 }
202 });