]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/slc/web/TestList.js
Refactor API
[gpl/argeo-slc.git] / org.argeo.slc.webapp / src / main / webapp / source / class / org / argeo / slc / web / TestList.js
index 231aad6f90b34cebd30fcd11ae068dc682ccc0b3..8aaf5e14e215ff95de23e3c64e58445c0bd3af3d 100644 (file)
@@ -44,6 +44,20 @@ qx.Class.define("org.argeo.slc.web.TestList",
                                }, \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
@@ -69,6 +83,7 @@ qx.Class.define("org.argeo.slc.web.TestList",
                                },\r
                                command         : null\r
                        },\r
+                       */\r
                        "opentest" : {\r
                                label           : "Open", \r
                                icon            : "resource/slc/media-playback-start.png",\r
@@ -78,7 +93,7 @@ qx.Class.define("org.argeo.slc.web.TestList",
                                toolbar         : "selection",\r
                                callback        : function(e){\r
                                        var viewsManager = org.argeo.ria.components.ViewsManager.getInstance();\r
-                                       var classObj = org.argeo.slc.web.Applet;\r
+                                       var classObj = org.argeo.slc.ria.Applet;\r
                                        var iView = viewsManager.initIViewClass(classObj, "applet");\r
                                        var xmlNodes = viewsManager.getViewPaneSelection("list").getNodes();\r
                                        iView.load(xmlNodes[0]);\r
@@ -87,10 +102,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
@@ -103,12 +115,14 @@ qx.Class.define("org.argeo.slc.web.TestList",
                                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 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
@@ -124,44 +138,12 @@ qx.Class.define("org.argeo.slc.web.TestList",
                                },\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
-                                       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
+                                       if(xmlNodes == null || !xmlNodes.length) return;\r
                                        this.setEnabled(true);\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
-                                       // Call service to delete\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
@@ -192,7 +174,32 @@ qx.Class.define("org.argeo.slc.web.TestList",
                                        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.ria.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
@@ -206,7 +213,7 @@ qx.Class.define("org.argeo.slc.web.TestList",
                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
@@ -215,8 +222,9 @@ qx.Class.define("org.argeo.slc.web.TestList",
          }, this);\r
          var columnModel = this.table.getTableColumnModel(); \r
          columnModel.getBehavior().setWidth(0, "60%");\r
-         columnModel.setDataCellRenderer(0, new org.argeo.slc.web.XmlRenderer());\r
-         columnModel.setDataCellRenderer(1, new org.argeo.slc.web.XmlRenderer());\r
+         var renderer = new org.argeo.slc.web.XmlRenderer();\r
+         columnModel.setDataCellRenderer(0, renderer);\r
+         columnModel.setDataCellRenderer(1, renderer);\r
          \r
          this.table.getSelectionManager().getSelectionModel().addListener("changeSelection", function(e){\r
                var viewSelection = viewPane.getViewSelection();\r
@@ -236,14 +244,11 @@ 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
@@ -253,41 +258,62 @@ qx.Class.define("org.argeo.slc.web.TestList",
                                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 request = org.argeo.slc.ria.SlcApi.getListCollectionsService();\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 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
-                       "test_cases",\r
-                       [commandManager.getCommandById("loadtestlist"), this.getView()]\r
-               );       \r
-               request.setParameter("collectionId", this.getCollectionId());\r
+               var request = org.argeo.slc.ria.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
-                       xml = response.getContent();\r
-                       qx.log.Logger.info("Successfully loaded XML");\r
-                       var nodes = qx.xml.Element.selectNodes(xml, "//data");\r
-                       for(var i=0; i<nodes.length;i++){\r
-                               var rowData = nodes[i];\r
-                               model.addRows([rowData]);\r
-                       }\r
+                       var xml = response.getContent();\r
+                       this.debug("Successfully loaded XML");\r
+                       var nodes = org.argeo.ria.util.Element.selectNodes(xml, "//slc:result-attributes", NSMap);\r
+                       //model.addRows(nodes);\r
+                       \r
+                       for(var i=0; i<nodes.length;i++){                               \r
+                               model.addRows([nodes[i]]);\r
+                       }                       \r
                }, request);\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
@@ -302,6 +328,7 @@ qx.Class.define("org.argeo.slc.web.TestList",
                                "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
@@ -327,9 +354,32 @@ qx.Class.define("org.argeo.slc.web.TestList",
                                }\r
                        }, this);\r
                        modal.attachAndShow();\r
-               }else{                  \r
-                       this.debug("Copying "+selectionType+" to collection " + collectionId);\r
+                       return;\r
                }\r
+\r
+               if(selectionType == "current_collection"){\r
+                       this.error("Not implemented yet!");                     \r
+               }else if(selectionType == "current_selection"){\r
+                       // get selection ID\r
+                       var request = org.argeo.slc.ria.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
+       },\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