4 qx
.Class
.define("org.argeo.slc.web.TestList",
6 extend
: qx
.ui
.container
.Composite
,
7 implement
: [org
.argeo
.ria
.components
.IView
],
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
)
30 init
: 'My Collection',
36 label
: "Load Collection",
37 icon
: "resource/slc/view-refresh.png",
38 shortcut
: "Control+l",
41 toolbar
: "collection",
42 callback : function(e
){
47 "copyfullcollection" : {
49 icon
: "resource/slc/edit-copy.png",
53 toolbar
: "collection",
54 callback : function(e
){
55 // Call service to copy
58 submenuCallback : function(commandId
){
59 this.copySelectionToCollection(commandId
, "current_collection");
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);
74 icon
: "resource/slc/media-playback-start.png",
75 shortcut
: "Control+o",
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]);
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);
95 label
: "Download as...",
96 icon
: "resource/slc/go-down.png",
100 toolbar
: "selection",
101 callback : function(e
){ },
104 submenuCallback : function(commandId
){
105 var uuid
= this.extractTestUuid();
107 xsl
: "resultView.xslt",
108 xml
: "resultViewXml.xslt",
109 xls
: "resultView.xls",
110 pdf
: "resultView.pdf"
112 var url
= "../"+urls
[commandId
]+"?uuid="+uuid
;
113 if(commandId
== "xls" || commandId
== "pdf"){
114 document
.location
.href
= url
;
116 var win
= window
.open(url
);
119 init : function(command
){
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'}
127 selectionChange : function(viewId
, xmlNodes
){
128 if(viewId
!="list")return;
130 this.setEnabled(false);
131 if(xmlNodes
== null || !xmlNodes
.length
) return;
132 this.setEnabled(true);
134 var reports = qx.xml.Element.selectNodes(xmlNodes[0],'report[@type="download"]');
135 if(reports == null || !reports.length)return;
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"));
141 "label":qx.dom.Node.getText(report),
142 "icon":"resource/slc/mime-"+commandId+".png",
143 "commandId":commandId
146 this.setMenu(submenus);
147 this.setEnabled(true);
153 icon
: "resource/slc/edit-delete.png",
154 shortcut
: "Control+d",
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",
165 request
.setParameter("collectionId", this.getCollectionId());
166 request
.setParameter("resultUuid", this.extractTestUuid());
167 request
.addListener("completed", function(response
){
168 this.loadCollections();
170 this.info("Test was successfully deleted");
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);
182 "copytocollection" : {
183 label
: "Copy to...",
184 icon
: "resource/slc/edit-copy.png",
185 shortcut
: "Control+c",
188 toolbar
: "selection",
189 callback : function(e
){
190 // Call service to copy
193 submenuCallback : function(commandId
){
194 this.copySelectionToCollection(commandId
, "current_selection");
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);
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);
218 init : function(viewPane
){
219 this.setView(viewPane
);
221 load : function(data
){
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")
229 var viewPane
= this.getView();
230 this.table
.addListener("dblclick", function(e
){
231 org
.argeo
.ria
.event
.CommandsManager
.getInstance().executeCommand("opentest");
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());
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()){
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
);
251 var select
= new qx
.ui
.form
.SelectBox();
252 this.getView().addHeaderComponent(select
);
253 this.getView().setViewTitle("");
254 this.add(this.table
, {flex
:1});
256 select
.addListener("changeValue", this.collectionSelectorListener
, this);
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();
263 for(key
in collectionList
){
264 var item
= new qx
.ui
.form
.ListItem(collectionList
[key
], "resource/slc/folder.png", key
);
266 if(key
== this.getCollectionId()){
267 select
.setSelected(item
);
270 this.setCollectionId(select
.getSelected().getValue());
271 select
.addListener("changeValue", this.collectionSelectorListener
, this);
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(
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
;
293 this.setCollectionList(collections
);
294 org
.argeo
.ria
.remote
.RequestManager
.getInstance().fireReloadEvent("collection", this.getCollectionList());
296 request
.setAsynchronous(false);
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(
311 [commandManager
.getCommandById("loadtestlist"), this.getView()]
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
]);
327 collectionListToMenu : function(command
, checkSelection
){
328 command
.setEnabled(false);
329 command
.clearMenus();
330 var collectionList
= this.getCollectionList();
331 if(!collectionList
) return;
333 for(var key
in collectionList
){
334 if(this.getCollectionId() && key
== this.getCollectionId()) continue;
336 "label":collectionList
[key
],
337 "icon":"resource/slc/folder.png",
341 submenus
.push({"label":"New...", "icon":"resource/slc/folder-new.png", "commandId":"slc.client.create"});
342 command
.setMenu(submenus
);
344 var viewSelection
= this.getView().getViewSelection();
345 if(viewSelection
.getCount()) command
.setEnabled(true);
347 command
.setEnabled(true);
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
){
356 alert("Please enter a name for the new collection!");
360 // Create the collection now, then recall the callback with the new name.
361 this.copySelectionToCollection(value
, selectionType
);
365 modal
.attachAndShow();
369 var serviceManager
= org
.argeo
.ria
.remote
.RequestManager
.getInstance();
370 var request
= serviceManager
.getRequest(
371 "/org.argeo.slc.webapp/addResultToCollection.service",
376 if(selectionType
== "current_collection"){
377 this.error("Not implemented yet!");
378 }else if(selectionType
== "current_selection"){
380 request
.setParameter("collectionId", collectionId
);
381 request
.setParameter("resultUuid", this.extractTestUuid());
383 request
.addListener("completed", function(response
){
384 this.loadCollections();
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"));
396 collectionSelectorListener : function(event
){
397 this.setCollectionId(event
.getData());
401 addScroll : function(){