ui_configmgr.xslt 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. ##############################################################################
  4. # Copyright (C) 2011 HPCC Systems.
  5. #
  6. # All rights reserved. This program is free software: you can redistribute it and/or modify
  7. # it under the terms of the GNU Affero General Public License as
  8. # published by the Free Software Foundation, either version 3 of the
  9. # License, or (at your option) any later version.
  10. #
  11. # This program is distributed in the hope that it will be useful,
  12. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. # GNU Affero General Public License for more details.
  15. #
  16. # You should have received a copy of the GNU Affero General Public License
  17. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  18. ##############################################################################
  19. -->
  20. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  21. <xsl:output method="html" encoding="utf-8"/>
  22. <xsl:variable name="Component" select="/*[1]/Component/text()"/>
  23. <xsl:variable name="CompDefn" select="/*[1]/CompDefn/text()"/>
  24. <xsl:variable name="debugMode" select="0"/>
  25. <xsl:variable name="filePath">
  26. <xsl:choose>
  27. <xsl:when test="$debugMode">c:/development/bin/debug/files</xsl:when>
  28. <xsl:otherwise>/esp/files_</xsl:otherwise>
  29. </xsl:choose>
  30. </xsl:variable>
  31. <xsl:template match="/*[1]/XmlArgs/*">
  32. <html>
  33. <head>
  34. <!--<script type="text/javascript" src="{$filePath}/scripts/configmgr/generated/{$Component}.js"></script>-->
  35. <script type="text/javascript">
  36. <xsl:value-of select="$CompDefn"/>
  37. </script>
  38. <script type="text/javascript" src="{$filePath}/yui/build/yahoo/yahoo-min.js"></script>
  39. <script type="text/javascript" src="{$filePath}/yui/build/yahoo-dom-event/yahoo-dom-event.js"></script>
  40. <script type="text/javascript" src="{$filePath}/yui/build/event/event-min.js"></script>
  41. <script type="text/javascript" src="{$filePath}/yui/build/dragdrop/dragdrop-min.js"></script>
  42. <link rel="stylesheet" type="text/css" href="{$filePath}/yui/build/fonts/fonts.css" />
  43. <link rel="stylesheet" type="text/css" href="{$filePath}/yui/build/layout/assets/skins/sam/layout.css" />
  44. <link rel="stylesheet" type="text/css" href="{$filePath}/yui/build/datatable/assets/skins/sam/datatable.css" />
  45. <link rel="stylesheet" type="text/css" href="{$filePath}/yui/build/tabview/assets/skins/sam/tabview.css" />
  46. <link rel="stylesheet" type="text/css" href="{$filePath}/yui/build/menu/assets/skins/sam/menu.css" />
  47. <link rel="stylesheet" type="text/css" href="{$filePath}/yui/build/container/assets/skins/sam/container.css" />
  48. <script type="text/javascript" src="/esp/files/scripts/espdefault.js">&#160;</script>
  49. <script type="text/javascript" src="{$filePath}/yui/build/yuiloader/yuiloader-min.js" ></script>
  50. <script type="text/javascript" src="{$filePath}/yui/build/element/element-min.js"></script>
  51. <script type="text/javascript" src="{$filePath}/yui/build/datasource/datasource-min.js"></script>
  52. <script type="text/javascript" src="{$filePath}/yui/build/datatable/datatable.js"></script>
  53. <script type="text/javascript" src="{$filePath}/yui/build/tabview/tabview-min.js"></script>
  54. <script type="text/javascript" src="{$filePath}/yui/build/connection/connection-min.js"></script>
  55. <script type="text/javascript" src="{$filePath}/yui/build/container/container-min.js"></script>
  56. <script type="text/javascript" src="{$filePath}/yui/build/layout/layout-min.js"></script>
  57. <script type="text/javascript" src="{$filePath}/yui/build/menu/menu-min.js"></script>
  58. <script type="text/javascript" src="{$filePath}/yui/build/json/json-min.js"></script>
  59. <script type="text/javascript" src="{$filePath}/yui/build/animation/animation-min.js"></script>
  60. <script type="text/javascript" src="{$filePath}/yui/build/dom/dom-min.js"></script>
  61. <script type="text/javascript" src="{$filePath}/yui/build/resize/resize-min.js"></script>
  62. <script type="text/javascript" src="{$filePath}/yui/build/progressbar/progressbar-min.js"></script>
  63. <script type="text/javascript" src="{$filePath}/yui/build/event-simulate/event-simulate-min.js"></script>
  64. <script type="text/javascript" src="/esp/files/scripts/configmgr/common.js"></script>
  65. <script type="text/javascript" src="{$filePath}/scripts/configmgr/configmgr.js"/>
  66. <!--begin custom header content for this example-->
  67. <style type="text/css">
  68. /* custom styles for this example */
  69. .yui-skin-sam .yui-dt-liner { white-space:nowrap; }
  70. </style>
  71. <style type="text/css">
  72. .yui-dt-liner #depth-1 {
  73. padding-left:0em !important;
  74. }
  75. .yui-dt-liner #depth0 {
  76. padding-left:2em !important;
  77. }
  78. .yui-dt-liner #depth1 {
  79. padding-left:4em !important;
  80. background-position:1em 0 !important;
  81. }
  82. .yui-dt-liner #depth2 {
  83. padding-left:6em !important;
  84. background-position:2em 0 !important;
  85. }
  86. .yui-dt-liner #depth3 {
  87. padding-left:8em !important;
  88. background-position:3em 0 !important;
  89. }
  90. .yui-dt-liner #depth4 {
  91. padding-left:10em !important;
  92. background-position:4em 0 !important;
  93. }
  94. .yui-dt-liner #depth5 {
  95. padding-left:12em !important;
  96. background-position:5em 0 !important;
  97. }
  98. .yui-dt-liner #depth6 {
  99. padding-left:14em !important;
  100. background-position:6em 0 !important;
  101. }
  102. .yui-dt-liner #depth7 {
  103. padding-left:16em !important;
  104. background-position:7em 0 !important;
  105. }
  106. .yui-dt-liner #depth8 {
  107. padding-left:18em !important;
  108. background-position:8em 0 !important;
  109. }
  110. .yui-dt-liner #depth9 {
  111. padding-left:20em !important;
  112. background-position:9em 0 !important;
  113. }
  114. .hidden {
  115. display:none;
  116. }
  117. .expanded .yui-dt-col-icon .yui-dt-liner{
  118. background: url(<xsl:value-of select="$filePath"/>/img/collapse.gif) no-repeat;
  119. }
  120. .collapsed .yui-dt-col-icon .yui-dt-liner{
  121. background: url(<xsl:value-of select="$filePath"/>/img/expand.gif) no-repeat;
  122. }
  123. .buttoncollapsed#pushbutton {
  124. background: url(<xsl:value-of select="$filePath"/>/img/expand.gif) center center no-repeat;
  125. border: none;
  126. text-indent: -4em;
  127. text-align:justify;
  128. overflow: hidden;
  129. padding: 0 .75em;
  130. width: 1.75em;
  131. height: 1em;
  132. margin-left: 4em; /* IE only */
  133. padding: 0 1.75em; /* IE only */
  134. }
  135. div>.buttoncollapsed#pushbutton {
  136. margin-left: 0em; /* non-IE only */
  137. padding: 0 0em; /* non-IE only */
  138. }
  139. .buttonexpanded#pushbutton {
  140. background: url(<xsl:value-of select="$filePath"/>/img/collapse.gif) center center no-repeat;
  141. border: none;
  142. text-indent: -4em;
  143. text-align:justify;
  144. overflow: hidden;
  145. padding: 0 .75em;
  146. width: 1.75em;
  147. height: 1em;
  148. margin-left: 4em; /* IE only */
  149. padding: 0 1.75em; /* IE only */
  150. }
  151. div>.buttonexpanded#pushbutton {
  152. margin-left: 0em; /* non-IE only */
  153. padding: 0 0em; /* non-IE only */
  154. }
  155. /* Class for displaying out of focus tables */
  156. .yui-skin-sam .yui-dt tr.outoffocus td {
  157. background-color: #D0D0D0;
  158. }
  159. .yui-skin-sam .yui-tt .bd
  160. {
  161. BORDER-RIGHT: #808080 1px solid;
  162. BORDER-TOP: #808080 1px solid;
  163. BORDER-LEFT: #808080 1px solid;
  164. BORDER-BOTTOM: #808080 1px solid;
  165. BACKGROUND-COLOR: #FAFAD2;
  166. }
  167. </style>
  168. </head>
  169. <body class=" yui-skin-sam" onmousedown="handlemousedown(event)" onkeydown="handlekeydown(event)" onunload="handleunload(true)">
  170. <xsl:choose>
  171. <xsl:when test="($Component='Refresh')">
  172. <script type="text/javascript">
  173. doPageRefresh("Configmgr has been restarted. Press ok to refresh the page");
  174. </script>
  175. </xsl:when>
  176. <xsl:when test="($Component='Deploy')">
  177. <div id="DeployTab">
  178. </div>
  179. </xsl:when>
  180. <xsl:when test="not($Component='BuildSet') and not($Component='Deploy')">
  181. <div>
  182. <i>
  183. <h3>
  184. <script type="text/javascript">
  185. <!--document.body.style.cursor='wait';-->
  186. document.write('<xsl:value-of select="$Component"/>');
  187. </script>
  188. </h3>
  189. </i>
  190. </div>
  191. <div id="tabviewcontainer" class="yui-navset">
  192. <ul id="tabviewcontainerul" class="yui-nav">
  193. <script type="text/javascript">
  194. createTabDivsForComp('<xsl:value-of select="$Component"/>');
  195. </script>
  196. </ul>
  197. <div id ="tabviewcontainercontent" class="yui-content">
  198. <script type="text/javascript">
  199. </script>
  200. </div>
  201. </div>
  202. <br>
  203. <div id="tabviewcontainer1" class="hidden yui-navset">
  204. <ul id="tabviewcontainerul1" class="yui-nav">
  205. <script type="text/javascript">
  206. createTabDivsForComp('BuildSet');
  207. </script>
  208. </ul>
  209. <div id ="tabviewcontainercontent1" class="yui-content">
  210. <div id="BuildSetTab"></div>
  211. </div>
  212. </div>
  213. </br>
  214. </xsl:when>
  215. </xsl:choose>
  216. <script type="text/javascript">
  217. var rows = new Array();
  218. var rowsServers = new Array();
  219. var rowsSlaves = new Array();
  220. var rowsTopology = new Array();
  221. var menuEnabled = new Array();
  222. var viewChildNodes = new Array();
  223. var multiRowNodes = new Array();
  224. initRowsForComplexComps(rowsServers, "RoxieServers");
  225. initRowsForComplexComps(rowsSlaves, "RoxieSlaves");
  226. initRowsForComplexComps(rowsTopology, "Topology");
  227. <xsl:call-template name="fillenableMenu"/>
  228. createDivInTabsForComp('<xsl:value-of select="$Component"/>');
  229. <xsl:choose>
  230. <xsl:when test="($Component='Refresh')"></xsl:when>
  231. <xsl:when test="($Component='Programs')">
  232. var id = 0;
  233. <xsl:for-each select="child::*">
  234. var i = {};
  235. i.compType = '<xsl:value-of select="$Component"/>';
  236. var subRecordIndex = 0;
  237. i.depth = 0;
  238. var parent = 0;
  239. var eN = '<xsl:value-of select="name()"/>'
  240. var subTypeKey = '<xsl:value-of select="@name"/>';
  241. var cN = '<xsl:value-of select="@name"/>';
  242. <xsl:for-each select="@*">
  243. var aS = cS['<xsl:value-of select="name()"/>'+'<xsl:value-of select="$Component"/>'];
  244. if ( aS.hidden != 1) {
  245. i.<xsl:value-of select="name()"/> = "<xsl:value-of select="."/>";
  246. i.<xsl:value-of select="name()"/>_extra = aS.extra;
  247. i.<xsl:value-of select="name()"/>_ctrlType = aS.ctrlType;
  248. }
  249. </xsl:for-each>
  250. i.params = "pcType=<xsl:value-of select="$Component"/>::pcName=" + cN + "::subType=" + eN;
  251. i.params +="::subTypeKey=" + subTypeKey;
  252. i.parent = -1;
  253. parent = id;
  254. i.id = id++;
  255. rows[rows.length] = i;
  256. <xsl:for-each select="*">
  257. var i = {};
  258. var eN = '<xsl:value-of select="name()"/>';
  259. i.compType = '<xsl:value-of select="$Component"/>';
  260. <xsl:for-each select="@*">
  261. var aS = cS['<xsl:value-of select="name()"/>'+'<xsl:value-of select="$Component"/>'];
  262. if(aS.hidden != 1) {
  263. i.<xsl:value-of select="name()"/> = "<xsl:value-of select="."/>";
  264. i.<xsl:value-of select="name()"/>_extra = aS.extra;
  265. i.<xsl:value-of select="name()"/>_ctrlType = aS.ctrlType;
  266. }
  267. </xsl:for-each>
  268. i.params = "pcType=<xsl:value-of select="$Component"/>::pcName=" + cN + "::subType=" + eN;
  269. i.params +="::subTypeKey=";
  270. subRecordIndex = id;
  271. i.id = id++;
  272. i.depth = 1;
  273. i.parent = parent;
  274. rows[rows.length] = i;
  275. </xsl:for-each>
  276. </xsl:for-each>
  277. createMultiColTreeCtrlForComp(rows, "Programs", subRecordIndex);
  278. </xsl:when>
  279. <xsl:when test="($Component='Topology')">
  280. var id = 0;
  281. var i = {};
  282. i.compType = '<xsl:value-of select="$Component"/>';
  283. i.depth = 0;
  284. i.name = "<xsl:value-of select="name()"/>";
  285. i.value = "";
  286. i.name_ctrlType = 0;
  287. i.value_extra = "";
  288. i.value_ctrlType = 0;
  289. i.params = "pcType=<xsl:value-of select="$Component"/>::pcName=::subType=";
  290. i.params +="::subTypeKey=";
  291. i.parent = -1;
  292. parent = id;
  293. i.id = id++;
  294. rows[rows.length] = i;
  295. var subRecordIndex = 0;
  296. var parent = 0;
  297. var eN = '<xsl:value-of select="name()"/>'
  298. var subTypeKey = '<xsl:value-of select="@name"/>';
  299. var cN = '<xsl:value-of select="@name"/>';
  300. <xsl:for-each select="@*">
  301. var aS = cS['<xsl:value-of select="name()"/>'];
  302. if(typeof(aS) != 'undefined') {
  303. if ( aS.hidden != 1) {
  304. var i = {};
  305. i.compType = '<xsl:value-of select="$Component"/>';
  306. i.depth = 1;
  307. i.name = "<xsl:value-of select="name()"/>";
  308. if ( i.name != 'build') {
  309. i.value = "<xsl:value-of select="."/>";
  310. i.name_extra = "";
  311. i.name_ctrlType = 0;
  312. i.value_extra = aS.extra;
  313. i.value_ctrlType = aS.ctrlType;
  314. i.params = "pcType=<xsl:value-of select="$Component"/>::pcName=" + cN + "::subType=" + eN;
  315. i.params +="::subTypeKey=" + subTypeKey;
  316. i.parent = parent;
  317. i.id = id++;
  318. }
  319. rows[rows.length] = i;
  320. }
  321. }
  322. </xsl:for-each>
  323. var parentIds = new Array();
  324. parentIds[parentIds.length] = parent;
  325. <xsl:for-each select="descendant::*">
  326. var cN = '<xsl:value-of select="name()"/>';
  327. var i = {};
  328. i.compType = '<xsl:value-of select="$Component"/>';
  329. i.depth = <xsl:value-of select="count(ancestor::*) - 2"/>;
  330. i.name = '<xsl:value-of select="name()"/>';
  331. if ('<xsl:value-of select="@name"/>' != '')
  332. i.name += ' - ' + '<xsl:value-of select="@name"/>';
  333. else
  334. i.name += ' - ' + '<xsl:value-of select="@process"/>';
  335. i.value = "";
  336. i.name_extra = "";
  337. i.name_ctrlType = 0;
  338. i.value_extra = "";
  339. i.value_ctrlType = 0;
  340. i.parent = parentIds[parentIds.length-1];
  341. i.params = "pcType=<xsl:value-of select="$Component"/>::pcName=" + rows[i.parent].name + "::subType=";
  342. i.params +="::subTypeKey=" + rows[i.parent].value;
  343. parent = id;
  344. i.id = id++;
  345. rows[rows.length] = i;
  346. var eN = '<xsl:value-of select="name()"/>'
  347. setParentIds(i, rows, parentIds);
  348. <xsl:for-each select="@*">
  349. var aS = cS['<xsl:value-of select="name()"/>'+cN];
  350. if(aS.hidden != 1) {
  351. var i = {};
  352. i.compType = '<xsl:value-of select="$Component"/>';
  353. i.depth = <xsl:value-of select="count(ancestor::*) - 1"/>;
  354. i.name = "<xsl:value-of select="name()"/>";
  355. i.value = "<xsl:value-of select="."/>";
  356. i.name_ctrlType = 0;
  357. i.value_extra = aS.extra;
  358. i.value_ctrlType = aS.ctrlType;
  359. i.parent = parentIds[parentIds.length-1];
  360. i.params = "pcType=<xsl:value-of select="$Component"/>::pcName=" + cN + "::subType=" + eN;
  361. i.params +="::subTypeKey=" + rows[i.parent].name;
  362. i.id = id++;
  363. rows[rows.length] = i;
  364. }
  365. </xsl:for-each>
  366. </xsl:for-each>
  367. createMultiColTreeCtrlForComp(rows, "<xsl:value-of select="$Component"/>", 0);
  368. </xsl:when>
  369. <xsl:when test="($Component='Environment')">
  370. var id = 0;
  371. var i = {};
  372. initEnvXmlType(i);
  373. i.compType = '<xsl:value-of select="$Component"/>';
  374. i.depth = 0;
  375. i.name = "<xsl:value-of select="name()"/>";
  376. i.value = "";
  377. i.params = "pcType=<xsl:value-of select="$Component"/>";
  378. i.parent = -1;
  379. parent = id;
  380. i.id = id++;
  381. rows[rows.length] = i;
  382. var parent = 0;
  383. var cN = '<xsl:value-of select="@name"/>';
  384. <xsl:for-each select="@*">
  385. var i = {};
  386. initEnvXmlType(i);
  387. i.compType = '<xsl:value-of select="$Component"/>';
  388. i.depth = 1;
  389. i.name = "<xsl:value-of select="name()"/>";
  390. i.value = "<xsl:value-of select="."/>";
  391. i.params = "isAttr=no:parentParams" + i.depth + "=" + rows[i.parent].params;
  392. i.parent = parent;
  393. i.hasChildren = false;
  394. i.id = id++;
  395. rows[rows.length] = i;
  396. rows[i.parent].hasChildren = true;
  397. </xsl:for-each>
  398. var parentIds = new Array();
  399. parentIds[parentIds.length] = parent;
  400. <xsl:for-each select="descendant::*">
  401. var i = {};
  402. initEnvXmlType(i);
  403. i.compType = '<xsl:value-of select="@name"/>';
  404. i.depth = <xsl:value-of select="count(ancestor::*) - 2"/>;
  405. i.name = '<xsl:value-of select="name()"/>';
  406. i.value = "<xsl:value-of select="normalize-space(text())"/>";
  407. i.parent = parentIds[parentIds.length-1];
  408. parent = id;
  409. i.id = id++;
  410. rows[rows.length] = i;
  411. setParentIds(i, rows, parentIds);
  412. rows[i.parent].hasChildren = true;
  413. i.params = "isAttr=no:pcType=" + '<xsl:value-of select="name()"/>' + ":pcName=" + '<xsl:value-of select="@name"/>' + "::parentParams" + i.depth + "=" + rows[i.parent].params;
  414. <xsl:for-each select="@*">
  415. var i = {};
  416. initEnvXmlType(i);
  417. i.compType = '<xsl:value-of select="$Component"/>';
  418. i.depth = <xsl:value-of select="count(ancestor::*) - 1"/>;
  419. i.name = "<xsl:value-of select="name()"/>";
  420. i.value = "<xsl:value-of select="."/>";
  421. i.parent = parentIds[parentIds.length-1];
  422. i.params = "parentParams" + i.depth + "=" + rows[i.parent].params;
  423. i.id = id++;
  424. rows[i.parent].hasChildren = true;
  425. i.hasChildren = false;
  426. rows[rows.length] = i;
  427. </xsl:for-each>
  428. </xsl:for-each>
  429. createEnvXmlView(rows, "<xsl:value-of select="$Component"/>", 0);
  430. </xsl:when>
  431. <xsl:when test="($Component='Deploy')">
  432. var id = 0;
  433. var i = {};
  434. i.compType = '<xsl:value-of select="$Component"/>';
  435. i.depth = 0;
  436. i.name = "<xsl:value-of select="name()"/>";
  437. i.value = "";
  438. i.name_ctrlType = 0;
  439. i.value_extra = "";
  440. i.value_ctrlType = 1;
  441. i.params = "pcType=<xsl:value-of select="$Component"/>::pcName=::subType=";
  442. i.params +="::subTypeKey=";
  443. i.parent = -1;
  444. i.instanceName = '';
  445. i.build = '';
  446. i.buildSet = '';
  447. parent = id;
  448. i.id = id++;
  449. rows[rows.length] = i;
  450. var subRecordIndex = 0;
  451. var parent = 0;
  452. var eN = '<xsl:value-of select="name()"/>'
  453. var subTypeKey = '<xsl:value-of select="@name"/>';
  454. var cN = '<xsl:value-of select="@name"/>';
  455. var parentIds = new Array();
  456. parentIds[parentIds.length] = parent;
  457. <xsl:for-each select="descendant::*">
  458. var cN = '<xsl:value-of select="name()"/>';
  459. var i = {};
  460. i.compType = '<xsl:value-of select="$Component"/>';
  461. i.depth = <xsl:value-of select="count(ancestor::*) - 2"/>;
  462. if ('<xsl:value-of select="@name"/>' != '')
  463. i.name = '<xsl:value-of select="@name"/>';
  464. else
  465. i.name = '<xsl:value-of select="@nodeName"/>';
  466. i.parent = parentIds[parentIds.length-1];
  467. parent = id;
  468. i.id = id++;
  469. var eN = '<xsl:value-of select="name()"/>'
  470. setParentIds(i, rows, parentIds);
  471. <xsl:for-each select="@*">
  472. i.<xsl:value-of select="name()"/> = "<xsl:value-of select="."/>";
  473. </xsl:for-each>
  474. rows[rows.length] = i;
  475. </xsl:for-each>
  476. createMultiColTreeCtrlForComp(rows, "Deploy", 0);
  477. </xsl:when>
  478. <xsl:otherwise>
  479. createRowArraysForComp('<xsl:value-of select="$Component"/>', rows);
  480. var cN = '<xsl:value-of select="@name"/>';
  481. var aS;
  482. var tN;
  483. <xsl:for-each select="@*">
  484. aS = cS['<xsl:value-of select="name()"/>'];
  485. if(typeof(aS) != 'undefined') {
  486. if (typeof(aS.tab) != 'undefined') {
  487. tN = 'Attributes';
  488. if (aS.tab.length > 0)
  489. tN = aS.tab;
  490. if ( aS.hidden != 1) {
  491. if ((top.document.forms['treeForm'].displayMode.value !== '1') || (aS.displayMode === 1)) {
  492. var i = {};
  493. i.compType = '<xsl:value-of select="$Component"/>';
  494. i.name = "<xsl:value-of select="name()"/>";
  495. i._key = "<xsl:value-of select="name()"/>";
  496. if (aS.caption)
  497. i.name = aS.caption;
  498. i.value = "<xsl:value-of select="."/>";
  499. i.name_ctrlType = 0;
  500. i.value_extra = aS.extra;
  501. i.value_ctrlType = aS.ctrlType;
  502. i.value_required = aS.required;
  503. i.value_onChange = aS.onChange;
  504. i.value_onChangeMsg = aS.onChangeMsg;
  505. i.params = "pcType=<xsl:value-of select="$Component"/>::pcName=" + cN;
  506. rows[tN][rows[tN].length] = i;
  507. }
  508. }
  509. }
  510. }
  511. </xsl:for-each>
  512. var id = 0;
  513. var parent = 0;
  514. var parentIds = new Array();
  515. <xsl:for-each select="*">
  516. <xsl:choose>
  517. <xsl:when test="(name() = 'Topology')">
  518. id = rowsTopology.length;
  519. parent = 0;
  520. parentIds.splice(0, parentIds.length);
  521. parentIds[parentIds.length] = parent;
  522. <xsl:for-each select="descendant::*">
  523. var i = {};
  524. i.compType = '<xsl:value-of select="$Component"/>';
  525. i.depth = <xsl:value-of select="count(ancestor::*) - 2"/>;
  526. i.parent = parentIds[parentIds.length-1];
  527. parent = id;
  528. i.id = id++;
  529. setParentIds(i, rowsTopology, parentIds);
  530. <xsl:for-each select="@*">
  531. i.<xsl:value-of select="name()"/> = "<xsl:value-of select="."/>";
  532. </xsl:for-each>
  533. rowsTopology[rowsTopology.length] = i;
  534. </xsl:for-each>
  535. </xsl:when>
  536. <xsl:when test="(name() = 'RoxieFarmProcess')">
  537. id = rowsServers.length;
  538. parent = 0;
  539. parentIds.splice(0, parentIds.length);
  540. parentIds[parentIds.length] = parent;
  541. <xsl:for-each select="descendant-or-self::*">
  542. var subCompType = '<xsl:value-of select="name()"/>';
  543. var i = {};
  544. i.compType = subCompType;
  545. i.depth = <xsl:value-of select="count(ancestor::*) - 2"/>;
  546. i.parent = parentIds[parentIds.length-1];
  547. parent = id;
  548. i.id = id++;
  549. setParentIds(i, rowsServers, parentIds);
  550. var subTypeKey = '<xsl:value-of select="@name"/>';
  551. <xsl:for-each select="@*">
  552. i.<xsl:value-of select="name()"/> = "<xsl:value-of select="."/>";
  553. i.<xsl:value-of select="name()"/>_extra = cS['<xsl:value-of select="name()"/>'+subCompType].extra;
  554. i.<xsl:value-of select="name()"/>_ctrlType = cS['<xsl:value-of select="name()"/>'+subCompType].ctrlType;
  555. </xsl:for-each>
  556. i.params = "pcType=<xsl:value-of select="$Component"/>::pcName=" + cN;
  557. i.params += "::subType=" + subCompType + "::subTypeKey=" + subTypeKey;
  558. rowsServers[rowsServers.length] = i;
  559. </xsl:for-each>
  560. </xsl:when>
  561. <xsl:when test="(name() = 'RoxieSlaveProcess')"/>
  562. <xsl:when test="(name() = 'RoxieServerProcess')"/>
  563. <xsl:when test="(name() = 'RoxieSlave')">
  564. id = rowsSlaves.length;
  565. parent = 0;
  566. parentIds.splice(0, parentIds.length);
  567. parentIds[parentIds.length] = parent;
  568. <xsl:for-each select="descendant-or-self::*">
  569. var i = {};
  570. i.compType = 'RoxieSlave';
  571. i.depth = <xsl:value-of select="count(ancestor::*) - 2"/>;
  572. i.name_ctrlType = 0;
  573. i.parent = parentIds[parentIds.length-1];
  574. parent = id;
  575. i.id = id++;
  576. setParentIds(i, rowsSlaves, parentIds);
  577. <xsl:for-each select="@*">
  578. i.<xsl:value-of select="name()"/> = "<xsl:value-of select="."/>";
  579. </xsl:for-each>
  580. if (i.depth > 1)
  581. i.name = '<xsl:value-of select="@number"/>';
  582. else
  583. i.name = '<xsl:value-of select="@computer"/>';
  584. rowsSlaves[rowsSlaves.length] = i;
  585. </xsl:for-each>
  586. </xsl:when>
  587. <xsl:when test="name() = /*[1]/ViewChildNodes/viewChildNodes/*">
  588. var i = {};
  589. i.compType = '<xsl:value-of select="$Component"/>';
  590. var eN = '<xsl:value-of select="name()"/>'
  591. var subTypeKey="";
  592. <xsl:for-each select="@*">
  593. aS = cS['<xsl:value-of select="name()"/>'+eN];
  594. if(typeof(aS) != 'undefined') {
  595. if (typeof(aS.tab) != 'undefined') {
  596. if(aS.hidden != 1) {
  597. if ((top.document.forms['treeForm'].displayMode.value !== 1) || (aS.displayMode === 1)) {
  598. i.<xsl:value-of select="name()"/> = "<xsl:value-of select="."/>";
  599. i.<xsl:value-of select="name()"/>_extra = aS.extra;
  600. i.<xsl:value-of select="name()"/>_ctrlType = aS.ctrlType;
  601. i.<xsl:value-of select="name()"/>_required = aS.required;
  602. i.<xsl:value-of select="name()"/>_onChange = aS.onChange;
  603. i.<xsl:value-of select="name()"/>_onChangeMsg = aS.onChangeMsg;
  604. if ("<xsl:value-of select="."/>"!== "")
  605. subTypeKey += "[@" + "<xsl:value-of select="name()"/>" + "='" + "<xsl:value-of select="."/>" + "']";
  606. if (aS.caption)
  607. i.<xsl:value-of select="name()"/>_caption = aS.caption;
  608. }
  609. }
  610. }
  611. }
  612. </xsl:for-each>
  613. i.params = "pcType=<xsl:value-of select="$Component"/>::pcName=" + cN + "::subType=" + eN;
  614. i.params +="::subTypeKey=" + subTypeKey;
  615. if (typeof(aS) != 'undefined')
  616. rows[aS.tab][rows[aS.tab].length] = i;
  617. <xsl:for-each select="*">
  618. var subi = {};
  619. subi.compType = '<xsl:value-of select="$Component"/>';
  620. var subeN = '<xsl:value-of select="name()"/>'
  621. var subsubTypeKey="";
  622. if (typeof(i._<xsl:value-of select="name()"/>) === 'undefined')
  623. i._<xsl:value-of select="name()"/> = new Array();
  624. <xsl:for-each select="@*">
  625. aS = cS['<xsl:value-of select="name()"/>'+ subeN];
  626. if(typeof(aS) != 'undefined') {
  627. if (typeof(aS.tab) != 'undefined') {
  628. if(aS.hidden != 1) {
  629. if ((top.document.forms['treeForm'].displayMode.value !== 1) || (aS.displayMode === 1)) {
  630. subi.<xsl:value-of select="name()"/> = "<xsl:value-of select="."/>";
  631. subi.<xsl:value-of select="name()"/>_extra = aS.extra;
  632. subi.<xsl:value-of select="name()"/>_ctrlType = aS.ctrlType;
  633. subi.<xsl:value-of select="name()"/>_required = aS.required;
  634. subi.<xsl:value-of select="name()"/>_onChange = aS.onChange;
  635. subi.<xsl:value-of select="name()"/>_onChangeMsg = aS.onChangeMsg;
  636. if ("<xsl:value-of select="."/>"!== "")
  637. subsubTypeKey += "[@" + "<xsl:value-of select="name()"/>" + "='" + "<xsl:value-of select="."/>" + "']";
  638. if (aS.caption)
  639. subi.<xsl:value-of select="name()"/>_caption = aS.caption;
  640. }
  641. }
  642. }
  643. }
  644. </xsl:for-each>
  645. if (<xsl:value-of select="count(@*)"/> === 0) {
  646. subi.<xsl:value-of select="name()"/> = '<xsl:value-of select="."/>';
  647. subi.<xsl:value-of select="name()"/>_ctrlType = cS['<xsl:value-of select="name()"/>'+ subeN].ctrlType;
  648. }
  649. subi.params = "pcType=<xsl:value-of select="$Component"/>::pcName=" + cN + "::subType=" + eN;
  650. subi.params += subTypeKey + "/" + subeN;
  651. subi.params +="::subTypeKey=" + subsubTypeKey;
  652. i._<xsl:value-of select="name()"/>[i._<xsl:value-of select="name()"/>.length] = subi;
  653. </xsl:for-each>
  654. </xsl:when>
  655. <xsl:when test="name() = /*[1]/MultiRowNodes/multiRowNodes/*">
  656. var i = {};
  657. i.compType = '<xsl:value-of select="$Component"/>';
  658. var eN = '<xsl:value-of select="name()"/>'
  659. var subTypeKey="";
  660. var tN;
  661. <xsl:for-each select="@*">
  662. aS = cS['<xsl:value-of select="name()"/>'+eN];
  663. if(typeof(aS) != 'undefined') {
  664. if (typeof(aS.tab) != 'undefined') {
  665. tN = aS.tab
  666. if(aS.hidden != 1) {
  667. if ((top.document.forms['treeForm'].displayMode.value !== 1) || (aS.displayMode === 1)) {
  668. i.<xsl:value-of select="name()"/> = "<xsl:value-of select="."/>";
  669. i.<xsl:value-of select="name()"/>_extra = aS.extra;
  670. i.<xsl:value-of select="name()"/>_ctrlType = aS.ctrlType;
  671. i.<xsl:value-of select="name()"/>_required = aS.required;
  672. i.<xsl:value-of select="name()"/>_onChange = aS.onChange;
  673. i.<xsl:value-of select="name()"/>_onChangeMsg = aS.onChangeMsg;
  674. if ("<xsl:value-of select="."/>"!== "")
  675. subTypeKey += "[@" + "<xsl:value-of select="name()"/>" + "='" + "<xsl:value-of select="."/>" + "']";
  676. if (aS.caption)
  677. i.<xsl:value-of select="name()"/>_caption = aS.caption;
  678. }
  679. }
  680. }
  681. }
  682. </xsl:for-each>
  683. i.params = "pcType=<xsl:value-of select="$Component"/>::pcName=" + cN + "::subType=" + eN;
  684. i.params +="::subTypeKey=" + subTypeKey;
  685. if (typeof(tN) != 'undefined')
  686. rows[tN][rows[tN].length] = i;
  687. </xsl:when>
  688. <xsl:otherwise>
  689. var eN = '<xsl:value-of select="name()"/>'
  690. var subTypeKey;
  691. if (eN == 'Instance')
  692. subTypeKey = '<xsl:value-of select="@name"/>';
  693. else if (eN == 'Notes')
  694. subTypeKey = '<xsl:value-of select="@date"/>';
  695. else
  696. subTypeKey = '';
  697. <xsl:for-each select="@*">
  698. aS = cS['<xsl:value-of select="name()"/>'+eN];
  699. if(typeof(aS) != 'undefined') {
  700. if (typeof(aS.tab) != 'undefined') {
  701. if(aS.hidden != 1) {
  702. if ((top.document.forms['treeForm'].displayMode.value !== 1) || (aS.displayMode === 1)) {
  703. var i = {};
  704. i.compType = '<xsl:value-of select="$Component"/>';
  705. i.name = "<xsl:value-of select="name()"/>";
  706. i._key = "<xsl:value-of select="name()"/>";
  707. if (aS.caption)
  708. i.name = aS.caption;
  709. i.value = "<xsl:value-of select="."/>";
  710. i.name_ctrlType = 0;
  711. i.value_extra = aS.extra;
  712. i.value_ctrlType = aS.ctrlType;
  713. i.value_required = aS.required;
  714. i.value_onChange = aS.onChange;
  715. i.value_onChangeMsg = aS.onChangeMsg;
  716. i.params = "pcType=<xsl:value-of select="$Component"/>::pcName=" + cN + "::subType=" + eN;
  717. i.params +="::subTypeKey=" + subTypeKey;
  718. rows[aS.tab][rows[aS.tab].length] = i;
  719. }
  720. }
  721. }
  722. }
  723. </xsl:for-each>
  724. </xsl:otherwise>
  725. </xsl:choose>
  726. </xsl:for-each>
  727. createTablesForComp('<xsl:value-of select="$Component"/>', rows);
  728. if ('<xsl:value-of select="$Component"/>'==='RoxieCluster') {
  729. createMultiColTreeCtrlForComp(rowsServers, "Servers", 0);
  730. createMultiColTreeCtrlForComp(rowsSlaves, "Agents", 0);
  731. }
  732. else if ('<xsl:value-of select="$Component"/>'==='ThorCluster')
  733. createMultiColTreeCtrlForComp(rowsTopology, "Topology", 0);
  734. </xsl:otherwise>
  735. </xsl:choose>
  736. selectLastActiveTab();
  737. top.window.document.body.style.cursor='auto';
  738. </script>
  739. </body>
  740. </html>
  741. </xsl:template>
  742. <xsl:template match="/*[1]/Component" />
  743. <xsl:template match="/*[1]/CompDefn" />
  744. <xsl:template match="/*[1]/ViewChildNodes" />
  745. <xsl:template match="/*[1]/MultiRowNodes" />
  746. <xsl:template name="fillenableMenu">
  747. <xsl:for-each select="/*[1]/ViewChildNodes/viewChildNodes/*">
  748. addUniqueToArray(menuEnabled, '<xsl:value-of select="."/>');
  749. addUniqueToArray(viewChildNodes, '<xsl:value-of select="."/>');
  750. </xsl:for-each>
  751. <xsl:for-each select="/*[1]/MultiRowNodes/multiRowNodes/*">
  752. addUniqueToArray(menuEnabled, '<xsl:value-of select="."/>');
  753. addUniqueToArray(multiRowNodes, '<xsl:value-of select="."/>');
  754. </xsl:for-each>
  755. </xsl:template>
  756. </xsl:stylesheet>