]> git.argeo.org Git - gpl/argeo-slc.git/blob - server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/SlcExecLoggerApplet.js
Added LIST_RESULTS_LONG service
[gpl/argeo-slc.git] / server / org.argeo.slc.ria / src / argeo-ria-lib / slc / class / org / argeo / slc / ria / SlcExecLoggerApplet.js
1 /**
2 * A simple Hello World applet for documentation purpose.
3 * The only associated command is the "Close" command.
4 */
5 qx.Class.define("org.argeo.slc.ria.SlcExecLoggerApplet",
6 {
7 extend : qx.ui.container.Composite,
8 implement : [org.argeo.ria.components.IView],
9
10 construct : function(){
11 this.base(arguments);
12 this.setLayout(new qx.ui.layout.Dock());
13 },
14
15 properties :
16 {
17 /**
18 * The viewPane inside which this applet is added.
19 */
20 view : {
21 init : null
22 },
23 viewSelection : {
24 nullable:false,
25 check:"org.argeo.ria.components.ViewSelection"
26 },
27 instanceId : {init:""},
28 instanceLabel : {init:""},
29 /**
30 * Commands definition, see {@link org.argeo.ria.event.CommandsManager#definitions}
31 */
32 commands : {
33 init : {
34 "reloadlogs" : {
35 label : "Reload Logs",
36 icon : "org.argeo.slc.ria/view-refresh.png",
37 shortcut : "Control+r",
38 enabled : true,
39 menu : null,
40 toolbar : null,
41 callback : function(e){
42 this._reloadLogger();
43 },
44 command : null
45 },
46 "openrealized" : {
47 label : "Re-open",
48 icon : "org.argeo.slc.ria/document-open.png",
49 shortcut : "Control+o",
50 enabled : false,
51 menu : null,
52 toolbar : "realized",
53 callback : function(e){
54 var selection = this.getViewSelection();
55 var rowData = selection.getNodes()[0];
56 this.openRealized(rowData);
57 },
58 selectionChange : function(viewId, selection){
59 if(viewId != "logger") return;
60 this.setEnabled((selection!=null && selection.length==1));
61 },
62 command : null
63 }
64 }
65 }
66 },
67
68 members :
69 {
70 /**
71 * Called at applet creation. Just registers viewPane.
72 * @param viewPane {org.argeo.ria.components.ViewPane} The viewPane.
73 */
74 init : function(viewPane){
75 this.setView(viewPane);
76 this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId()));
77 this._createLayout();
78 this.UIBus = org.argeo.ria.event.UIBus.getInstance();
79 },
80
81 /**
82 *
83 */
84 load : function(){
85 this._reloadLogger();
86 this.UIBus.addListener("newSlcExecution", this._reloadLogger, this);
87 this.UIBus.addListener("updateSlcExecutionStatus", this._reloadLogger, this);
88 },
89
90 addScroll : function(){
91 return false;
92 },
93
94 close : function(){
95 this.UIBus.removeListener("newSlcExecution", this._reloadLogger, this);
96 this.UIBus.removeListener("updateSlcExecutionStatus", this._reloadLogger, this);
97 },
98
99 openRealized : function(logData){
100
101 // DEBUG PURPOSE
102 var CHECK_HOST = false;
103
104 var uuid = logData[2];
105 var host = logData[1];
106
107
108 // 1. Check that both associated views are here
109 var batchView;
110 var flowsView;
111 try{
112 batchView = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("batch").getContent();
113 flowsView = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("selector").getContent();
114 }catch(e){
115 this.debug("Cannot find either bath or flows IView!");
116 }
117 if(!batchView || !flowsView) return;
118
119 // 2. Check that at least a host with the same name exists.
120 var agentsMap = flowsView.getAgentsMap();
121 var currentBatchId = batchView.getBatchAgentId();
122 if(currentBatchId != null){
123 var currentHost = agentsMap[currentBatchId];
124 if(currentHost != host){
125 this.error("Cannot re-open these flows on a different host. Please clear the batch first.");
126 return;
127 }
128 }
129 if(!qx.lang.Object.contains(agentsMap, host)){
130 this.error("Cannot find any agent running on '"+host+"'! Please start an agent on this host.");
131 return;
132 }
133 //console.log(currentBatchId);
134 if(currentBatchId == null){
135 var defaultId = qx.lang.Object.getKeyFromValue(agentsMap, host);
136 batchView.setBatchAgentId(defaultId);
137 }
138
139 // 3. Call service to load execution message
140 var req = org.argeo.slc.ria.SlcApi.getSlcExecutionService(uuid);
141 var handler = function(xmlDoc){
142 var realizedFlows = org.argeo.ria.util.Element.selectNodes(xmlDoc, "slc:slc-execution/slc:realized-flows/slc:realized-flow");
143 for(var i=0;i<realizedFlows.length;i++){
144 var newEntrySpec = new org.argeo.slc.ria.execution.BatchEntrySpec(null, null, realizedFlows[i]);
145 batchView.appendBatchEntrySpec(newEntrySpec);
146 }
147 };
148 req.addListener("completed", function(response){
149 handler(response.getContent());
150 });
151 // STUB CASE
152 req.addListener("failed", function(){
153 if(!window.xmlExecStub || !window.xmlExecStub[uuid]){
154 return;
155 }
156 var xmlDoc = window.xmlExecStub[uuid];
157 handler(xmlDoc);
158 });
159 req.send();
160 },
161
162 /**
163 * Creates the applet layout
164 */
165 _createLayout : function(){
166 this.logModel = new qx.ui.table.model.Simple();
167 this.logModel.setColumns(["Date", "Host", "Id", "Status"]);
168 this.logPane = new qx.ui.table.Table(this.logModel, {
169 tableColumnModel: function(obj){
170 return new qx.ui.table.columnmodel.Resize(obj)
171 }
172 });
173 var selectionModel = this.logPane.getSelectionModel();
174 selectionModel.addListener("changeSelection", function(e){
175 var viewSelection = this.getViewSelection();
176 viewSelection.setViewId("logger");
177 viewSelection.clear();
178 selectionModel.iterateSelection(function(index){
179 viewSelection.addNode(this.logModel.getRowData(index));
180 }, this);
181 }, this);
182
183 this.logPane.set({
184 decorator : null,
185 statusBarVisible: false,
186 showCellFocusIndicator:false
187 });
188 var columnModel = this.logPane.getTableColumnModel();
189 columnModel.getBehavior().setWidth(0, "30%");
190 columnModel.getBehavior().setWidth(1, "15%");
191 columnModel.getBehavior().setWidth(3, "12%");
192
193 this.add(this.logPane, {edge:'center'});
194 },
195
196 /**
197 * Refresh the data model.
198 */
199 _reloadLogger : function(){
200 var request = org.argeo.slc.ria.SlcApi.getListSlcExecutionsService();
201 request.addListener("completed", function(response){
202 var messages = org.argeo.ria.util.Element.selectNodes(response.getContent(), "//slc:slc-execution");
203 this.logModel.setData([]);
204 for(var i=0;i<messages.length;i++){
205 var message = messages[i];
206 var slcExec = new org.argeo.slc.ria.SlcExecutionMessage(message.getAttribute("uuid"));
207 slcExec.fromXml(message);
208 this.logModel.addRows([
209 [slcExec.getDate(), slcExec.getHost(), slcExec.getUuid(), slcExec.getStatus()]
210 ]);
211 }
212 }, this);
213 request.send();
214 }
215
216 }
217 });