]> git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/slc/web/TestList.js
forgotten instruction
[gpl/argeo-slc.git] / org.argeo.slc.webapp / src / main / webapp / source / class / org / argeo / slc / web / TestList.js
1 /**
2 * @author Charles
3 */
4 qx.Class.define("org.argeo.slc.web.TestList",
5 {
6 extend : qx.ui.container.Composite,
7 implement : [org.argeo.ria.components.IView],
8
9 construct : function(){
10 this.base(arguments, new qx.ui.layout.VBox());
11 var model = new qx.ui.table.model.Simple();
12 model.setColumns(["Test Case", "Date"]);
13 this.table = new qx.ui.table.Table(model, {
14 tableColumnModel: function(obj){
15 return new qx.ui.table.columnmodel.Resize(obj)
16 }
17 });
18 },
19
20 properties :
21 {
22 view : {
23 init : null
24 },
25 collectionList : {
26 init : {},
27 check : "Map"
28 },
29 collectionId:{
30 init : 'My Collection',
31 check : "String"
32 },
33 commands : {
34 init : {
35 "loadtestlist" : {
36 label : "Load Collection",
37 icon : "resource/slc/view-refresh.png",
38 shortcut : "Control+l",
39 enabled : true,
40 menu : "Collection",
41 toolbar : "collection",
42 callback : function(e){
43 this.loadList();
44 },
45 command : null
46 },
47 "copyfullcollection" : {
48 label : "Copy to...",
49 icon : "resource/slc/edit-copy.png",
50 shortcut : null,
51 enabled : false,
52 menu : "Collection",
53 toolbar : "collection",
54 callback : function(e){
55 // Call service to copy
56 },
57 submenu : {},
58 submenuCallback : function(commandId){
59 this.copySelectionToCollection(commandId, "current_collection");
60 },
61 init : function(){
62 // Call at command creation
63 org.argeo.ria.remote.RequestManager.getInstance().addListener("reload", function(event){
64 if(event.getDataType() == "collection" || event.getDataType() == "test_cases"){
65 var testList = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("list").getContent();
66 testList.collectionListToMenu(this);
67 }
68 }, this);
69 },
70 command : null
71 },
72 "opentest" : {
73 label : "Open",
74 icon : "resource/slc/media-playback-start.png",
75 shortcut : "Control+o",
76 enabled : false,
77 menu : "Selection",
78 toolbar : "selection",
79 callback : function(e){
80 var viewsManager = org.argeo.ria.components.ViewsManager.getInstance();
81 var classObj = org.argeo.slc.web.Applet;
82 var iView = viewsManager.initIViewClass(classObj, "applet");
83 var xmlNodes = viewsManager.getViewPaneSelection("list").getNodes();
84 iView.load(xmlNodes[0]);
85 },
86 selectionChange : function(viewId, xmlNodes){
87 if(viewId != "list") return;
88 this.setEnabled(false);
89 if(xmlNodes == null || !xmlNodes.length) return;
90 this.setEnabled(true);
91 },
92 command : null
93 },
94 "download" : {
95 label : "Download as...",
96 icon : "resource/slc/go-down.png",
97 shortcut : null,
98 enabled : false,
99 menu : "Selection",
100 toolbar : "selection",
101 callback : function(e){ },
102 command : null,
103 submenu : {},
104 submenuCallback : function(commandId){
105 var uuid = this.extractTestUuid();
106 var urls = {
107 xsl : "resultView.xslt",
108 xml : "resultViewXml.xslt",
109 xls : "resultView.xls",
110 pdf : "resultView.pdf"
111 };
112 var url = "../"+urls[commandId]+"?uuid="+uuid;
113 if(commandId == "xls" || commandId == "pdf"){
114 document.location.href = url;
115 }else{
116 var win = window.open(url);
117 }
118 },
119 init : function(command){
120 this.setMenu([
121 {'label':"Xsl", 'icon':'resource/slc/mime-xsl.png', 'commandId':'xsl'},
122 {'label':"Xml", 'icon':'resource/slc/mime-xml.png', 'commandId':'xml'},
123 {'label':"Excel", 'icon':'resource/slc/mime-xls.png', 'commandId':'xls'},
124 {'label':"Pdf", 'icon':'resource/slc/mime-pdf.png', 'commandId':'pdf'}
125 ]);
126 },
127 selectionChange : function(viewId, xmlNodes){
128 if(viewId!="list")return;
129 //this.clearMenus();
130 this.setEnabled(false);
131 if(xmlNodes == null || !xmlNodes.length) return;
132 this.setEnabled(true);
133 /*
134 var reports = qx.xml.Element.selectNodes(xmlNodes[0],'report[@type="download"]');
135 if(reports == null || !reports.length)return;
136 var submenus = [];
137 for(var i=0; i<reports.length;i++){
138 var report = reports[i];
139 var commandId = qx.dom.Node.getText(org.argeo.ria.util.Element.selectSingleNode(report, "@commandid"));
140 submenus.push({
141 "label":qx.dom.Node.getText(report),
142 "icon":"resource/slc/mime-"+commandId+".png",
143 "commandId":commandId
144 });
145 }
146 this.setMenu(submenus);
147 this.setEnabled(true);
148 */
149 }
150 },
151 "deletetest" : {
152 label : "Delete",
153 icon : "resource/slc/edit-delete.png",
154 shortcut : "Control+d",
155 enabled : false,
156 menu : "Selection",
157 toolbar : "selection",
158 callback : function(e){
159 var serviceManager = org.argeo.ria.remote.RequestManager.getInstance();
160 var request = serviceManager.getRequest(
161 "/org.argeo.slc.webapp/removeResultFromCollection.service",
162 "GET",
163 "application/xml"
164 );
165 request.setParameter("collectionId", this.getCollectionId());
166 request.setParameter("resultUuid", this.extractTestUuid());
167 request.addListener("completed", function(response){
168 this.loadCollections();
169 this.loadList();
170 this.info("Test was successfully deleted");
171 }, this);
172 request.send();
173 },
174 selectionChange : function(viewId, xmlNodes){
175 if(viewId != "list") return;
176 this.setEnabled(false);
177 if(xmlNodes == null || !xmlNodes.length) return;
178 this.setEnabled(true);
179 },
180 command : null
181 },
182 "copytocollection" : {
183 label : "Copy to...",
184 icon : "resource/slc/edit-copy.png",
185 shortcut : "Control+c",
186 enabled : false,
187 menu : "Selection",
188 toolbar : "selection",
189 callback : function(e){
190 // Call service to copy
191 },
192 submenu : {},
193 submenuCallback : function(commandId){
194 this.copySelectionToCollection(commandId, "current_selection");
195 },
196 init : function(){
197 // Call at command creation
198 org.argeo.ria.remote.RequestManager.getInstance().addListener("reload", function(event){
199 if(event.getDataType() == "collection" || event.getDataType() == "test_cases"){
200 var testList = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("list").getContent();
201 testList.collectionListToMenu(this, true);
202 }
203 }, this);
204 },
205 selectionChange : function(viewId, xmlNodes){
206 if(viewId != "list") return;
207 this.setEnabled(false);
208 if(xmlNodes == null || !xmlNodes.length) return;
209 this.setEnabled(true);
210 },
211 command : null
212 }
213 }
214 }
215 },
216
217 members : {
218 init : function(viewPane){
219 this.setView(viewPane);
220 },
221 load : function(data){
222 this.table.set({
223 statusBarVisible: false,
224 showCellFocusIndicator:false,
225 columnVisibilityButtonVisible:false,
226 contextMenu : org.argeo.ria.event.CommandsManager.getInstance().createMenuFromIds(["opentest", "deletetest", "copytocollection"]),
227 decorator : new qx.ui.decoration.Background("#fff")
228 });
229 var viewPane = this.getView();
230 this.table.addListener("dblclick", function(e){
231 org.argeo.ria.event.CommandsManager.getInstance().executeCommand("opentest");
232 }, this);
233 var columnModel = this.table.getTableColumnModel();
234 columnModel.getBehavior().setWidth(0, "60%");
235 columnModel.setDataCellRenderer(0, new org.argeo.slc.web.XmlRenderer());
236 columnModel.setDataCellRenderer(1, new org.argeo.slc.web.XmlRenderer());
237
238 this.table.getSelectionManager().getSelectionModel().addListener("changeSelection", function(e){
239 var viewSelection = viewPane.getViewSelection();
240 viewSelection.clear();
241 var selectionModel = this.table.getSelectionManager().getSelectionModel();
242 if(!selectionModel.getSelectedCount()){
243 return;
244 }
245 var ranges = this.table.getSelectionManager().getSelectionModel().getSelectedRanges();
246 var xmlNode = this.table.getTableModel().getRowData(ranges[0].minIndex);
247 viewSelection.addNode(xmlNode);
248 viewPane.setViewSelection(viewSelection);
249 }, this);
250
251 var select = new qx.ui.form.SelectBox();
252 this.getView().addHeaderComponent(select);
253 this.getView().setViewTitle("");
254 this.add(this.table, {flex:1});
255
256 select.addListener("changeValue", this.collectionSelectorListener, this);
257
258 org.argeo.ria.remote.RequestManager.getInstance().addListener("reload", function(event){
259 if(event.getDataType()!="collection") return;
260 select.removeListener("changeValue", this.collectionSelectorListener, this);
261 var collectionList = event.getContent();
262 select.removeAll();
263 for(key in collectionList){
264 var item = new qx.ui.form.ListItem(collectionList[key], "resource/slc/folder.png", key);
265 select.add(item);
266 if(key == this.getCollectionId()){
267 select.setSelected(item);
268 }
269 }
270 this.setCollectionId(select.getSelected().getValue());
271 select.addListener("changeValue", this.collectionSelectorListener, this);
272 }, this);
273
274 },
275
276 loadCollections : function(){
277 var url = "/org.argeo.slc.webapp/listCollectionRefs.service";
278 var serviceManager = org.argeo.ria.remote.RequestManager.getInstance();
279 var request = serviceManager.getRequest(
280 url,
281 "GET",
282 "application/xml"
283 );
284 var NSMap = {slc:"http://argeo.org/projects/slc/schemas"};
285 request.addListener("completed", function(response){
286 var xml = response.getContent();
287 var collections = {};
288 var nodes = org.argeo.ria.util.Element.selectNodes(xml, "//slc:ref", NSMap);
289 for(var i=0;i<nodes.length;i++){
290 var collId = qx.xml.Element.getSingleNodeText(nodes[i], ".");
291 collections[collId] = collId;
292 }
293 this.setCollectionList(collections);
294 org.argeo.ria.remote.RequestManager.getInstance().fireReloadEvent("collection", this.getCollectionList());
295 }, this);
296 request.setAsynchronous(false);
297 request.send();
298 },
299
300 loadList : function(){
301 var url = "/org.argeo.slc.webapp/listResultAttributes.service";
302 var model = this.table.getTableModel();
303 model.removeRows(0, model.getRowCount());
304 var serviceManager = org.argeo.ria.remote.RequestManager.getInstance();
305 var commandManager = org.argeo.ria.event.CommandsManager.getInstance();
306 var request = serviceManager.getRequest(
307 url,
308 "GET",
309 "application/xml",
310 null,
311 [commandManager.getCommandById("loadtestlist"), this.getView()]
312 );
313 request.setParameter("id", this.getCollectionId());
314 var NSMap = {slc:"http://argeo.org/projects/slc/schemas"};
315 request.addListener("completed", function(response){
316 var xml = response.getContent();
317 this.info("Successfully loaded XML");
318 var nodes = org.argeo.ria.util.Element.selectNodes(xml, "//slc:result-attributes", NSMap);
319 for(var i=0; i<nodes.length;i++){
320 var rowData = nodes[i];
321 model.addRows([rowData]);
322 }
323 }, request);
324 request.send();
325 },
326
327 collectionListToMenu : function(command, checkSelection){
328 command.setEnabled(false);
329 command.clearMenus();
330 var collectionList = this.getCollectionList();
331 if(!collectionList) return;
332 var submenus = [];
333 for(var key in collectionList){
334 if(this.getCollectionId() && key == this.getCollectionId()) continue;
335 submenus.push({
336 "label":collectionList[key],
337 "icon":"resource/slc/folder.png",
338 "commandId":key
339 });
340 }
341 submenus.push({"label":"New...", "icon":"resource/slc/folder-new.png", "commandId":"slc.client.create"});
342 command.setMenu(submenus);
343 if(checkSelection){
344 var viewSelection = this.getView().getViewSelection();
345 if(viewSelection.getCount()) command.setEnabled(true);
346 }else{
347 command.setEnabled(true);
348 }
349 },
350
351 copySelectionToCollection:function(collectionId, selectionType){
352 if(collectionId == "slc.client.create"){
353 var modal = new org.argeo.ria.components.Modal("Create collection", "resource/slc/folder-new.png");
354 modal.makePromptForm("Enter the new collection name", function(value){
355 if(value == ""){
356 alert("Please enter a name for the new collection!");
357 return false;
358 }
359 else {
360 // Create the collection now, then recall the callback with the new name.
361 this.copySelectionToCollection(value, selectionType);
362 return true;
363 }
364 }, this);
365 modal.attachAndShow();
366 return;
367 }
368
369 var serviceManager = org.argeo.ria.remote.RequestManager.getInstance();
370 var request = serviceManager.getRequest(
371 "/org.argeo.slc.webapp/addResultToCollection.service",
372 "GET",
373 "application/xml"
374 );
375
376 if(selectionType == "current_collection"){
377 this.error("Not implemented yet!");
378 }else if(selectionType == "current_selection"){
379 // get selection ID
380 request.setParameter("collectionId", collectionId);
381 request.setParameter("resultUuid", this.extractTestUuid());
382 }
383 request.addListener("completed", function(response){
384 this.loadCollections();
385 }, this);
386 request.send();
387 },
388
389 extractTestUuid: function(){
390 var NSMap = {slc:"http://argeo.org/projects/slc/schemas"};
391 var xmlNodes = this.getView().getViewSelection().getNodes();
392 var uuid = qx.dom.Node.getText(org.argeo.ria.util.Element.selectSingleNode(xmlNodes[0], "slc:uuid"));
393 return uuid;
394 },
395
396 collectionSelectorListener : function(event){
397 this.setCollectionId(event.getData());
398 this.loadList();
399 },
400
401 addScroll : function(){
402 return false;
403 }
404 }
405 });