]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/slc/web/TestList.js
forgotten instruction
[gpl/argeo-slc.git] / org.argeo.slc.webapp / src / main / webapp / source / class / org / argeo / slc / web / TestList.js
index 29505adec5d6b323f1ba1b70204d5c33f2e6eb6c..71d61322e02e0a775219076b25d134df5a73030c 100644 (file)
@@ -37,20 +37,45 @@ qx.Class.define("org.argeo.slc.web.TestList",
                                icon            : "resource/slc/view-refresh.png",\r
                                shortcut        : "Control+l",\r
                                enabled         : true,\r
-                               menu            : "File",\r
-                               toolbar         : "test",\r
+                               menu            : "Collection",\r
+                               toolbar         : "collection",\r
                                callback        : function(e){\r
                                        this.loadList();\r
                                }, \r
                                command         : null\r
                        },\r
+                       "copyfullcollection" : {\r
+                               label           : "Copy to...", \r
+                               icon            : "resource/slc/edit-copy.png",\r
+                               shortcut        : null,\r
+                               enabled         : false,\r
+                               menu            : "Collection",\r
+                               toolbar         : "collection",\r
+                               callback        : function(e){\r
+                                       // Call service to copy\r
+                               },\r
+                               submenu         : {},\r
+                               submenuCallback : function(commandId){\r
+                                       this.copySelectionToCollection(commandId, "current_collection");\r
+                               },\r
+                               init : function(){\r
+                                       // Call at command creation\r
+                                       org.argeo.ria.remote.RequestManager.getInstance().addListener("reload", function(event){\r
+                                               if(event.getDataType() == "collection" || event.getDataType() == "test_cases"){\r
+                                                       var testList = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("list").getContent();\r
+                                                       testList.collectionListToMenu(this);\r
+                                               }\r
+                                       }, this);\r
+                               },\r
+                               command         : null\r
+                       },\r
                        "opentest" : {\r
                                label           : "Open", \r
-                               icon            : "resource/slc/document-open.png",\r
+                               icon            : "resource/slc/media-playback-start.png",\r
                                shortcut        : "Control+o",\r
                                enabled         : false,\r
                                menu            : "Selection",\r
-                               toolbar         : "test",\r
+                               toolbar         : "selection",\r
                                callback        : function(e){\r
                                        var viewsManager = org.argeo.ria.components.ViewsManager.getInstance();\r
                                        var classObj = org.argeo.slc.web.Applet;\r
@@ -62,10 +87,7 @@ qx.Class.define("org.argeo.slc.web.TestList",
                                        if(viewId != "list") return;\r
                                        this.setEnabled(false);\r
                                        if(xmlNodes == null || !xmlNodes.length) return;\r
-                                       var applet = org.argeo.ria.util.Element.selectSingleNode(xmlNodes[0],'report[@type="applet"]'); \r
-                                       if(applet != null && qx.dom.Node.getText(applet) != ""){\r
-                                               this.setEnabled(true);                                                  \r
-                                       }                                       \r
+                                       this.setEnabled(true);\r
                                },\r
                                command         : null\r
                        },\r
@@ -75,15 +97,12 @@ qx.Class.define("org.argeo.slc.web.TestList",
                                shortcut        : null,\r
                                enabled         : false,\r
                                menu            : "Selection",\r
-                               toolbar         : "test",\r
+                               toolbar         : "selection",\r
                                callback        : function(e){ },\r
                                command         : null,\r
                                submenu         : {},\r
                                submenuCallback : function(commandId){\r
-                                       var viewsManager = org.argeo.ria.components.ViewsManager.getInstance();\r
-                                       var xmlNodes = viewsManager.getViewPaneSelection("list").getNodes();\r
-                                       // Single selection\r
-                                       var uuid = qx.xml.Element.getSingleNodeText(xmlNodes[0], 'param[@name="uuid"]');\r
+                                       var uuid = this.extractTestUuid();\r
                                        var urls = {\r
                                                xsl : "resultView.xslt",\r
                                                xml : "resultViewXml.xslt",\r
@@ -97,12 +116,21 @@ qx.Class.define("org.argeo.slc.web.TestList",
                                                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.clearMenus();\r
                                        this.setEnabled(false);\r
-                                       if(xmlNodes == null) return;\r
-                                       \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
@@ -117,6 +145,7 @@ qx.Class.define("org.argeo.slc.web.TestList",
                                        }\r
                                        this.setMenu(submenus);\r
                                        this.setEnabled(true);\r
+                                       */\r
                                }\r
                        },\r
                        "deletetest" : {\r
@@ -125,9 +154,22 @@ qx.Class.define("org.argeo.slc.web.TestList",
                                shortcut        : "Control+d",\r
                                enabled         : false,\r
                                menu            : "Selection",\r
-                               toolbar         : "test",\r
+                               toolbar         : "selection",\r
                                callback        : function(e){\r
-                                       // Call service to delete\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
@@ -143,30 +185,21 @@ qx.Class.define("org.argeo.slc.web.TestList",
                                shortcut        : "Control+c",\r
                                enabled         : false,\r
                                menu            : "Selection",\r
-                               toolbar         : "test",\r
+                               toolbar         : "selection",\r
                                callback        : function(e){\r
                                        // Call service to copy\r
                                },\r
                                submenu         : {},\r
+                               submenuCallback : function(commandId){\r
+                                       this.copySelectionToCollection(commandId, "current_selection");                                 \r
+                               },\r
                                init : function(){\r
                                        // Call at command creation\r
                                        org.argeo.ria.remote.RequestManager.getInstance().addListener("reload", function(event){\r
-                                               if(event.getDataType() != "collection") return;\r
-                                               this.setEnabled(false);\r
-                                               this.clearMenus();      \r
-                                               var collectionList = event.getContent();\r
-                                               if(!collectionList) return;\r
-                                               var submenus = [];\r
-                                               for(var key in collectionList){\r
-                                                       submenus.push({\r
-                                                               "label":collectionList[key], \r
-                                                               "icon":null, \r
-                                                               "commandId":key\r
-                                                       });\r
+                                               if(event.getDataType() == "collection" || event.getDataType() == "test_cases"){\r
+                                                       var testList = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("list").getContent();\r
+                                                       testList.collectionListToMenu(this, true);\r
                                                }\r
-                                               this.setMenu(submenus);\r
-                                               var viewSelection = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneSelection("list");\r
-                                               if(viewSelection.getCount()) this.setEnabled(true);\r
                                        }, this);\r
                                },\r
                                selectionChange : function(viewId, xmlNodes){\r
@@ -220,34 +253,52 @@ qx.Class.define("org.argeo.slc.web.TestList",
          this.getView().setViewTitle("");\r
          this.add(this.table, {flex:1});\r
 \r
-         select.addListener("changeValue", function(dataEvent){\r
-               this.debug(dataEvent.getData());\r
-               this.setCollectionId(dataEvent.getData());\r
-               this.loadList();\r
-         }, this);\r
+         select.addListener("changeValue", this.collectionSelectorListener, this);\r
 \r
          org.argeo.ria.remote.RequestManager.getInstance().addListener("reload", function(event){\r
                 if(event.getDataType()!="collection") return;\r
+                select.removeListener("changeValue", this.collectionSelectorListener, this);\r
                 var collectionList = event.getContent();\r
                 select.removeAll();\r
                 for(key in collectionList){\r
-                       var item = new qx.ui.form.ListItem(collectionList[key], null, key);\r
+                       var item = new qx.ui.form.ListItem(collectionList[key], "resource/slc/folder.png", key);\r
                        select.add(item);\r
                        if(key == this.getCollectionId()){\r
                                select.setSelected(item);\r
                        }\r
                 }\r
+                this.setCollectionId(select.getSelected().getValue());\r
+                select.addListener("changeValue", this.collectionSelectorListener, this);\r
          }, this);\r
                  \r
        },\r
        \r
        loadCollections : function(){\r
-               this.setCollectionList({"Charles":"Collection 'Charles'","My Collection":"Collection 'My Collection'"});\r
-               org.argeo.ria.remote.RequestManager.getInstance().fireReloadEvent("collection", this.getCollectionList());\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 NSMap = {slc:"http://argeo.org/projects/slc/schemas"};\r
+               request.addListener("completed", function(response){\r
+                       var xml = response.getContent();\r
+                       var collections = {};\r
+                       var nodes = org.argeo.ria.util.Element.selectNodes(xml, "//slc:ref", NSMap);\r
+                       for(var i=0;i<nodes.length;i++){\r
+                               var collId = qx.xml.Element.getSingleNodeText(nodes[i], ".");\r
+                               collections[collId] = collId;\r
+                       }\r
+                       this.setCollectionList(collections);\r
+                       org.argeo.ria.remote.RequestManager.getInstance().fireReloadEvent("collection", this.getCollectionList());\r
+               }, this);\r
+               request.setAsynchronous(false);\r
+               request.send();\r
        },\r
        \r
        loadList : function(){\r
-               var url = "/org.argeo.slc.webapp/resultList.ui";\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
@@ -255,16 +306,16 @@ qx.Class.define("org.argeo.slc.web.TestList",
                var request = serviceManager.getRequest(\r
                        url, \r
                        "GET", \r
-                       "application/xml",\r
-                       "test_cases",\r
+                       "application/xml",      \r
+                       null,\r
                        [commandManager.getCommandById("loadtestlist"), this.getView()]\r
                );       \r
-               request.setParameter("collectionId", this.getCollectionId());\r
+               request.setParameter("id", this.getCollectionId());\r
+               var NSMap = {slc:"http://argeo.org/projects/slc/schemas"};\r
                request.addListener("completed", function(response){\r
-                       xml = response.getContent();\r
-                       qx.log.Logger.info("Successfully loaded XML");\r
-                       //var resManager = org.argeo.ria.event.ResourcesManager.getInstance().fireReloadEvent("test_cases", xml);\r
-                       var nodes = qx.xml.Element.selectNodes(xml, "//data");\r
+                       var xml = response.getContent();\r
+                       this.info("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
                                model.addRows([rowData]);\r
@@ -272,7 +323,81 @@ qx.Class.define("org.argeo.slc.web.TestList",
                }, request);\r
                request.send();         \r
        },\r
-               \r
+       \r
+       collectionListToMenu : function(command, checkSelection){\r
+               command.setEnabled(false);\r
+               command.clearMenus();\r
+               var collectionList = this.getCollectionList();\r
+               if(!collectionList) return;\r
+               var submenus = [];\r
+               for(var key in collectionList){\r
+                       if(this.getCollectionId() && key == this.getCollectionId()) continue;\r
+                       submenus.push({\r
+                               "label":collectionList[key], \r
+                               "icon":"resource/slc/folder.png", \r
+                               "commandId":key\r
+                       });\r
+               }               \r
+               submenus.push({"label":"New...", "icon":"resource/slc/folder-new.png", "commandId":"slc.client.create"});\r
+               command.setMenu(submenus);\r
+               if(checkSelection){\r
+                       var viewSelection = this.getView().getViewSelection();\r
+                       if(viewSelection.getCount()) command.setEnabled(true);\r
+               }else{\r
+                       command.setEnabled(true);\r
+               }\r
+       },\r
+       \r
+       copySelectionToCollection:function(collectionId, selectionType){\r
+               if(collectionId == "slc.client.create"){\r
+                       var modal = new org.argeo.ria.components.Modal("Create collection", "resource/slc/folder-new.png");\r
+                       modal.makePromptForm("Enter the new collection name", function(value){\r
+                               if(value == ""){\r
+                                       alert("Please enter a name for the new collection!");\r
+                                       return false;\r
+                               }\r
+                               else {\r
+                                       // Create the collection now, then recall the callback with the new name.                                                               \r
+                                       this.copySelectionToCollection(value, selectionType);\r
+                                       return true;\r
+                               }\r
+                       }, this);\r
+                       modal.attachAndShow();\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
+               }\r
+               request.addListener("completed", function(response){\r
+                       this.loadCollections();\r
+               }, this);\r
+               request.send();         \r
+       },\r
+       \r
+       extractTestUuid: function(){\r
+               var NSMap = {slc:"http://argeo.org/projects/slc/schemas"};\r
+               var xmlNodes = this.getView().getViewSelection().getNodes();\r
+               var uuid = qx.dom.Node.getText(org.argeo.ria.util.Element.selectSingleNode(xmlNodes[0], "slc:uuid"));\r
+               return uuid;\r
+       },\r
+       \r
+       collectionSelectorListener : function(event){\r
+               this.setCollectionId(event.getData());\r
+               this.loadList();                \r
+       },\r
+       \r
        addScroll : function(){\r
                return false;\r
        }       \r