]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/NewLauncherApplet.js
Path implementation
[gpl/argeo-slc.git] / org.argeo.slc.webapp / src / main / webapp / argeo-ria-lib / slc / class / org / argeo / slc / ria / NewLauncherApplet.js
index 037e7b79a617417f27c321d35ef504f1e35e78f6..640712e9afc362c883773fa287068aaf379db325 100644 (file)
@@ -158,7 +158,28 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet",
                                callback        : function(e){
                                        var selected = this.tree.getSelectedItem();
                                        if(selected.classname == "org.argeo.ria.components.DynamicTreeFolder"){
-                                               selected.reload();
+                                               if(selected.getUserData("moduleData")){
+                                                       // It's a "module" node, first trigger the reloadBundle.service
+                                                       selected.setUserData("dataModel", {});
+                                                       selected.setEnabled(false);
+                                                       selected.setOpen(false);
+                                                       var moduleData = selected.getUserData("moduleData");
+                                                       var bundleService = org.argeo.slc.ria.SlcApi.getReloadBundleService(moduleData.name, moduleData.version);
+                                                       bundleService.addListener("completed", function(response){
+                                                               selected.setEnabled(true);
+                                                               selected.setOpen(true);
+                                                               selected.reload();
+                                                       }, this);
+                                                       //bundleService.send();
+                                                       //Do not send, not implemented yet, false timer instead.
+                                                       qx.event.Timer.once(function(response){
+                                                               selected.setEnabled(true);
+                                                               selected.setOpen(true);
+                                                               selected.reload();
+                                                       }, this, 2000);
+                                               }else{
+                                                       selected.reload();
+                                               }
                                        }
                                },  
                                selectionChange : function(viewId, selection){
@@ -191,8 +212,10 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet",
         * @param folder {qx.ui.tree.TreeFolder} A Tree folder containing in the key "moduleData" of its user data a map containing the keys {name,version} 
         */
        flowLoader : function(folder){
-               var moduleData = folder.getUserData("moduleData");
-               //var req = org.argeo.ria.remote.RequestManager.getInstance().getRequest("../argeo-ria-src/stub.xml", "GET", "application/xml");
+               var moduleData = folder.getUserData("moduleData");              
+               //var pathStub = ["", "/test/toto/zobi", "loop"];
+               //var indexStub = 0;
+               
                var req = org.argeo.slc.ria.SlcApi.getLoadExecutionDescriptorService(moduleData.name, moduleData.version);
                req.addListener("completed", function(response){
                        var executionModule = new org.argeo.slc.ria.execution.Module();                                         
@@ -200,9 +223,13 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet",
                        var execFlows = executionModule.getExecutionFlows();
                        for(var key in execFlows){
                                var file = new qx.ui.tree.TreeFile(key);
+                               var path = execFlows[key].getPath();
+                               //path = pathStub[indexStub];
+                               //indexStub ++;
                                file.setUserData("executionModule", executionModule);
                                file.setUserData("executionFlow", execFlows[key]);
-                               folder.add(file);
+                               org.argeo.slc.ria.NewLauncherApplet.attachNodeByPath(folder, path, file);
+                               folder.appendDragData(file);
                        }
                        folder.setLoaded(true);
                });
@@ -218,14 +245,6 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet",
                req.addListener("completed", function(response){
                        var descriptors = org.argeo.ria.util.Element.selectNodes(response.getContent(), "slc:object-list/slc:execution-module-descriptor");
                        var mods = {};
-                       // STUB
-                       /*
-                       var mods = {
-                               "Module 1":["ver1.1", "ver1.2", "ver1.3"], 
-                               "Module 2":["ver2.1", "ver2.2", "ver2.3", "ver2.4"], 
-                               "Module 3":["ver3.1", "ver3.2"]
-                       };
-                       */                      
                        for(var i=0;i<descriptors.length; i++){
                                var name = org.argeo.ria.util.Element.getSingleNodeText(descriptors[i], "slc:name");
                                var version = org.argeo.ria.util.Element.getSingleNodeText(descriptors[i], "slc:version");
@@ -234,22 +253,54 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet",
                        }
                        var flowLoader = org.argeo.slc.ria.NewLauncherApplet.flowLoader;
                        for(var key in mods){
-                               var moduleFolder = new qx.ui.tree.TreeFolder(key);
-                               folder.add(moduleFolder);
                                for(var i=0;i<mods[key].length;i++){
                                        var versionFolder = new org.argeo.ria.components.DynamicTreeFolder(
-                                               mods[key][i],
+                                               key + ' ('+mods[key][i]+')',
                                                flowLoader,
                                                "Loading Flows",
                                                folder.getDragData()
                                        );
-                                       moduleFolder.add(versionFolder);
+                                       folder.add(versionFolder);
                                        versionFolder.setUserData("moduleData", {name:key, version:mods[key][i]});
                                }
                                folder.setLoaded(true);
                        }
                });
                req.send();             
+       },
+       
+       /**
+        * Parse a string path and search if there is a root node.
+        * @param rootNode {qx.ui.tree.AbstractTreeItem} The parent node (containing data model)
+        * @param path {String} The path of the node to attach.
+        */
+       attachNodeByPath : function(rootNode, path, childNode){
+               if(!path || path=="" || path == "/" ){
+                       rootNode.add(childNode);
+                       return;
+               }
+               var model = rootNode.getUserData("dataModel");
+               if(!model){
+                       model = {};
+                       rootNode.setUserData("dataModel", model);
+               }
+               var parts = path.split("/");            
+               var keys = qx.lang.Object.getKeys(model);
+               var crtPath = "/";
+               var crtFolder = rootNode;
+               for(var i=0;i<parts.length;i++){
+                       if(parts[i] == "") continue;
+                       crtPath += parts[i];
+                       if(!model[parts[i]]) {
+                               var virtualFolder = new qx.ui.tree.TreeFolder(parts[i]);
+                               model[parts[i]] = virtualFolder;
+                               crtFolder.add(virtualFolder);
+                               crtFolder = virtualFolder;
+                       }else{
+                               crtFolder = model[parts[i]];
+                       }
+               }
+               crtFolder.add(childNode);
        }
   },
   
@@ -297,11 +348,7 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet",
                }
                this._amqClient.addListener("agentregister", "topic://agent.register", reloadHandler, this);
                this._amqClient.addListener("agentunregister", "topic://agent.unregister", reloadHandler, this);
-               reloadHandler();
-               
-               this._amqClient.addListener("modulesResponse", "modulesManager.response", function(message){
-                       this.info(message);
-               }, this);               
+               reloadHandler();                
        },
         
        addScroll : function(){
@@ -462,6 +509,9 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet",
                var label = batchEntry.getLabel();
                var icon = target.getIcon();
                var item = new qx.ui.form.ListItem(label, icon);
+               item.addListener("dblclick", function(e){
+                       this.getCommands()["editexecutionspecs"].command.execute();
+               }, this);
                item.setUserData("batchEntrySpec", batchEntry);
                item.setPaddingTop(1);
                item.setPaddingBottom(2);
@@ -499,84 +549,23 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet",
                if(menu.length) command.setEnabled(true);
        },
                
-       /**
-        * Create XMLString to send for execution 
-        * @return {String}
-        */
-       currentBatchToXml : function(){
-               var selection = this.list.getChildren();
-               var xmlString = "";
-               for(var i=0;i<selection.length;i++){
-                       var batchEntrySpec = selection[i].getUserData("batchEntrySpec");
-                       xmlString += batchEntrySpec.toXml();
-               }
-               return xmlString;
-       },
        
        /**
         * Called at execution
         * @param agentUuid {String} The id of the target agent
         */
        executeBatchOnAgent : function(agentUuid){
-               //var xmlString = agentUuid + this.currentBatchToXml();
-               var xmlString = "<slc:executionSpecs>"+this.currentBatchToXml()+"</slc:executionSpecs>";
-               alert(xmlString);
-       },
-       
-       /**
-        * Make an SlcExecutionMessage from the currently displayed form.
-        * @param crtPartId {String} The form part currently displayed
-        * @param slcExec {org.argeo.slc.ria.SlcExecutionMessage} The message to fill.
-        * @param fields {Map} The fields of the form
-        * @param hiddenFields {Map} The hidden ones 
-        * @param freeFields {Array} The free fields.
-        */
-       _prepareSlcExecutionMessage : function(crtPartId, slcExec, fields, hiddenFields, freeFields){
-               if(crtPartId == "standard"){
-                       slcExec.setStatus(fields.status.getValue());            
-                       slcExec.setHost(fields.host.getValue());
-                       slcExec.setUser(fields.user.getValue());
-               }else{
-                       slcExec.addAttribute("ant.file", fields["ant.file"].getValue());
-               }
-               for(var i=0;i<freeFields.length;i++){
-                       var fF = freeFields[i];
-                       if(fF.labelEl.getValue() != "" && fF.valueEl.getValue() != ""){
-                               slcExec.addAttribute(fF.labelEl.getValue(), fF.valueEl.getValue());
-                       }
+               var selection = this.list.getChildren();
+               if(!selection.length) return;
+               var slcExecMessage = new org.argeo.slc.ria.execution.Message();
+               for(var i=0;i<selection.length;i++){
+                       var batchEntrySpec = selection[i].getUserData("batchEntrySpec");
+                       slcExecMessage.addBatchEntrySpec(batchEntrySpec);
                }               
-       },
-       
-       /**
-        * Called when the user clicks the "Execute" button.
-        */
-       submitForm : function(){
-               var currentUuid = this.agentSelector.getValue();
-               if(!currentUuid) return;
-               var slcExec = new org.argeo.slc.ria.SlcExecutionMessage();
-               
-               var fields = {};
-               var hiddenFields = {};
-               var freeFields = {};
-               var crtPartId = "";
-               if(this.parts){
-                       if(this.partChooser){
-                               crtPartId = this.partChooser.getValue();
-                       }else{
-                               crtPartId = qx.lang.Object.getKeys(this.parts)[0];
-                       }
-                       var crtPart = this.parts[crtPartId];
-                       fields = crtPart.fields;
-                       hiddenFields = crtPart.hiddenFields;
-                       freeFields = crtPart.freeFields;
-               }
-               
-               this._prepareSlcExecutionMessage(crtPartId, slcExec, fields, hiddenFields, freeFields);
-                               
                this._amqClient.sendMessage(
                        "topic://agent.newExecution", 
-                       slcExec.toXml(), 
-                       {"slc-agentId":currentUuid}
+                       slcExecMessage.toXml(), 
+                       {"slc-agentId":agentUuid}
                );
                // Force logs refresh right now!
                qx.event.Timer.once(function(){
@@ -584,8 +573,8 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet",
                        if(command){
                                command.execute();
                        }
-               }, this, 2000);
-       }
+               }, this, 2000);         
+       }       
                
   }
 });
\ No newline at end of file