check:"org.argeo.ria.components.ViewSelection"
},
instanceId : {init:""},
- instanceLabel : {init:""},
+ instanceLabel : {init:""},
+ /**
+ * A boolean registering whether the SpecEditor must autoOpen or not when a spec is added to the Batch.
+ */
autoOpen : {
init : true,
check : "Boolean"
},
statics : {
+ /**
+ * Loader for the "flow" level : takes a folder containing "moduleData" and create its children.
+ * @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 req = org.argeo.ria.remote.RequestManager.getInstance().getRequest("../argeo-ria-src/stub.xml", "GET", "application/xml");
+ 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();
executionModule.setXmlNode(response.getContent());
- //
- // ARTIFIALLY REPLACE MODULE NAME / VERSION, FOR TESTS PURPOSES
- //
- executionModule.setName(moduleData.name);
- executionModule.setVersion(moduleData.version);
- // END
var execFlows = executionModule.getExecutionFlows();
for(var key in execFlows){
var file = new qx.ui.tree.TreeFile(key);
req.send();
},
+ /**
+ * Loader for the "modules" level : takes any tree folder, currently the root folder.
+ * @param folder {qx.ui.tree.TreeFolder} The root folder
+ */
modulesLoader : function(folder){
- // Call service, and parse
- 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"]
- };
- 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],
- flowLoader,
- "Loading Flows",
- folder.getDragData()
- );
- moduleFolder.add(versionFolder);
- versionFolder.setUserData("moduleData", {name:key, version:mods[key][i]});
+ var req = org.argeo.slc.ria.SlcApi.getListModulesService();
+ 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");
+ if(!mods[name]) mods[name] = [];
+ mods[name].push(version);
}
- folder.setLoaded(true);
- }
+ 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],
+ flowLoader,
+ "Loading Flows",
+ folder.getDragData()
+ );
+ moduleFolder.add(versionFolder);
+ versionFolder.setUserData("moduleData", {name:key, version:mods[key][i]});
+ }
+ folder.setLoaded(true);
+ }
+ });
+ req.send();
}
},
this.setView(viewPane);
this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId()));
this._amqClient = org.argeo.ria.remote.JmsClient.getInstance();
+ this._amqClient.uri = "/org.argeo.slc.webapp/amq";
this._amqClient.startPolling();
},
}
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(){
splitPane.add(this.tree, 0);
splitPane.add(this.listPane, 1);
},
-
+
+ /**
+ * Adds a given ExecutionFlow to the batch
+ * @param target {mixed} The dropped target, can be a TreeFile (add) or a ListItem (reorder).
+ * @param after {qx.ui.form.ListItem} Optional list item : if set, the flow will be added as a new list item positionned after this one.
+ */
_addFlowToBatch : function(target, after){
- this.debug(target);
+ //this.debug(target);
if(!target){
target = this.tree.getSelectedItem();
if(!target) return;
if(menu.length) command.setEnabled(true);
},
- 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;
- },
-
- executeBatchOnAgent : function(agentUuid){
- var xmlString = agentUuid + this.currentBatchToXml();
- 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.
+ * Called at execution
+ * @param agentUuid {String} The id of the target agent
*/
- _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());
- }
+ executeBatchOnAgent : function(agentUuid){
+ 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(){
if(command){
command.execute();
}
- }, this, 2000);
- }
+ }, this, 2000);
+ }
}
});
\ No newline at end of file