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
){
49 icon
: "resource/slc/document-open-recent.png",
50 shortcut
: "Control+l",
54 toolbar
: "collection",
55 callback : function(event
){
56 this.pollListLoading(event
.getTarget().getUserData("slc.command.toggleState"));
61 "copyfullcollection" : {
63 icon : "resource/slc/edit-copy.png",
67 toolbar : "collection",
68 callback : function(e){
69 // Call service to copy
72 submenuCallback : function(commandId){
73 this.copySelectionToCollection(commandId, "current_collection");
76 // Call at command creation
77 org.argeo.ria.remote.RequestManager.getInstance().addListener("reload", function(event){
78 if(event.getDataType() == "collection" || event.getDataType() == "test_cases"){
79 var testList = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("list").getContent();
80 testList.collectionListToMenu(this);
89 icon
: "resource/slc/media-playback-start.png",
90 shortcut
: "Control+o",
93 toolbar
: "selection",
94 callback : function(e
){
95 var viewsManager
= org
.argeo
.ria
.components
.ViewsManager
.getInstance();
96 var classObj
= org
.argeo
.slc
.ria
.Applet
;
97 var iView
= viewsManager
.initIViewClass(classObj
, "applet");
98 var xmlNodes
= viewsManager
.getViewPaneSelection("list").getNodes();
99 iView
.load(xmlNodes
[0]);
101 selectionChange : function(viewId
, xmlNodes
){
102 if(viewId
!= "list") return;
103 this.setEnabled(false);
104 if(xmlNodes
== null || !xmlNodes
.length
) return;
105 this.setEnabled(true);
110 label
: "Download as...",
111 icon
: "resource/slc/go-down.png",
115 toolbar
: "selection",
116 callback : function(e
){ },
119 {'label':"Xsl", 'icon':'resource/slc/mime-xsl.png', 'commandId':'xsl'},
120 {'label':"Xml", 'icon':'resource/slc/mime-xml.png', 'commandId':'xml'},
121 {'label':"Excel", 'icon':'resource/slc/mime-xls.png', 'commandId':'xls'},
122 {'label':"Pdf", 'icon':'resource/slc/mime-pdf.png', 'commandId':'pdf'}
124 submenuCallback : function(commandId
){
125 var uuid
= this.extractTestUuid();
127 xsl
: "resultView.xslt",
128 xml
: "resultViewXml.xslt",
129 xls
: "resultView.xls",
130 pdf
: "resultView.pdf"
132 var url
= "../"+urls
[commandId
]+"?uuid="+uuid
;
133 if(commandId
== "xls" || commandId
== "pdf"){
134 document
.location
.href
= url
;
136 var win
= window
.open(url
);
139 selectionChange : function(viewId
, xmlNodes
){
140 if(viewId
!="list")return;
142 this.setEnabled(false);
143 if(xmlNodes
== null || !xmlNodes
.length
) return;
144 this.setEnabled(true);
147 "copytocollection" : {
148 label
: "Copy to...",
149 icon
: "resource/slc/edit-copy.png",
150 shortcut
: "Control+c",
153 toolbar
: "selection",
154 callback : function(e
){
155 // Call service to copy
158 submenuCallback : function(commandId
){
159 this.copySelectionToCollection(commandId
, "current_selection");
162 // Call at command creation
163 org
.argeo
.ria
.remote
.RequestManager
.getInstance().addListener("reload", function(event
){
164 if(event
.getDataType() == "collection" || event
.getDataType() == "test_cases"){
165 var testList
= org
.argeo
.ria
.components
.ViewsManager
.getInstance().getViewPaneById("list").getContent();
166 testList
.collectionListToMenu(this, true);
170 selectionChange : function(viewId
, xmlNodes
){
171 if(viewId
!= "list") return;
172 this.setEnabled(false);
173 if(xmlNodes
== null || !xmlNodes
.length
) return;
174 this.setEnabled(true);
180 icon
: "resource/slc/edit-delete.png",
181 shortcut
: "Control+d",
184 toolbar
: "selection",
185 callback : function(e
){
187 var request
= org
.argeo
.slc
.ria
.SlcApi
.getRemoveResultService(this.getCollectionId(), this.extractTestUuid());
188 request
.addListener("completed", function(response
){
189 this.loadCollections();
191 this.info("Test was successfully deleted");
195 selectionChange : function(viewId
, xmlNodes
){
196 if(viewId
!= "list") return;
197 this.setEnabled(false);
198 if(xmlNodes
== null || !xmlNodes
.length
) return;
199 this.setEnabled(true);
208 init : function(viewPane
){
209 this.setView(viewPane
);
211 load : function(data
){
213 statusBarVisible
: false,
214 showCellFocusIndicator
:false,
215 columnVisibilityButtonVisible
:false,
216 contextMenu
: org
.argeo
.ria
.event
.CommandsManager
.getInstance().createMenuFromIds(["opentest", "download", "copytocollection", "deletetest"]),
217 decorator
: new qx
.ui
.decoration
.Background("#fff")
219 var viewPane
= this.getView();
220 this.table
.addListener("dblclick", function(e
){
221 org
.argeo
.ria
.event
.CommandsManager
.getInstance().executeCommand("opentest");
223 var columnModel
= this.table
.getTableColumnModel();
224 columnModel
.getBehavior().setWidth(0, "60%");
225 var renderer
= new org
.argeo
.slc
.web
.XmlRenderer();
226 columnModel
.setDataCellRenderer(0, renderer
);
227 columnModel
.setDataCellRenderer(1, renderer
);
229 this.table
.getSelectionManager().getSelectionModel().addListener("changeSelection", function(e
){
230 var viewSelection
= viewPane
.getViewSelection();
231 viewSelection
.clear();
232 var selectionModel
= this.table
.getSelectionManager().getSelectionModel();
233 if(!selectionModel
.getSelectedCount()){
236 var ranges
= this.table
.getSelectionManager().getSelectionModel().getSelectedRanges();
237 var xmlNode
= this.table
.getTableModel().getRowData(ranges
[0].minIndex
);
238 viewSelection
.addNode(xmlNode
);
239 viewPane
.setViewSelection(viewSelection
);
242 var select
= new qx
.ui
.form
.SelectBox();
243 this.getView().addHeaderComponent(select
);
244 this.getView().setViewTitle("");
245 this.add(this.table
, {flex
:1});
247 select
.addListener("changeValue", this.collectionSelectorListener
, this);
249 org
.argeo
.ria
.remote
.RequestManager
.getInstance().addListener("reload", function(event
){
250 if(event
.getDataType()!="collection") return;
251 select
.removeListener("changeValue", this.collectionSelectorListener
, this);
252 var collectionList
= event
.getContent();
254 for(key
in collectionList
){
255 var item
= new qx
.ui
.form
.ListItem(collectionList
[key
], "resource/slc/folder.png", key
);
257 if(key
== this.getCollectionId()){
258 select
.setSelected(item
);
261 this.setCollectionId(select
.getSelected().getValue());
262 select
.addListener("changeValue", this.collectionSelectorListener
, this);
267 loadCollections : function(){
268 var request
= org
.argeo
.slc
.ria
.SlcApi
.getListCollectionsService();
269 var NSMap
= {slc
:"http://argeo.org/projects/slc/schemas"};
270 request
.addListener("completed", function(response
){
271 var xml
= response
.getContent();
272 var collections
= {};
273 var nodes
= org
.argeo
.ria
.util
.Element
.selectNodes(xml
, "//slc:ref", NSMap
);
274 for(var i
=0;i
<nodes
.length
;i
++){
275 var collId
= qx
.xml
.Element
.getSingleNodeText(nodes
[i
], ".");
276 collections
[collId
] = collId
;
278 this.setCollectionList(collections
);
279 org
.argeo
.ria
.remote
.RequestManager
.getInstance().fireReloadEvent("collection", this.getCollectionList());
281 request
.setAsynchronous(false);
285 loadList : function(){
286 var model
= this.table
.getTableModel();
287 model
.removeRows(0, model
.getRowCount());
288 var commandManager
= org
.argeo
.ria
.event
.CommandsManager
.getInstance();
289 var request
= org
.argeo
.slc
.ria
.SlcApi
.getListResultsService(this.getCollectionId(), null, [commandManager
.getCommandById("loadtestlist"), this.getView()]);
290 var NSMap
= {slc
:"http://argeo.org/projects/slc/schemas"};
291 request
.addListener("completed", function(response
){
292 var xml
= response
.getContent();
293 this.debug("Successfully loaded XML");
294 var nodes
= org
.argeo
.ria
.util
.Element
.selectNodes(xml
, "//slc:result-attributes", NSMap
);
295 //model.addRows(nodes);
297 for(var i
=0; i
<nodes
.length
;i
++){
298 model
.addRows([nodes
[i
]]);
304 pollListLoading : function(state
){
306 this.timer
= new qx
.event
.Timer(5000);
307 this.timer
.addListener("interval", this.loadList
, this);
317 collectionListToMenu : function(command
, checkSelection
){
318 command
.setEnabled(false);
319 command
.clearMenus();
320 var collectionList
= this.getCollectionList();
321 if(!collectionList
) return;
323 for(var key
in collectionList
){
324 if(this.getCollectionId() && key
== this.getCollectionId()) continue;
326 "label":collectionList
[key
],
327 "icon":"resource/slc/folder.png",
331 submenus
.push({'separator':true});
332 submenus
.push({"label":"New...", "icon":"resource/slc/folder-new.png", "commandId":"slc.client.create"});
333 command
.setMenu(submenus
);
335 var viewSelection
= this.getView().getViewSelection();
336 if(viewSelection
.getCount()) command
.setEnabled(true);
338 command
.setEnabled(true);
342 copySelectionToCollection:function(collectionId
, selectionType
){
343 if(collectionId
== "slc.client.create"){
344 var modal
= new org
.argeo
.ria
.components
.Modal("Create collection", "resource/slc/folder-new.png");
345 modal
.makePromptForm("Enter the new collection name", function(value
){
347 alert("Please enter a name for the new collection!");
351 // Create the collection now, then recall the callback with the new name.
352 this.copySelectionToCollection(value
, selectionType
);
356 modal
.attachAndShow();
360 if(selectionType
== "current_collection"){
361 this.error("Not implemented yet!");
362 }else if(selectionType
== "current_selection"){
364 var request
= org
.argeo
.slc
.ria
.SlcApi
.getAddResultService(collectionId
,this.extractTestUuid());
365 request
.addListener("completed", function(response
){
366 this.info("Result successfully copied to collection!");
367 this.loadCollections();
373 extractTestUuid: function(){
374 var NSMap
= {slc
:"http://argeo.org/projects/slc/schemas"};
375 var xmlNodes
= this.getView().getViewSelection().getNodes();
376 var uuid
= qx
.dom
.Node
.getText(org
.argeo
.ria
.util
.Element
.selectSingleNode(xmlNodes
[0], "slc:uuid"));
380 collectionSelectorListener : function(event
){
381 this.setCollectionId(event
.getData());
385 addScroll : function(){