]>
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
f79a41bf979191d1575be4d54154f4ac6e6c35ab
2 * A simple Hello World applet for documentation purpose.
3 * The only associated command is the "Close" command.
5 qx
.Class
.define("org.argeo.slc.ria.SlcExecLoggerApplet",
7 extend
: qx
.ui
.container
.Composite
,
8 implement
: [org
.argeo
.ria
.components
.IView
],
10 construct : function(){
12 this.setLayout(new qx
.ui
.layout
.Dock());
18 * The viewPane inside which this applet is added.
25 check
:"org.argeo.ria.components.ViewSelection"
27 instanceId
: {init
:""},
28 instanceLabel
: {init
:""},
30 * Commands definition, see {@link org.argeo.ria.event.CommandsManager#definitions}
35 label
: "Reload Logs",
36 icon
: "org.argeo.slc.ria/view-refresh.png",
37 shortcut
: "Control+r",
41 callback : function(e
){
48 icon
: "org.argeo.slc.ria/document-open.png",
49 shortcut
: "Control+o",
53 callback : function(e
){
54 var selection
= this.getViewSelection();
55 var rowData
= selection
.getNodes()[0];
56 this.openRealized(rowData
);
58 selectionChange : function(viewId
, selection
){
59 if(viewId
!= "logger") return;
60 this.setEnabled((selection
!=null && selection
.length
==1));
71 * Called at applet creation. Just registers viewPane.
72 * @param viewPane {org.argeo.ria.components.ViewPane} The viewPane.
74 init : function(viewPane
){
75 this.setView(viewPane
);
76 this.setViewSelection(new org
.argeo
.ria
.components
.ViewSelection(viewPane
.getViewId()));
78 this.UIBus
= org
.argeo
.ria
.event
.UIBus
.getInstance();
86 this.UIBus
.addListener("newSlcExecution", this._reloadLogger
, this);
87 this.UIBus
.addListener("updateSlcExecutionStatus", this._reloadLogger
, this);
90 addScroll : function(){
95 this.UIBus
.removeListener("newSlcExecution", this._reloadLogger
, this);
96 this.UIBus
.removeListener("updateSlcExecutionStatus", this._reloadLogger
, this);
99 openRealized : function(logData
){
102 var CHECK_HOST
= false;
104 var uuid
= logData
[2];
105 var host
= "charlie";// logData[1];
108 // 1. Check that both associated views are here
112 batchView
= org
.argeo
.ria
.components
.ViewsManager
.getInstance().getViewPaneById("batch").getContent();
113 flowsView
= org
.argeo
.ria
.components
.ViewsManager
.getInstance().getViewPaneById("selector").getContent();
115 this.debug("Cannot find either bath or flows IView!");
117 if(!batchView
|| !flowsView
) return;
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.");
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.");
133 //console.log(currentBatchId);
134 if(currentBatchId
== null){
135 var defaultId
= qx
.lang
.Object
.getKeyFromValue(agentsMap
, host
);
136 batchView
.setBatchAgentId(defaultId
);
139 // 3. Call service to load execution message
140 var req
= org
.argeo
.slc
.ria
.SlcApi
.getRealizedFlowsService(uuid
);
141 var handler = function(xmlDoc
){
142 var realizedFlows
= org
.argeo
.ria
.util
.Element
.selectNodes(xmlDoc
, "slc:slc-execution/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
);
148 req
.addListener("completed", function(response
){
149 handler(response
.getContent());
152 req
.addListener("failed", function(){
153 if(!window
.xmlExecStub
|| !window
.xmlExecStub
[uuid
]){
156 var xmlDoc
= window
.xmlExecStub
[uuid
];
163 * Creates the applet layout
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
)
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
));
185 statusBarVisible
: false,
186 showCellFocusIndicator
:false
188 var columnModel
= this.logPane
.getTableColumnModel();
189 columnModel
.getBehavior().setWidth(0, "30%");
190 columnModel
.getBehavior().setWidth(1, "15%");
191 columnModel
.getBehavior().setWidth(3, "12%");
193 this.add(this.logPane
, {edge
:'center'});
197 * Refresh the data model.
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()]