var service;
var NSMap = {slc:"http://argeo.org/projects/slc/schemas"};
var testId = qx.dom.Node.getText(org.argeo.ria.util.Element.selectSingleNode(this.data, "slc:uuid"));
- this.info("Opening test "+testId);
this.getView().setViewTitle("Test "+testId);
- service = "../resultViewXml.xslt?uuid="+testId;
- var serviceManager = org.argeo.ria.remote.RequestManager.getInstance();
- var request = serviceManager.getRequest(service, "GET", "application/xml");
+ var request = org.argeo.slc.web.SlcApi.getLoadResultService(testId);
request.addListener("completed", function(response){
this.createXmlGui(response.getContent());
this.getView().setOnLoad(false);
var simpleResults = org.argeo.ria.util.Element.selectNodes(node, "slc:part-sub-list/slc:parts/slc:simple-result-part", NSMap);
var newId;
- newId = model.addBranch(currentParentId, label, false);
+ //newId = model.addBranch(currentParentId, label, false);
// Test Leaf Node
if(!simpleResults || !simpleResults.length){
+ newId = model.addBranch(currentParentId, label, false);
addedPaths[crtPath] = newId;
currentParentId = newId;
continue;
}
+ if(simpleResults.length == 1){
+ //newId = model.addBranch(currentParentId, label, false);
+ var sResNode = simpleResults[0];
+ newId = model.addBranch(currentParentId, label);
+ model.setColumnData(newId, 3, org.argeo.ria.util.Element.getSingleNodeText(sResNode, "slc:test-run-uuid", NSMap));
+ model.setColumnData(newId, 2, org.argeo.ria.util.Element.getSingleNodeText(sResNode, "slc:message", NSMap));
+ var status = org.argeo.ria.util.Element.getSingleNodeText(sResNode, "slc:status", NSMap);
+ if(status != "PASSED"){
+ status = this.failedStatus ;
+ this._setParentBranchAsFailed(newId);
+ }else{
+ status = this.passedStatus;
+ }
+ model.setColumnData(newId, 1, status);
+ addedPaths[crtPath] = newId;
+ currentParentId = newId;
+ continue;
+ }
+ newId = model.addBranch(currentParentId, label, false);
for(var k=0;k<simpleResults.length;k++){
var sResNode = simpleResults[k];
resId = model.addLeaf(currentParentId, label);
currentParentId = newId;
}
}
+ this._refineLeaves(this.tree, 0);
this.add(this.tree, {flex:1});
model.setData();
var columnModel = this.tree.getTableColumnModel();
}
},
+ _refineLeaves : function(tree, nodeId){
+ var node = tree.nodeGet(nodeId);
+ if(node.children && node.children.length){
+ for(var i=0;i<node.children.length;i++){
+ this._refineLeaves(tree, node.children[i]);
+ }
+ }else{
+ node.type = qx.ui.treevirtual.SimpleTreeDataModel.Type.LEAF;
+ }
+ },
+
createHtmlGui : function(responseText){
var htmlElement = new qx.ui.embed.Html(responseText);
htmlElement.setOverflowX("auto");
--- /dev/null
+qx.Class.define("org.argeo.slc.web.SlcApi",\r
+{\r
+ extend : qx.core.Object,\r
+ \r
+ statics : {\r
+ DEFAULT_CONTEXT : "/org.argeo.slc.webapp",\r
+ \r
+ REMOVE_RESULT_FROM_COLL_SERVICE : "removeResultFromCollection.service",\r
+ ADD_RESULT_TO_COLL_SERVICE : "addResultToCollection.service",\r
+ LIST_COLLECTIONS_SERVICE : "listCollectionRefs.service",\r
+ LIST_RESULTS_SERVICE : "listResultAttributes.service",\r
+ GET_RESULT_SERVICE : "getResult.service",\r
+ \r
+ /**\r
+ * Standard Request getter\r
+ * @param serviceName {String} The name of the service to call (without base context)\r
+ * @param fireReloadEventType {String} Whether query should trigger a ReloadEvent\r
+ * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update\r
+ * @return {qx.io.remote.Request}\r
+ */\r
+ getServiceRequest:function(serviceName, fireReloadEventType, iLoadStatusables){\r
+ var serviceManager = org.argeo.ria.remote.RequestManager.getInstance();\r
+ return serviceManager.getRequest(\r
+ org.argeo.slc.web.SlcApi.DEFAULT_CONTEXT+"/"+serviceName,\r
+ "GET",\r
+ "application/xml",\r
+ fireReloadEventType,\r
+ iLoadStatusables\r
+ );\r
+ },\r
+ \r
+ /**\r
+ * Remove a result from a collection\r
+ * @param collectionId {String} Id of the destination collection\r
+ * @param resultId {String} Id of the test result to remove\r
+ * @param fireReloadEventType {String} Whether query should trigger a ReloadEvent\r
+ * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update\r
+ * @return {qx.io.remote.Request}\r
+ */\r
+ getRemoveResultService : function(collectionId, resultId, fireReloadEventType, iLoadStatusables){\r
+ var request = org.argeo.slc.web.SlcApi.getServiceRequest(\r
+ org.argeo.slc.web.SlcApi.REMOVE_RESULT_FROM_COLL_SERVICE, \r
+ fireReloadEventType, \r
+ iLoadStatusables\r
+ );\r
+ request.setParameter("collectionId", collectionId);\r
+ request.setParameter("resultUuid", resultId);\r
+ return request;\r
+ },\r
+ \r
+ /**\r
+ * Add a result to a given collection\r
+ * @param collectionId {String} Id of the destination collection\r
+ * @param resultId {String} Id of the test result to add\r
+ * @param fireReloadEventType {String} Whether query should trigger a ReloadEvent\r
+ * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update\r
+ * @return {qx.io.remote.Request}\r
+ */\r
+ getAddResultService : function(collectionId, resultId, fireReloadEventType, iLoadStatusables){\r
+ var request = org.argeo.slc.web.SlcApi.getServiceRequest(\r
+ org.argeo.slc.web.SlcApi.ADD_RESULT_TO_COLL_SERVICE, \r
+ fireReloadEventType, \r
+ iLoadStatusables\r
+ );\r
+ request.setParameter("collectionId", collectionId);\r
+ request.setParameter("resultUuid", resultId);\r
+ return request;\r
+ },\r
+ \r
+ /**\r
+ * List current collections\r
+ * @param fireReloadEventType {String} Whether query should trigger a ReloadEvent\r
+ * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update\r
+ * @return {qx.io.remote.Request}\r
+ */\r
+ getListCollectionsService : function(fireReloadEventType, iLoadStatusables){\r
+ return org.argeo.slc.web.SlcApi.getServiceRequest(\r
+ org.argeo.slc.web.SlcApi.LIST_COLLECTIONS_SERVICE, \r
+ fireReloadEventType, \r
+ iLoadStatusables\r
+ );\r
+ },\r
+ \r
+ /**\r
+ * List all results or results of a given collection \r
+ * @param collectionId {String} Id of the collection to load\r
+ * @param fireReloadEventType {String} Whether query should trigger a ReloadEvent\r
+ * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update\r
+ * @return {qx.io.remote.Request}\r
+ */\r
+ getListResultsService : function(collectionId, fireReloadEventType, iLoadStatusables){\r
+ var request = org.argeo.slc.web.SlcApi.getServiceRequest(\r
+ org.argeo.slc.web.SlcApi.LIST_RESULTS_SERVICE, \r
+ fireReloadEventType, \r
+ iLoadStatusables\r
+ );\r
+ if(collectionId){\r
+ request.setParameter("id", collectionId);\r
+ }\r
+ return request;\r
+ },\r
+ \r
+ /**\r
+ * Load a result test\r
+ * @param resultId {String} Id of the test result to load\r
+ * @param fireReloadEventType {String} Whether query should trigger a ReloadEvent\r
+ * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update\r
+ * @return {qx.io.remote.Request}\r
+ */\r
+ getLoadResultService : function(resultId, fireReloadEventType, iLoadStatusables){\r
+ var request = org.argeo.slc.web.SlcApi.getServiceRequest(\r
+ org.argeo.slc.web.SlcApi.GET_RESULT_SERVICE, \r
+ fireReloadEventType, \r
+ iLoadStatusables\r
+ );\r
+ request.setParameter("uuid", resultId);\r
+ return request;\r
+ }\r
+ \r
+ }\r
+});
\ No newline at end of file
}, \r
command : null\r
},\r
+ "polllistloading" : {\r
+ label : "Auto load", \r
+ icon : "resource/slc/document-open-recent.png",\r
+ shortcut : "Control+l",\r
+ enabled : true,\r
+ toggle : true,\r
+ menu : "Collection",\r
+ toolbar : "collection",\r
+ callback : function(event){\r
+ this.pollListLoading(event.getTarget().getUserData("slc.command.toggleState"));\r
+ }, \r
+ command : null\r
+ },\r
+ /*\r
"copyfullcollection" : {\r
label : "Copy to...", \r
icon : "resource/slc/edit-copy.png",\r
},\r
command : null\r
},\r
+ */\r
"opentest" : {\r
label : "Open", \r
icon : "resource/slc/media-playback-start.png",\r
toolbar : "selection",\r
callback : function(e){ },\r
command : null,\r
- submenu : {},\r
+ submenu : [\r
+ {'label':"Xsl", 'icon':'resource/slc/mime-xsl.png', 'commandId':'xsl'},\r
+ {'label':"Xml", 'icon':'resource/slc/mime-xml.png', 'commandId':'xml'},\r
+ {'label':"Excel", 'icon':'resource/slc/mime-xls.png', 'commandId':'xls'},\r
+ {'label':"Pdf", 'icon':'resource/slc/mime-pdf.png', 'commandId':'pdf'}\r
+ ],\r
submenuCallback : function(commandId){\r
var uuid = this.extractTestUuid();\r
var urls = {\r
var win = window.open(url);\r
}\r
},\r
- init : function(command){\r
- this.setMenu([\r
- {'label':"Xsl", 'icon':'resource/slc/mime-xsl.png', 'commandId':'xsl'},\r
- {'label':"Xml", 'icon':'resource/slc/mime-xml.png', 'commandId':'xml'},\r
- {'label':"Excel", 'icon':'resource/slc/mime-xls.png', 'commandId':'xls'},\r
- {'label':"Pdf", 'icon':'resource/slc/mime-pdf.png', 'commandId':'pdf'}\r
- ]);\r
- },\r
selectionChange : function(viewId, xmlNodes){\r
if(viewId!="list")return;\r
//this.clearMenus();\r
this.setEnabled(false);\r
if(xmlNodes == null || !xmlNodes.length) return;\r
this.setEnabled(true);\r
- /*\r
- var reports = qx.xml.Element.selectNodes(xmlNodes[0],'report[@type="download"]');\r
- if(reports == null || !reports.length)return;\r
- var submenus = [];\r
- for(var i=0; i<reports.length;i++){\r
- var report = reports[i];\r
- var commandId = qx.dom.Node.getText(org.argeo.ria.util.Element.selectSingleNode(report, "@commandid"));\r
- submenus.push({\r
- "label":qx.dom.Node.getText(report), \r
- "icon":"resource/slc/mime-"+commandId+".png", \r
- "commandId":commandId\r
- });\r
- }\r
- this.setMenu(submenus);\r
- this.setEnabled(true);\r
- */\r
}\r
},\r
- "deletetest" : {\r
- label : "Delete", \r
- icon : "resource/slc/edit-delete.png",\r
- shortcut : "Control+d",\r
- enabled : false,\r
- menu : "Selection",\r
- toolbar : "selection",\r
- callback : function(e){\r
- var serviceManager = org.argeo.ria.remote.RequestManager.getInstance();\r
- var request = serviceManager.getRequest(\r
- "/org.argeo.slc.webapp/removeResultFromCollection.service",\r
- "GET",\r
- "application/xml"\r
- );\r
- request.setParameter("collectionId", this.getCollectionId());\r
- request.setParameter("resultUuid", this.extractTestUuid());\r
- request.addListener("completed", function(response){\r
- this.loadCollections();\r
- this.loadList();\r
- this.info("Test was successfully deleted");\r
- }, this);\r
- request.send();\r
- },\r
- selectionChange : function(viewId, xmlNodes){\r
- if(viewId != "list") return;\r
- this.setEnabled(false);\r
- if(xmlNodes == null || !xmlNodes.length) return;\r
- this.setEnabled(true); \r
- },\r
- command : null\r
- },\r
"copytocollection" : {\r
label : "Copy to...", \r
icon : "resource/slc/edit-copy.png",\r
this.setEnabled(true); \r
},\r
command : null\r
- } \r
+ },\r
+ "deletetest" : {\r
+ label : "Delete", \r
+ icon : "resource/slc/edit-delete.png",\r
+ shortcut : "Control+d",\r
+ enabled : false,\r
+ menu : "Selection",\r
+ toolbar : "selection",\r
+ callback : function(e){\r
+ \r
+ var request = org.argeo.slc.web.SlcApi.getRemoveResultService(this.getCollectionId(), this.extractTestUuid());\r
+ request.addListener("completed", function(response){\r
+ this.loadCollections();\r
+ this.loadList();\r
+ this.info("Test was successfully deleted");\r
+ }, this);\r
+ request.send();\r
+ },\r
+ selectionChange : function(viewId, xmlNodes){\r
+ if(viewId != "list") return;\r
+ this.setEnabled(false);\r
+ if(xmlNodes == null || !xmlNodes.length) return;\r
+ this.setEnabled(true); \r
+ },\r
+ command : null\r
+ }\r
}\r
}\r
},\r
statusBarVisible: false,\r
showCellFocusIndicator:false,\r
columnVisibilityButtonVisible:false,\r
- contextMenu : org.argeo.ria.event.CommandsManager.getInstance().createMenuFromIds(["opentest", "deletetest", "copytocollection"]),\r
+ contextMenu : org.argeo.ria.event.CommandsManager.getInstance().createMenuFromIds(["opentest", "download", "copytocollection", "deletetest"]),\r
decorator : new qx.ui.decoration.Background("#fff")\r
});\r
var viewPane = this.getView();\r
},\r
\r
loadCollections : function(){\r
- var url = "/org.argeo.slc.webapp/listCollectionRefs.service";\r
- var serviceManager = org.argeo.ria.remote.RequestManager.getInstance();\r
- var request = serviceManager.getRequest(\r
- url,\r
- "GET",\r
- "application/xml"\r
- );\r
+ var request = org.argeo.slc.web.SlcApi.getListCollectionsService();\r
var NSMap = {slc:"http://argeo.org/projects/slc/schemas"};\r
request.addListener("completed", function(response){\r
var xml = response.getContent();\r
},\r
\r
loadList : function(){\r
- var url = "/org.argeo.slc.webapp/listResultAttributes.service";\r
var model = this.table.getTableModel();\r
model.removeRows(0, model.getRowCount());\r
- var serviceManager = org.argeo.ria.remote.RequestManager.getInstance();\r
var commandManager = org.argeo.ria.event.CommandsManager.getInstance();\r
- var request = serviceManager.getRequest(\r
- url, \r
- "GET", \r
- "application/xml", \r
- null,\r
- [commandManager.getCommandById("loadtestlist"), this.getView()]\r
- ); \r
- request.setParameter("id", this.getCollectionId());\r
+ var request = org.argeo.slc.web.SlcApi.getListResultsService(this.getCollectionId(), null, [commandManager.getCommandById("loadtestlist"), this.getView()]);\r
var NSMap = {slc:"http://argeo.org/projects/slc/schemas"};\r
request.addListener("completed", function(response){\r
var xml = response.getContent();\r
- this.info("Successfully loaded XML");\r
+ this.debug("Successfully loaded XML");\r
var nodes = org.argeo.ria.util.Element.selectNodes(xml, "//slc:result-attributes", NSMap);\r
for(var i=0; i<nodes.length;i++){\r
var rowData = nodes[i];\r
request.send(); \r
},\r
\r
+ pollListLoading : function(state){\r
+ if(!this.timer){\r
+ this.timer = new qx.event.Timer(5000);\r
+ this.timer.addListener("interval", this.loadList, this);\r
+ }\r
+ if(state){\r
+ this.loadList();\r
+ this.timer.start();\r
+ }else{\r
+ this.timer.stop();\r
+ }\r
+ },\r
+ \r
collectionListToMenu : function(command, checkSelection){\r
command.setEnabled(false);\r
command.clearMenus();\r
"commandId":key\r
});\r
} \r
+ submenus.push({'separator':true});\r
submenus.push({"label":"New...", "icon":"resource/slc/folder-new.png", "commandId":"slc.client.create"});\r
command.setMenu(submenus);\r
if(checkSelection){\r
return;\r
}\r
\r
- var serviceManager = org.argeo.ria.remote.RequestManager.getInstance();\r
- var request = serviceManager.getRequest(\r
- "/org.argeo.slc.webapp/addResultToCollection.service", \r
- "GET", \r
- "application/xml"\r
- );\r
-\r
if(selectionType == "current_collection"){\r
this.error("Not implemented yet!"); \r
}else if(selectionType == "current_selection"){\r
// get selection ID\r
- request.setParameter("collectionId", collectionId);\r
- request.setParameter("resultUuid", this.extractTestUuid());\r
+ var request = org.argeo.slc.web.SlcApi.getAddResultService(collectionId,this.extractTestUuid());\r
+ request.addListener("completed", function(response){\r
+ this.info("Result successfully copied to collection!");\r
+ this.loadCollections();\r
+ }, this);\r
+ request.send(); \r
}\r
- request.addListener("completed", function(response){\r
- this.loadCollections();\r
- }, this);\r
- request.send(); \r
},\r
\r
extractTestUuid: function(){\r
var value = qx.bom.String.escape(qx.dom.Node.getText(nameParam) || "Not Found");\r
break;\r
case 1 : \r
- return "-";\r
- xPath = 'param[@name="date"]';\r
+ xPath = "slc:close-date";\r
var nameParam = org.argeo.ria.util.Element.selectSingleNode(xmlNode, xPath, NSMap);\r
- //qx.log.Logger.info(nameParam);\r
- var value = qx.bom.String.escape(qx.dom.Node.getText(nameParam) || 0);\r
+ var value = qx.bom.String.escape(qx.dom.Node.getText(nameParam) || "NOT CLOSED");\r
if(value == "NOT CLOSED") return value;\r
var splits = value.split(".");\r
- //qx.log.Logger.info(value);\r
+ value = splits[0].replace("T", " "); \r
var dateFormat = new qx.util.format.DateFormat("yyyy-MM-dd HH:mm:ss");\r
try {\r
- var date = dateFormat.parse(splits[0]);\r
+ var date = dateFormat.parse(value);\r
var dateFormat2 = new qx.util.format.DateFormat("MMM d, yy HH:mm:ss");\r
return dateFormat2.format(date);\r
- }catch(e){\r
- qx.log.Logger.info(e);\r
- }\r
+ }catch(e){}\r
break;\r
default :\r
return "";\r