]> git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/slc/web/TestList.js
Use a specific renderer for status cell background management / Disable the mouse...
[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 : "File",
41 toolbar : "test",
42 callback : function(e){
43 this.loadList();
44 },
45 command : null
46 },
47 "opentest" : {
48 label : "Open",
49 icon : "resource/slc/document-open.png",
50 shortcut : "Control+o",
51 enabled : false,
52 menu : "Selection",
53 toolbar : "test",
54 callback : function(e){
55 var viewsManager = org.argeo.ria.components.ViewsManager.getInstance();
56 var classObj = org.argeo.slc.web.Applet;
57 var iView = viewsManager.initIViewClass(classObj, "applet");
58 var xmlNodes = viewsManager.getViewPaneSelection("list").getNodes();
59 iView.load(xmlNodes[0]);
60 },
61 selectionChange : function(viewId, xmlNodes){
62 if(viewId != "list") return;
63 this.setEnabled(false);
64 if(xmlNodes == null || !xmlNodes.length) return;
65 var applet = org.argeo.ria.util.Element.selectSingleNode(xmlNodes[0],'report[@type="applet"]');
66 if(applet != null && qx.dom.Node.getText(applet) != ""){
67 this.setEnabled(true);
68 }
69 },
70 command : null
71 },
72 "download" : {
73 label : "Download as...",
74 icon : "resource/slc/go-down.png",
75 shortcut : null,
76 enabled : false,
77 menu : "Selection",
78 toolbar : "test",
79 callback : function(e){ },
80 command : null,
81 submenu : {},
82 submenuCallback : function(commandId){
83 var viewsManager = org.argeo.ria.components.ViewsManager.getInstance();
84 var xmlNodes = viewsManager.getViewPaneSelection("list").getNodes();
85 // Single selection
86 var uuid = qx.xml.Element.getSingleNodeText(xmlNodes[0], 'param[@name="uuid"]');
87 var urls = {
88 xsl : "resultView.xslt",
89 xml : "resultViewXml.xslt",
90 xls : "resultView.xls",
91 pdf : "resultView.pdf"
92 };
93 var url = "../"+urls[commandId]+"?uuid="+uuid;
94 if(commandId == "xls" || commandId == "pdf"){
95 document.location.href = url;
96 }else{
97 var win = window.open(url);
98 }
99 },
100 selectionChange : function(viewId, xmlNodes){
101 if(viewId!="list")return;
102 this.clearMenus();
103 this.setEnabled(false);
104 if(xmlNodes == null) return;
105
106 var reports = qx.xml.Element.selectNodes(xmlNodes[0],'report[@type="download"]');
107 if(reports == null || !reports.length)return;
108 var submenus = [];
109 for(var i=0; i<reports.length;i++){
110 var report = reports[i];
111 var commandId = qx.dom.Node.getText(org.argeo.ria.util.Element.selectSingleNode(report, "@commandid"));
112 submenus.push({
113 "label":qx.dom.Node.getText(report),
114 "icon":"resource/slc/mime-"+commandId+".png",
115 "commandId":commandId
116 });
117 }
118 this.setMenu(submenus);
119 this.setEnabled(true);
120 }
121 },
122 "deletetest" : {
123 label : "Delete",
124 icon : "resource/slc/edit-delete.png",
125 shortcut : "Control+d",
126 enabled : false,
127 menu : "Selection",
128 toolbar : "test",
129 callback : function(e){
130 // Call service to delete
131 },
132 selectionChange : function(viewId, xmlNodes){
133 if(viewId != "list") return;
134 this.setEnabled(false);
135 if(xmlNodes == null || !xmlNodes.length) return;
136 this.setEnabled(true);
137 },
138 command : null
139 },
140 "copytocollection" : {
141 label : "Copy to...",
142 icon : "resource/slc/edit-copy.png",
143 shortcut : "Control+c",
144 enabled : false,
145 menu : "Selection",
146 toolbar : "test",
147 callback : function(e){
148 // Call service to copy
149 },
150 submenu : {},
151 init : function(){
152 // Call at command creation
153 org.argeo.ria.remote.RequestManager.getInstance().addListener("reload", function(event){
154 if(event.getDataType() != "collection") return;
155 this.setEnabled(false);
156 this.clearMenus();
157 var collectionList = event.getContent();
158 if(!collectionList) return;
159 var submenus = [];
160 for(var key in collectionList){
161 submenus.push({
162 "label":collectionList[key],
163 "icon":null,
164 "commandId":key
165 });
166 }
167 this.setMenu(submenus);
168 var viewSelection = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneSelection("list");
169 if(viewSelection.getCount()) this.setEnabled(true);
170 }, this);
171 },
172 selectionChange : function(viewId, xmlNodes){
173 if(viewId != "list") return;
174 this.setEnabled(false);
175 if(xmlNodes == null || !xmlNodes.length) return;
176 this.setEnabled(true);
177 },
178 command : null
179 }
180 }
181 }
182 },
183
184 members : {
185 init : function(viewPane){
186 this.setView(viewPane);
187 },
188 load : function(data){
189 this.table.set({
190 statusBarVisible: false,
191 showCellFocusIndicator:false,
192 columnVisibilityButtonVisible:false,
193 contextMenu : org.argeo.ria.event.CommandsManager.getInstance().createMenuFromIds(["opentest", "deletetest", "copytocollection"]),
194 decorator : new qx.ui.decoration.Background("#fff")
195 });
196 var viewPane = this.getView();
197 this.table.addListener("dblclick", function(e){
198 org.argeo.ria.event.CommandsManager.getInstance().executeCommand("opentest");
199 }, this);
200 var columnModel = this.table.getTableColumnModel();
201 columnModel.getBehavior().setWidth(0, "60%");
202 columnModel.setDataCellRenderer(0, new org.argeo.slc.web.XmlRenderer());
203 columnModel.setDataCellRenderer(1, new org.argeo.slc.web.XmlRenderer());
204
205 this.table.getSelectionManager().getSelectionModel().addListener("changeSelection", function(e){
206 var viewSelection = viewPane.getViewSelection();
207 viewSelection.clear();
208 var selectionModel = this.table.getSelectionManager().getSelectionModel();
209 if(!selectionModel.getSelectedCount()){
210 return;
211 }
212 var ranges = this.table.getSelectionManager().getSelectionModel().getSelectedRanges();
213 var xmlNode = this.table.getTableModel().getRowData(ranges[0].minIndex);
214 viewSelection.addNode(xmlNode);
215 viewPane.setViewSelection(viewSelection);
216 }, this);
217
218 var select = new qx.ui.form.SelectBox();
219 this.getView().addHeaderComponent(select);
220 this.getView().setViewTitle("");
221 this.add(this.table, {flex:1});
222
223 select.addListener("changeValue", function(dataEvent){
224 this.debug(dataEvent.getData());
225 this.setCollectionId(dataEvent.getData());
226 this.loadList();
227 }, this);
228
229 org.argeo.ria.remote.RequestManager.getInstance().addListener("reload", function(event){
230 if(event.getDataType()!="collection") return;
231 var collectionList = event.getContent();
232 select.removeAll();
233 for(key in collectionList){
234 var item = new qx.ui.form.ListItem(collectionList[key], null, key);
235 select.add(item);
236 if(key == this.getCollectionId()){
237 select.setSelected(item);
238 }
239 }
240 }, this);
241
242 },
243
244 loadCollections : function(){
245 this.setCollectionList({"Charles":"Collection 'Charles'","My Collection":"Collection 'My Collection'"});
246 org.argeo.ria.remote.RequestManager.getInstance().fireReloadEvent("collection", this.getCollectionList());
247 },
248
249 loadList : function(){
250 var url = "/org.argeo.slc.webapp/resultList.ui";
251 var model = this.table.getTableModel();
252 model.removeRows(0, model.getRowCount());
253 var serviceManager = org.argeo.ria.remote.RequestManager.getInstance();
254 var commandManager = org.argeo.ria.event.CommandsManager.getInstance();
255 var request = serviceManager.getRequest(
256 url,
257 "GET",
258 "application/xml",
259 "test_cases",
260 [commandManager.getCommandById("loadtestlist"), this.getView()]
261 );
262 request.setParameter("collectionId", this.getCollectionId());
263 request.addListener("completed", function(response){
264 xml = response.getContent();
265 qx.log.Logger.info("Successfully loaded XML");
266 //var resManager = org.argeo.ria.event.ResourcesManager.getInstance().fireReloadEvent("test_cases", xml);
267 var nodes = qx.xml.Element.selectNodes(xml, "//data");
268 for(var i=0; i<nodes.length;i++){
269 var rowData = nodes[i];
270 model.addRows([rowData]);
271 }
272 }, request);
273 request.send();
274 },
275
276 addScroll : function(){
277 return false;
278 }
279 }
280 });