]> git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/slc/web/custom/TestList.js
Huge refactoring
[gpl/argeo-slc.git] / org.argeo.slc.webapp / src / main / webapp / source / class / org / argeo / slc / web / custom / TestList.js
1 /**
2 * @author Charles
3 */
4 qx.Class.define("org.argeo.slc.web.custom.TestList",
5 {
6 extend : qx.ui.table.Table,
7 implement : [org.argeo.slc.web.components.IView],
8
9 construct : function(){
10 var model = new qx.ui.table.model.Simple();
11 model.setColumns(["Test Case", "Date"]);
12 this.base(arguments, model, {
13 tableColumnModel: function(obj){
14 return new qx.ui.table.columnmodel.Resize(obj)
15 }
16 });
17 this.setModel(model);
18 },
19
20 properties :
21 {
22 view : {
23 init : null
24 },
25 model : {
26 init: null
27 },
28 commands : {
29 init : {
30 "loadtestlist" : {
31 label : "Load Tests",
32 icon : "resource/slc/view-refresh.png",
33 shortcut : "Control+l",
34 enabled : true,
35 menu : "File",
36 toolbar : "test",
37 callback : function(e){
38 this.loadList();
39 },
40 command : null
41 },
42 "opentest" : {
43 label : "Open",
44 icon : "resource/slc/document-open.png",
45 shortcut : "Control+o",
46 enabled : false,
47 menu : "Selection",
48 toolbar : "test",
49 callback : function(e){
50 var viewsManager = org.argeo.slc.web.components.ViewsManager.getInstance();
51 var classObj = org.argeo.slc.web.custom.Applet;
52 var iView = viewsManager.initIViewClass(classObj, "applet");
53 var xmlNodes = viewsManager.getViewPaneSelection("list").getNodes();
54 iView.load(xmlNodes[0]);
55 },
56 selectionChange : function(viewId, xmlNodes){
57 if(viewId != "list") return;
58 this.setEnabled(false);
59 if(xmlNodes == null || !xmlNodes.length) return;
60 var applet = org.argeo.slc.web.util.Element.selectSingleNode(xmlNodes[0],'report[@type="applet"]');
61 if(applet != null && qx.dom.Node.getText(applet) != ""){
62 this.setEnabled(true);
63 }
64 },
65 command : null
66 },
67 "download" : {
68 label : "Download as...",
69 icon : "resource/slc/go-down.png",
70 shortcut : null,
71 enabled : false,
72 menu : "Selection",
73 toolbar : "test",
74 callback : function(e){ },
75 command : null,
76 submenu : {},
77 submenuCallback : function(commandId){
78 var viewsManager = org.argeo.slc.web.components.ViewsManager.getInstance();
79 var xmlNodes = viewsManager.getViewPaneSelection("list").getNodes();
80 // Single selection
81 var uuid = qx.xml.Element.getSingleNodeText(xmlNodes[0], 'param[@name="uuid"]');
82 var urls = {
83 xsl : "resultView.xslt",
84 xml : "resultViewXml.xslt",
85 xls : "resultView.xls",
86 pdf : "resultView.pdf"
87 };
88 var url = "../"+urls[commandId]+"?uuid="+uuid;
89 if(commandId == "xls" || commandId == "pdf"){
90 document.location.href = url;
91 }else{
92 var win = window.open(url);
93 }
94 },
95 selectionChange : function(viewId, xmlNodes){
96 if(viewId!="list")return;
97 this.clearMenus();
98 this.setEnabled(false);
99 if(xmlNodes == null) return;
100
101 var reports = qx.xml.Element.selectNodes(xmlNodes[0],'report[@type="download"]');
102 if(reports == null || !reports.length)return;
103
104 for(var i=0; i<reports.length;i++){
105 var report = reports[i];
106 var commandId = qx.dom.Node.getText(org.argeo.slc.web.util.Element.selectSingleNode(report, "@commandid"));
107 this.addSubMenuButton(
108 qx.dom.Node.getText(report),
109 "resource/slc/mime-"+commandId+".png",
110 commandId
111 );
112 }
113 this.setEnabled(true);
114 this.fireDataEvent("changeMenu", this.getMenu());
115 }
116 },
117 "deletetest" : {
118 label : "Delete",
119 icon : "resource/slc/edit-delete.png",
120 shortcut : "Control+d",
121 enabled : false,
122 menu : "Selection",
123 toolbar : "test",
124 callback : function(e){
125 // Call service to delete
126 },
127 command : null
128 },
129 "copytocollection" : {
130 label : "Copy to...",
131 icon : "resource/slc/edit-copy.png",
132 shortcut : "Control+c",
133 enabled : false,
134 menu : "Selection",
135 toolbar : "test",
136 callback : function(e){
137 // Call service to copy
138 },
139 command : null
140 }
141 }
142 }
143 },
144
145 members : {
146 init : function(viewPane){
147 this.setView(viewPane);
148 },
149 load : function(data){
150 this.set({
151 statusBarVisible: false,
152 showCellFocusIndicator:false,
153 columnVisibilityButtonVisible:false,
154 contextMenu : org.argeo.slc.web.event.CommandsManager.getInstance().createMenuFromIds(["opentest", "deletetest", "copytocollection"]),
155 decorator : new qx.ui.decoration.Background("#fff")
156 });
157 var viewPane = this.getView();
158 this.addListener("dblclick", function(e){
159 org.argeo.slc.web.event.CommandsManager.getInstance().executeCommand("opentest");
160 }, this);
161 var columnModel = this.getTableColumnModel();
162 columnModel.getBehavior().setWidth(0, "60%");
163 columnModel.setDataCellRenderer(0, new org.argeo.slc.web.components.XmlRenderer());
164 columnModel.setDataCellRenderer(1, new org.argeo.slc.web.components.XmlRenderer());
165
166 this.getSelectionManager().getSelectionModel().addListener("changeSelection", function(e){
167 var viewSelection = viewPane.getViewSelection();
168 viewSelection.clear();
169 var selectionModel = this.getSelectionManager().getSelectionModel();
170 if(!selectionModel.getSelectedCount()){
171 return;
172 }
173 var ranges = this.getSelectionManager().getSelectionModel().getSelectedRanges();
174 var xmlNode = this.getModel().getRowData(ranges[0].minIndex);
175 viewSelection.addNode(xmlNode);
176 viewPane.setViewSelection(viewSelection);
177 }, this);
178 },
179
180 loadList : function(){
181 var url = "/org.argeo.slc.webapp/resultList.ui";
182 var model = this.getModel();
183 model.removeRows(0, model.getRowCount());
184 var serviceManager = org.argeo.slc.web.util.RequestManager.getInstance();
185 var commandManager = org.argeo.slc.web.event.CommandsManager.getInstance();
186 var request = serviceManager.getRequest(
187 url,
188 "GET",
189 "application/xml",
190 "test_cases",
191 [commandManager.getCommandById("loadtestlist"), this.getView()]
192 );
193 request.addListener("completed", function(response){
194 xml = response.getContent();
195 qx.log.Logger.info("Successfully loaded XML");
196 //var resManager = org.argeo.slc.web.event.ResourcesManager.getInstance().fireReloadEvent("test_cases", xml);
197 var nodes = qx.xml.Element.selectNodes(xml, "//data");
198 for(var i=0; i<nodes.length;i++){
199 var rowData = nodes[i];
200 model.addRows([rowData]);
201 }
202 }, request);
203 request.send();
204 },
205
206 addScroll : function(){
207 return false;
208 }
209 }
210 });