]>
git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/slc/web/Applet.js
4 qx
.Class
.define("org.argeo.slc.web.Applet",
6 extend
: qx
.ui
.container
.Composite
,
7 implement
: [org
.argeo
.ria
.components
.IView
],
9 construct : function(){
11 this.setLayout(new qx
.ui
.layout
.VBox());
12 this.passedStatus
= "PASSED";
13 this.failedStatus
= "FAILED";
24 label
: "Close Result",
25 icon
: "resource/slc/window-close.png",
26 shortcut
: "Control+w",
30 callback : function(e
){
31 // Call service to delete
32 this.getView().empty();
34 selectionChange : function(viewId
, xmlNode
){
35 if(viewId
!= "applet") return;
44 *****************************************************************************
46 *****************************************************************************
51 init : function(viewPane
){
52 this.setView(viewPane
);
55 load : function(xmlNode
){
58 // Load XML or Whatever
60 var NSMap
= {slc
:"http://argeo.org/projects/slc/schemas"};
61 var testId
= qx
.dom
.Node
.getText(org
.argeo
.ria
.util
.Element
.selectSingleNode(this.data
, "slc:uuid"));
62 this.getView().setViewTitle("Test "+testId
);
63 var request
= org
.argeo
.slc
.web
.SlcApi
.getLoadResultService(testId
);
64 request
.addListener("completed", function(response
){
65 this.createXmlGui(response
.getContent());
66 this.getView().setOnLoad(false);
68 this.getView().setOnLoad(true);
73 addScroll : function(){
77 createXmlGui : function(responseXml
){
79 "slc" : "http://argeo.org/projects/slc/schemas"
81 if(!qx
.Class
.hasMixin(qx
.ui
.treevirtual
.TreeVirtual
, qx
.ui
.treevirtual
.MNode
)){
82 qx
.Class
.include(qx
.ui
.treevirtual
.TreeVirtual
,qx
.ui
.treevirtual
.MNode
);
84 this.tree
= new qx
.ui
.treevirtual
.TreeVirtual(["Test", "State", "Message", "Id"]);
85 this.tree
.getTableColumnModel().setDataCellRenderer(0, new org
.argeo
.ria
.util
.TreeDataCellRenderer());
86 this.tree
.getDataRowRenderer().setHighlightFocusRow(false); // Default row renderer
87 this.tree
.setRowHeight(18);
88 this.tree
.setStatusBarVisible(false);
89 this.tree
.setDecorator(new qx
.ui
.decoration
.Background("#fff"));
90 var model
= this.tree
.getDataModel();
91 var resNodes
= org
.argeo
.ria
.util
.Element
.selectNodes(responseXml
, "//slc:result-part", NSMap
);
94 for(var i
=0;i
<resNodes
.length
;i
++){
95 var currentParentId
= null;
96 var node
= resNodes
[i
];
97 var pathAttr
= qx
.xml
.Element
.getSingleNodeText(node
, "@path");
98 var pathParts
= pathAttr
.split("/");
99 if(pathParts
[0] == ""){
103 for(var j
=0;j
<pathParts
.length
;j
++){
104 //if(pathParts[j] == "") continue;
105 crtPath
= crtPath
.concat("/", pathParts
[j
]);
106 if(addedPaths
[crtPath
]) {
107 currentParentId
= addedPaths
[crtPath
];
108 continue; // Node already exists, set as parent and go to next!
110 var element
= org
.argeo
.ria
.util
.Element
.selectSingleNode(responseXml
, '//slc:element[@path="'+crtPath
+'"]', NSMap
);
113 label
= org
.argeo
.ria
.util
.Element
.getSingleNodeText(element
, "*/slc:label", NSMap
);
117 var simpleResults
= org
.argeo
.ria
.util
.Element
.selectNodes(node
, "slc:part-sub-list/slc:parts/slc:simple-result-part", NSMap
);
120 //newId = model.addBranch(currentParentId, label, false);
123 if(!simpleResults
|| !simpleResults
.length
){
124 newId
= model
.addBranch(currentParentId
, label
, false);
125 addedPaths
[crtPath
] = newId
;
126 currentParentId
= newId
;
129 if(simpleResults
.length
== 1){
130 //newId = model.addBranch(currentParentId, label, false);
131 var sResNode
= simpleResults
[0];
132 newId
= model
.addBranch(currentParentId
, label
);
133 model
.setColumnData(newId
, 3, org
.argeo
.ria
.util
.Element
.getSingleNodeText(sResNode
, "slc:test-run-uuid", NSMap
));
134 model
.setColumnData(newId
, 2, org
.argeo
.ria
.util
.Element
.getSingleNodeText(sResNode
, "slc:message", NSMap
));
135 var status
= org
.argeo
.ria
.util
.Element
.getSingleNodeText(sResNode
, "slc:status", NSMap
);
136 if(status
!= "PASSED"){
137 status
= this.failedStatus
;
138 this._setParentBranchAsFailed(newId
);
140 status
= this.passedStatus
;
142 model
.setColumnData(newId
, 1, status
);
143 addedPaths
[crtPath
] = newId
;
144 currentParentId
= newId
;
147 newId
= model
.addBranch(currentParentId
, label
, false);
148 for(var k
=0;k
<simpleResults
.length
;k
++){
149 var sResNode
= simpleResults
[k
];
150 resId
= model
.addLeaf(currentParentId
, label
);
151 model
.setColumnData(resId
, 3, org
.argeo
.ria
.util
.Element
.getSingleNodeText(sResNode
, "slc:test-run-uuid", NSMap
));
152 model
.setColumnData(resId
, 2, org
.argeo
.ria
.util
.Element
.getSingleNodeText(sResNode
, "slc:message", NSMap
));
153 var status
= org
.argeo
.ria
.util
.Element
.getSingleNodeText(sResNode
, "slc:status", NSMap
);
154 if(status
!= "PASSED"){
155 status
= this.failedStatus
;
156 this._setParentBranchAsFailed(resId
);
158 status
= this.passedStatus
;
160 model
.setColumnData(resId
, 1, status
);
163 addedPaths
[crtPath
] = newId
;
164 currentParentId
= newId
;
167 this._refineLeaves(this.tree
, 0);
168 this.add(this.tree
, {flex
:1});
170 var columnModel
= this.tree
.getTableColumnModel();
171 var resize
= columnModel
.getBehavior();
172 resize
.set(0, {width
:250, minWidth
:250});
173 resize
.set(1, {width
:55});
174 resize
.set(2, {width
:"1*"});
175 resize
.set(3, {width
:150});
176 columnModel
.setDataCellRenderer(1, new org
.argeo
.slc
.web
.StatusCellRenderer());
178 this.tree
.getSelectionManager().getSelectionModel().addListener("changeSelection", function(e
){
179 var viewSelection
= this.getView().getViewSelection();
180 viewSelection
.clear();
181 var nodes
= this.tree
.getDataModel().getSelectedNodes();
183 viewSelection
.addNode(nodes
[0]);
184 this.getView().setViewSelection(viewSelection
);
188 var contextMenu
= org
.argeo
.ria
.event
.CommandsManager
.getInstance().createMenuFromIds(["close"]);
189 this.tree
.setContextMenu(contextMenu
);
193 _setParentBranchAsFailed : function(id
){
194 var model
= this.tree
.getDataModel();
195 while(id
!= null && id
!=0){
196 var node
= this.tree
.nodeGet(id
);
197 id
= node
.parentNodeId
;
198 if(id
!= null && id
!=0){
199 model
.setColumnData(id
, 1, this.failedStatus
);
200 this.tree
.nodeSetOpened(id
, true);
205 _refineLeaves : function(tree
, nodeId
){
206 var node
= tree
.nodeGet(nodeId
);
207 if(node
.children
&& node
.children
.length
){
208 for(var i
=0;i
<node
.children
.length
;i
++){
209 this._refineLeaves(tree
, node
.children
[i
]);
212 node
.type
= qx
.ui
.treevirtual
.SimpleTreeDataModel
.Type
.LEAF
;
216 createHtmlGui : function(responseText
){
217 var htmlElement
= new qx
.ui
.embed
.Html(responseText
);
218 htmlElement
.setOverflowX("auto");
219 htmlElement
.setOverflowY("auto");
220 this.add(htmlElement
, {flex
:1});