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