]>
git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/slc/web/Applet.js
1ff9c71e3744c95cc272ff1529385671fd6b6e9f
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 = "<div align=\"center\"><img src=\"resource/slc/dialog-ok.png\" height=\"16\" width=\"16\"></div>";
13 //this.failedStatus = "<div align=\"center\"><img src=\"resource/slc/flag.png\" height=\"16\" width=\"16\"></div>";
14 this.passedStatus
= "PASSED";
15 this.failedStatus
= "FAILED";
26 label
: "Close Result",
27 icon
: "resource/slc/window-close.png",
28 shortcut
: "Control+w",
32 callback : function(e
){
33 // Call service to delete
34 //org.argeo.slc.web.components.ViewsManager.getInstance().getViewPaneById("applet").empty();
35 this.getView().empty();
37 selectionChange : function(viewId
, xmlNode
){
38 if(viewId
!= "applet") return;
41 this.setEnabled(true);
43 this.setEnabled(false);
54 *****************************************************************************
56 *****************************************************************************
61 init : function(viewPane
){
62 this.setView(viewPane
);
65 load : function(xmlNode
){
68 // Load XML or Whatever
70 var NSMap
= {slc
:"http://argeo.org/projects/slc/schemas"};
71 var testId
= qx
.dom
.Node
.getText(org
.argeo
.ria
.util
.Element
.selectSingleNode(this.data
, "slc:uuid"));
72 this.info("Opening test "+testId
);
73 this.getView().setViewTitle("Test "+testId
);
74 service
= "../resultViewXml.xslt?uuid="+testId
;
75 var serviceManager
= org
.argeo
.ria
.remote
.RequestManager
.getInstance();
76 var request
= serviceManager
.getRequest(service
, "GET", "application/xml");
77 request
.addListener("completed", function(response
){
78 this.createXmlGui(response
.getContent());
79 this.getView().setOnLoad(false);
81 this.getView().setOnLoad(true);
86 addScroll : function(){
90 createXmlGui : function(responseXml
){
92 "slc" : "http://argeo.org/projects/slc/schemas"
94 if(!qx
.Class
.hasMixin(qx
.ui
.treevirtual
.TreeVirtual
, qx
.ui
.treevirtual
.MNode
)){
95 qx
.Class
.include(qx
.ui
.treevirtual
.TreeVirtual
,qx
.ui
.treevirtual
.MNode
);
97 this.tree
= new qx
.ui
.treevirtual
.TreeVirtual(["Test", "State", "Message", "Id"]);
98 this.tree
.getTableColumnModel().setDataCellRenderer(0, new org
.argeo
.ria
.util
.TreeDataCellRenderer());
99 this.tree
.getDataRowRenderer().setHighlightFocusRow(false); // Default row renderer
100 this.tree
.setRowHeight(18);
101 this.tree
.setStatusBarVisible(false);
102 this.tree
.setDecorator(new qx
.ui
.decoration
.Background("#fff"));
103 var model
= this.tree
.getDataModel();
104 var resNodes
= org
.argeo
.ria
.util
.Element
.selectNodes(responseXml
, "//slc:result-part", NSMap
);
105 window
.result
= responseXml
;
106 var resultParts
= {};
108 for(var i
=0;i
<resNodes
.length
;i
++){
109 var currentParentId
= null;
110 var node
= resNodes
[i
];
111 var pathAttr
= qx
.xml
.Element
.getSingleNodeText(node
, "@path");
112 var pathParts
= pathAttr
.split("/");
113 if(pathParts
[0] == ""){
117 for(var j
=0;j
<pathParts
.length
;j
++){
118 //if(pathParts[j] == "") continue;
119 crtPath
= crtPath
.concat("/", pathParts
[j
]);
120 if(addedPaths
[crtPath
]) {
121 currentParentId
= addedPaths
[crtPath
];
122 continue; // Node already exists, set as parent and go to next!
124 var element
= org
.argeo
.ria
.util
.Element
.selectSingleNode(responseXml
, '//slc:element[@path="'+crtPath
+'"]', NSMap
);
127 label
= org
.argeo
.ria
.util
.Element
.getSingleNodeText(element
, "*/slc:label", NSMap
);
131 var simpleResults
= org
.argeo
.ria
.util
.Element
.selectNodes(node
, "slc:part-sub-list/slc:parts/slc:simple-result-part", NSMap
);
134 newId
= model
.addBranch(currentParentId
, label
, false);
137 if(!simpleResults
|| !simpleResults
.length
){
138 addedPaths
[crtPath
] = newId
;
139 currentParentId
= newId
;
142 for(var k
=0;k
<simpleResults
.length
;k
++){
143 var sResNode
= simpleResults
[k
];
144 resId
= model
.addLeaf(currentParentId
, label
);
145 model
.setColumnData(resId
, 3, org
.argeo
.ria
.util
.Element
.getSingleNodeText(sResNode
, "slc:test-run-uuid", NSMap
));
146 model
.setColumnData(resId
, 2, org
.argeo
.ria
.util
.Element
.getSingleNodeText(sResNode
, "slc:message", NSMap
));
147 var status
= org
.argeo
.ria
.util
.Element
.getSingleNodeText(sResNode
, "slc:status", NSMap
);
148 if(status
!= "PASSED"){
149 status
= this.failedStatus
;
150 this._setParentBranchAsFailed(resId
);
152 status
= this.passedStatus
;
154 model
.setColumnData(resId
, 1, status
);
157 addedPaths
[crtPath
] = newId
;
158 currentParentId
= newId
;
161 this.add(this.tree
, {flex
:1});
163 var columnModel
= this.tree
.getTableColumnModel();
164 var resize
= columnModel
.getBehavior();
165 resize
.set(0, {width
:250, minWidth
:250});
166 resize
.set(1, {width
:55});
167 resize
.set(2, {width
:"1*"});
168 resize
.set(3, {width
:150});
169 columnModel
.setDataCellRenderer(1, new org
.argeo
.slc
.web
.StatusCellRenderer());
171 this.tree
.getSelectionManager().getSelectionModel().addListener("changeSelection", function(e
){
172 var viewSelection
= this.getView().getViewSelection();
173 viewSelection
.clear();
174 var nodes
= this.tree
.getDataModel().getSelectedNodes();
176 viewSelection
.addNode(nodes
[0]);
177 this.getView().setViewSelection(viewSelection
);
181 var contextMenu
= org
.argeo
.ria
.event
.CommandsManager
.getInstance().createMenuFromIds(["close"]);
182 this.tree
.setContextMenu(contextMenu
);
186 _setParentBranchAsFailed : function(id
){
187 var model
= this.tree
.getDataModel();
188 while(id
!= null && id
!=0){
189 var node
= this.tree
.nodeGet(id
);
190 id
= node
.parentNodeId
;
191 if(id
!= null && id
!=0){
192 model
.setColumnData(id
, 1, this.failedStatus
);
193 this.tree
.nodeSetOpened(id
, true);
198 createHtmlGui : function(responseText
){
199 var htmlElement
= new qx
.ui
.embed
.Html(responseText
);
200 htmlElement
.setOverflowX("auto");
201 htmlElement
.setOverflowY("auto");
202 this.add(htmlElement
, {flex
:1});