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 var applet
= org
.argeo
.ria
.util
.Element
.selectSingleNode(xmlNodes
[0],'report[@type="applet"]');
91 if(applet
!= null && qx
.dom
.Node
.getText(applet
) != ""){
92 this.setEnabled(true);
98 label
: "Download as...",
99 icon
: "resource/slc/go-down.png",
103 toolbar
: "selection",
104 callback : function(e
){ },
107 submenuCallback : function(commandId
){
108 var viewsManager
= org
.argeo
.ria
.components
.ViewsManager
.getInstance();
109 var xmlNodes
= viewsManager
.getViewPaneSelection("list").getNodes();
111 var uuid
= qx
.xml
.Element
.getSingleNodeText(xmlNodes
[0], 'param[@name="uuid"]');
113 xsl
: "resultView.xslt",
114 xml
: "resultViewXml.xslt",
115 xls
: "resultView.xls",
116 pdf
: "resultView.pdf"
118 var url
= "../"+urls
[commandId
]+"?uuid="+uuid
;
119 if(commandId
== "xls" || commandId
== "pdf"){
120 document
.location
.href
= url
;
122 var win
= window
.open(url
);
125 selectionChange : function(viewId
, xmlNodes
){
126 if(viewId
!="list")return;
128 this.setEnabled(false);
129 if(xmlNodes
== null) return;
131 var reports
= qx
.xml
.Element
.selectNodes(xmlNodes
[0],'report[@type="download"]');
132 if(reports
== null || !reports
.length
)return;
134 for(var i
=0; i
<reports
.length
;i
++){
135 var report
= reports
[i
];
136 var commandId
= qx
.dom
.Node
.getText(org
.argeo
.ria
.util
.Element
.selectSingleNode(report
, "@commandid"));
138 "label":qx
.dom
.Node
.getText(report
),
139 "icon":"resource/slc/mime-"+commandId
+".png",
140 "commandId":commandId
143 this.setMenu(submenus
);
144 this.setEnabled(true);
149 icon
: "resource/slc/edit-delete.png",
150 shortcut
: "Control+d",
153 toolbar
: "selection",
154 callback : function(e
){
155 var viewsManager
= org
.argeo
.ria
.components
.ViewsManager
.getInstance();
156 var xmlNodes
= viewsManager
.getViewPaneSelection("list").getNodes();
157 var uuid
= qx
.xml
.Element
.getSingleNodeText(xmlNodes
[0], 'param[@name="uuid"]');
158 var serviceManager
= org
.argeo
.ria
.remote
.RequestManager
.getInstance();
159 var request
= serviceManager
.getRequest(
160 "/org.argeo.slc.webapp/removeResultFromCollection.service",
164 request
.setParameter("collectionId", this.getCollectionId());
165 request
.setParameter("resultUuid", uuid
);
166 request
.addListener("completed", function(response
){
167 this.loadCollections();
169 this.info("Test was successfully deleted");
173 selectionChange : function(viewId
, xmlNodes
){
174 if(viewId
!= "list") return;
175 this.setEnabled(false);
176 if(xmlNodes
== null || !xmlNodes
.length
) return;
177 this.setEnabled(true);
181 "copytocollection" : {
182 label
: "Copy to...",
183 icon
: "resource/slc/edit-copy.png",
184 shortcut
: "Control+c",
187 toolbar
: "selection",
188 callback : function(e
){
189 // Call service to copy
192 submenuCallback : function(commandId
){
193 this.copySelectionToCollection(commandId
, "current_selection");
196 // Call at command creation
197 org
.argeo
.ria
.remote
.RequestManager
.getInstance().addListener("reload", function(event
){
198 if(event
.getDataType() == "collection" || event
.getDataType() == "test_cases"){
199 var testList
= org
.argeo
.ria
.components
.ViewsManager
.getInstance().getViewPaneById("list").getContent();
200 testList
.collectionListToMenu(this, true);
204 selectionChange : function(viewId
, xmlNodes
){
205 if(viewId
!= "list") return;
206 this.setEnabled(false);
207 if(xmlNodes
== null || !xmlNodes
.length
) return;
208 this.setEnabled(true);
217 init : function(viewPane
){
218 this.setView(viewPane
);
220 load : function(data
){
222 statusBarVisible
: false,
223 showCellFocusIndicator
:false,
224 columnVisibilityButtonVisible
:false,
225 contextMenu
: org
.argeo
.ria
.event
.CommandsManager
.getInstance().createMenuFromIds(["opentest", "deletetest", "copytocollection"]),
226 decorator
: new qx
.ui
.decoration
.Background("#fff")
228 var viewPane
= this.getView();
229 this.table
.addListener("dblclick", function(e
){
230 org
.argeo
.ria
.event
.CommandsManager
.getInstance().executeCommand("opentest");
232 var columnModel
= this.table
.getTableColumnModel();
233 columnModel
.getBehavior().setWidth(0, "60%");
234 columnModel
.setDataCellRenderer(0, new org
.argeo
.slc
.web
.XmlRenderer());
235 columnModel
.setDataCellRenderer(1, new org
.argeo
.slc
.web
.XmlRenderer());
237 this.table
.getSelectionManager().getSelectionModel().addListener("changeSelection", function(e
){
238 var viewSelection
= viewPane
.getViewSelection();
239 viewSelection
.clear();
240 var selectionModel
= this.table
.getSelectionManager().getSelectionModel();
241 if(!selectionModel
.getSelectedCount()){
244 var ranges
= this.table
.getSelectionManager().getSelectionModel().getSelectedRanges();
245 var xmlNode
= this.table
.getTableModel().getRowData(ranges
[0].minIndex
);
246 viewSelection
.addNode(xmlNode
);
247 viewPane
.setViewSelection(viewSelection
);
250 var select
= new qx
.ui
.form
.SelectBox();
251 this.getView().addHeaderComponent(select
);
252 this.getView().setViewTitle("");
253 this.add(this.table
, {flex
:1});
255 select
.addListener("changeValue", this.collectionSelectorListener
, this);
257 org
.argeo
.ria
.remote
.RequestManager
.getInstance().addListener("reload", function(event
){
258 if(event
.getDataType()!="collection") return;
259 select
.removeListener("changeValue", this.collectionSelectorListener
, this);
260 var collectionList
= event
.getContent();
262 for(key
in collectionList
){
263 var item
= new qx
.ui
.form
.ListItem(collectionList
[key
], "resource/slc/folder.png", key
);
265 if(key
== this.getCollectionId()){
266 select
.setSelected(item
);
269 select
.addListener("changeValue", this.collectionSelectorListener
, this);
274 loadCollections : function(){
275 var url
= "/org.argeo.slc.webapp/listCollectionRefs.service";
276 var serviceManager
= org
.argeo
.ria
.remote
.RequestManager
.getInstance();
277 var request
= serviceManager
.getRequest(
282 var NSMap
= {slc
:"http://argeo.org/projects/slc/schemas"};
283 request
.addListener("completed", function(response
){
284 var xml
= response
.getContent();
285 var collections
= {};
286 var nodes
= org
.argeo
.ria
.util
.Element
.selectNodes(xml
, "//slc:ref", NSMap
);
287 for(var i
=0;i
<nodes
.length
;i
++){
288 var collId
= qx
.xml
.Element
.getSingleNodeText(nodes
[i
], ".");
289 collections
[collId
] = collId
;
291 this.setCollectionList(collections
);
292 org
.argeo
.ria
.remote
.RequestManager
.getInstance().fireReloadEvent("collection", this.getCollectionList());
294 request
.setAsynchronous(false);
298 loadList : function(){
299 var url
= "/org.argeo.slc.webapp/resultList.ui";
300 var model
= this.table
.getTableModel();
301 model
.removeRows(0, model
.getRowCount());
302 var serviceManager
= org
.argeo
.ria
.remote
.RequestManager
.getInstance();
303 var commandManager
= org
.argeo
.ria
.event
.CommandsManager
.getInstance();
304 var request
= serviceManager
.getRequest(
309 [commandManager
.getCommandById("loadtestlist"), this.getView()]
311 request
.setParameter("collectionId", this.getCollectionId());
312 request
.addListener("completed", function(response
){
313 var xml
= response
.getContent();
314 this.info("Successfully loaded XML");
315 var nodes
= qx
.xml
.Element
.selectNodes(xml
, "//data");
316 for(var i
=0; i
<nodes
.length
;i
++){
317 var rowData
= nodes
[i
];
318 model
.addRows([rowData
]);
324 collectionListToMenu : function(command
, checkSelection
){
325 command
.setEnabled(false);
326 command
.clearMenus();
327 var collectionList
= this.getCollectionList();
328 if(!collectionList
) return;
330 for(var key
in collectionList
){
331 if(this.getCollectionId() && key
== this.getCollectionId()) continue;
333 "label":collectionList
[key
],
334 "icon":"resource/slc/folder.png",
338 submenus
.push({"label":"New...", "icon":"resource/slc/folder-new.png", "commandId":"slc.client.create"});
339 command
.setMenu(submenus
);
341 var viewSelection
= this.getView().getViewSelection();
342 if(viewSelection
.getCount()) command
.setEnabled(true);
344 command
.setEnabled(true);
348 copySelectionToCollection:function(collectionId
, selectionType
){
349 if(collectionId
== "slc.client.create"){
350 var modal
= new org
.argeo
.ria
.components
.Modal("Create collection", "resource/slc/folder-new.png");
351 modal
.makePromptForm("Enter the new collection name", function(value
){
353 alert("Please enter a name for the new collection!");
357 // Create the collection now, then recall the callback with the new name.
358 this.copySelectionToCollection(value
, selectionType
);
362 modal
.attachAndShow();
366 var serviceManager
= org
.argeo
.ria
.remote
.RequestManager
.getInstance();
367 var request
= serviceManager
.getRequest(
368 "/org.argeo.slc.webapp/addResultToCollection.service",
373 if(selectionType
== "current_collection"){
374 this.error("Not implemented yet!");
375 }else if(selectionType
== "current_selection"){
377 request
.setParameter("collectionId", collectionId
);
378 var xmlNodes
= this.getView().getViewSelection().getNodes();
379 var uuid
= qx
.xml
.Element
.getSingleNodeText(xmlNodes
[0], 'param[@name="uuid"]');
380 request
.setParameter("resultUuid", uuid
);
382 request
.addListener("completed", function(response
){
383 this.loadCollections();
388 collectionSelectorListener : function(event
){
389 this.setCollectionId(event
.getData());
393 addScroll : function(){