ws_roxieconfig.js 69 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741
  1. /*##############################################################################
  2. # Copyright (C) 2011 HPCC Systems.
  3. #
  4. # All rights reserved. This program is free software: you can redistribute it and/or modify
  5. # it under the terms of the GNU Affero General Public License as
  6. # published by the Free Software Foundation, either version 3 of the
  7. # License, or (at your option) any later version.
  8. #
  9. # This program is distributed in the hope that it will be useful,
  10. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. # GNU Affero General Public License for more details.
  13. #
  14. # You should have received a copy of the GNU Affero General Public License
  15. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  16. ############################################################################## */
  17. // RoxieConfig Tab
  18. YAHOO.namespace("esp.container");
  19. var WS_ROXIECONFIG_VER = "1.01";
  20. var tabView;
  21. /*
  22. window.onresize = function() {
  23. refreshCurrentTab(true);
  24. if (queryPanel) {
  25. if (queryPanel.cfg.getProperty("visible")) {
  26. tabQuery.set('activeIndex', tabQuery.get('activeIndex'));
  27. queryPanel.cfg.setProperty("height", (YAHOO.util.Dom.getViewportHeight() > 500 ? YAHOO.util.Dom.getViewportHeight() - 40 : 500));
  28. queryPanel.cfg.setProperty("width", (YAHOO.util.Dom.getViewportWidth() > 500 ? YAHOO.util.Dom.getViewportWidth() - 140 : 500));
  29. // queryPanel.render();
  30. }
  31. }
  32. }
  33. */
  34. var ds_FullQueries, dt_FullQueries, ds_Queries, dt_Queries;
  35. function loadTab(Index, Resize)
  36. {
  37. switch (Index) {
  38. case 0:
  39. clearDataFiles();
  40. loadQueries('ListDeployedQueries', Resize);
  41. break;
  42. case 1:
  43. clearDataFiles();
  44. loadQueries('ListDeployedDataOnlyQueries', Resize);
  45. break;
  46. case 2:
  47. clearDataFiles();
  48. loadQueries('ListDeployedLibraryQueries', Resize);
  49. break;
  50. case 3:
  51. clearDataFiles();
  52. loadAliases('', "dtaliases", null, Resize);
  53. break;
  54. case 4:
  55. loadDataFiles('', 'dtindexes', 18, null, Resize);
  56. break;
  57. case 5:
  58. loadSuperFiles('', 'dtsuperfiles', 20, null, Resize);
  59. break;
  60. case 6:
  61. //loadComponentsXml();
  62. loadPendingDeployments('dt_deployments', Resize);
  63. }
  64. }
  65. function refreshCurrentTab(Resize) {
  66. loadTab(tabView.get('activeIndex'), Resize);
  67. }
  68. // Query Tab
  69. var tabQuery;
  70. function setQueryActionState(DisableActionButtons) {
  71. disableActions = DisableActionButtons;
  72. switch (tabView.get('activeIndex')) {
  73. case 0:
  74. document.getElementById('buttonDeleteQuery1').disabled = disableActions;
  75. document.getElementById('buttonAddAlias1').disabled = disableActions;
  76. document.getElementById('buttonSuspendQueries1').disabled = disableActions;
  77. break;
  78. case 1:
  79. document.getElementById('buttonDeleteQuery2').disabled = disableActions;
  80. document.getElementById('buttonAddAlias2').disabled = disableActions;
  81. break;
  82. case 2:
  83. document.getElementById('buttonDeleteQuery3').disabled = disableActions;
  84. document.getElementById('buttonAddAlias3').disabled = disableActions;
  85. document.getElementById('buttonSuspendQueries3').disabled = disableActions;
  86. break;
  87. }
  88. }
  89. function changeQueryTab(Index)
  90. {
  91. switch (Index)
  92. {
  93. case 1:
  94. loadAliases(CurrentQueryName, "dtqueryaliases", true);
  95. break;
  96. case 2:
  97. loadDataFiles(CurrentQueryName, 'dtqueryfiles', 15, true);
  98. break;
  99. case 3:
  100. loadSuperFiles(CurrentQueryName, 'dtquerysuperfiles', 15, true);
  101. break;
  102. case 4:
  103. var LibraryName = CurrentQueryName.substring(0, CurrentQueryName.lastIndexOf('.'));
  104. loadQueriesUsingLibrary(LibraryName, 'dtlibqueries');
  105. }
  106. }
  107. // DataFiles Tab
  108. var tabDataFiles;
  109. var tabQueryDataFiles;
  110. // Query Panel
  111. var queryPanel, actionPanel, confirmationPanel;
  112. var openPanel;
  113. var ShowDeployTab = 0;
  114. function init() {
  115. // Instantiate a Panel from markup
  116. /*
  117. var loader = new YAHOO.util.YUILoader({
  118. require: ["treeview", "button", "animation", "autocomplete"],
  119. base: '/esp/files/yui/build/',
  120. loadOptional: false,
  121. combine: true,
  122. filter: "MIN",
  123. allowRollup: true,
  124. //When the loading is all complete, we want to initialize
  125. //our TabView process; we can set this here or pass this
  126. //in as an argument to the insert() method:
  127. onSuccess: function() {
  128. //YAHOO.util.Get.css('yui/build/treeview/assets/css/folders/tree.css');
  129. //YAHOO.util.Get.script('scripts/ws_roxieconfig_left.js');
  130. //YAHOO.util.Get.script('/esp/files/scripts/ws_roxieconfig.js');
  131. }
  132. });
  133. loader.insert();
  134. */
  135. document.getElementById('bd1').style.display = "block";
  136. document.getElementById('tvcontainer').style.display = "block";
  137. tabView = new YAHOO.widget.TabView('tvcontainer');
  138. tabView.on('activeIndexChange', function(e) { loadTab(e.newValue) });
  139. document.getElementById('tvcontainer').style.display = 'block';
  140. document.getElementById('bd1').style.display = 'block';
  141. tabQuery = new YAHOO.widget.TabView('tvquery');
  142. document.getElementById('tvquery').style.display = '';
  143. tabDataFiles = new YAHOO.widget.TabView('tvdatafiles');
  144. document.getElementById('tvdatafiles').style.display = '';
  145. tabQueryDataFiles = new YAHOO.widget.TabView('tvquerydata');
  146. document.getElementById('tvquerydata').style.display = '';
  147. tabQuery.on('activeIndexChange', function(e) { changeQueryTab(e.newValue) });
  148. confirmationPanel = new YAHOO.widget.Panel("ConfirmationPanel", { width: "320px", height: "320px", modal: true, visible: false, fixedcenter: true });
  149. document.getElementById('ConfirmationPanel').style.display = 'block';
  150. confirmationPanel.render();
  151. actionPanel = new YAHOO.widget.Panel("ActionPanel", { width: "800px", visible: false, fixedcenter: true, constraintoviewport: true });
  152. document.getElementById('ActionPanel').style.display = 'block';
  153. actionPanel.render();
  154. loadTab(ShowDeployTab);
  155. };
  156. YAHOO.util.Event.addListener(window, "load", init);
  157. var CurrentQueryName;
  158. var notifyRoxie = true;
  159. function setNotifyRoxie(Setting) {
  160. notifyRoxie = Setting;
  161. for (var i = 1; i < 6; i++) {
  162. var chk = document.getElementById('checkNotifyRoxie' + i);
  163. if (chk) {
  164. chk.checked = notifyRoxie;
  165. }
  166. }
  167. }
  168. var queryPanelWidth;
  169. function displayQueryPanel() {
  170. var selectedRow = dt_Queries.getSelectedRows();
  171. if (selectedRow.length > 0) {
  172. if (queryPanel) {
  173. queryPanel = null;
  174. }
  175. queryPanelWidth = YAHOO.util.Dom.getViewportWidth() - 140;
  176. if (queryPanelWidth < 500) {
  177. queryPanelWidth = 500;
  178. }
  179. queryPanel = new YAHOO.widget.Panel("QueryPanel",
  180. { height: (YAHOO.util.Dom.getViewportHeight() > 500 ? YAHOO.util.Dom.getViewportHeight() - 40 : 500), width: queryPanelWidth, visible: false, x: 10, y: 10, constraintoviewport: true
  181. });
  182. //queryPanel.cfg.setProperty("height", (YAHOO.util.Dom.getViewportHeight() > 500 ? YAHOO.util.Dom.getViewportHeight() - 40 : 500));
  183. //queryPanel.cfg.setProperty("width", (YAHOO.util.Dom.getViewportWidth() > 500 ? YAHOO.util.Dom.getViewportWidth() - 140 : 500));
  184. document.getElementById('QueryPanel').style.display = 'block';
  185. queryPanel.render();
  186. var record = dt_Queries.getRecord(selectedRow[0]);
  187. CurrentQueryName = record.getData('QueryId');
  188. document.getElementById('qhd').innerHTML = CurrentQueryName;
  189. tabQuery.set('activeIndex', 0);
  190. var queryDetails = '<table class="yui-skin-sam">';
  191. queryDetails += '<tr><td style="width:150"><b>Name:</b></td><td>&nbsp;' + record.getData('QueryId') + '</td></tr>';
  192. queryDetails += '<tr><td style="width:150"><b>Suspended:</b></td><td>&nbsp;' + (record.getData('Suspended') == "1" ? "Yes" : "No") + '</td></tr>';
  193. queryDetails += '<tr><td style="width:150"><b>Aliases:</b></td><td>&nbsp;' + (record.getData('Aliased') == "1" ? "Yes" : "No") + '</td></tr>';
  194. queryDetails += '<tr><td style="width:150"><b>Library:</b></td><td>&nbsp;' + (record.getData('IsLibrary') == "1" ? "Yes" : "No") + '</td></tr>';
  195. queryDetails += '<tr><td style="width:150"><b>Libraries Used:</b></td><td>&nbsp;' + record.getData('LibrariesUsed') + '</td></tr>';
  196. queryDetails += '<tr><td style="width:150"><b>Comment:</b></td><td>&nbsp;' + record.getData('Comment') + '</td></tr>';
  197. queryDetails += '<tr><td style="width:150"><b>Label:</b></td><td>&nbsp;' + record.getData('Label') + '</td></tr>';
  198. queryDetails += '<tr><td style="width:150"><b>Wuid:</b></td><td>&nbsp;' + record.getData('Wuid') + '</td></tr>';
  199. queryDetails += '<tr><td style="width:150"><b>AssociatedName:</b></td><td>&nbsp;' + record.getData('AssociatedName') + '</td></tr>';
  200. queryDetails += '<tr><td style="width:150"><b>Error:</b></td><td>&nbsp;' + record.getData('Error') + '</td></tr>';
  201. queryDetails += '<tr><td style="width:150"><b>DeployedBy:</b></td><td>&nbsp;' + record.getData('DeployedBy') + '</td></tr>';
  202. queryDetails += '<tr><td style="width:150"><b>PkgQueryVersion:</b></td><td>&nbsp;' + record.getData('PkgQueryVersion') + '</td></tr>';
  203. queryDetails += '<tr><td style="width:150"><b>SuspendedBy:</b></td><td>&nbsp;' + record.getData('SuspendedBy') + '</td></tr>';
  204. queryDetails += '</table>';
  205. document.getElementById('qdetails').innerHTML = queryDetails;
  206. ds_QueryDataFiles = null;
  207. dt_QueryDataFiles = null;
  208. document.getElementById('dtqueryfiles').innerHTML = '';
  209. queryPanel.show();
  210. }
  211. }
  212. // ListDeployedQueries
  213. var QueryRowHandler = function(oArgs) {
  214. displayQueryPanel();
  215. };
  216. var queryUrlClicked = false;
  217. var QueryRowClickedHandler = function(oArgs) {
  218. dt_Queries.onEventSelectRow(oArgs);
  219. if (queryUrlClicked)
  220. {
  221. displayQueryPanel();
  222. queryUrlClicked = false;
  223. }
  224. };
  225. var QueryCellClickedHandler = function(oArgs) {
  226. var record = dt_Queries.getRecord(oArgs.target);
  227. var column = dt_Queries.getColumn(oArgs.target);
  228. if (column && column.field == 'Mark') {
  229. var isChecked = record.getData(column.field) == '1' ? true : false;
  230. record.setData(column.field, isChecked ? '0' : '1');
  231. var records = dt_Queries.getRecordSet().getRecords();
  232. var i_marked = 0;
  233. for (var i = 0; i < records.length; i++) {
  234. if (records[i].getData('Mark') == '1') {
  235. i_marked++;
  236. }
  237. }
  238. if (i_marked == records.length) { // marked all
  239. document.getElementById("markallqueries").checked = true;
  240. }
  241. if (i_marked == 0) { // marked none
  242. document.getElementById("markallqueries").checked = false;
  243. }
  244. var disableActions = i_marked > 0 ? false : true;
  245. setQueryActionState(disableActions);
  246. }
  247. dt_Queries.onEventShowCellEditor(oArgs);
  248. }
  249. function createEntry(sData, oRecord, oColumn, bMasked, DatatableName) {
  250. var d = '<input type=\"' + (bMasked ? 'password' : 'text') + '\" onChange=\"onEditEntryChange(\'' + oColumn.getField() + '\', \'' + oRecord.getId() + '\', this.value, \'' + DatatableName + '\')\" value=\"' + sData + '\" />';
  251. return d;
  252. }
  253. function onEditEntryChange(ColumnName, RecordId, Value, DatatableName) {
  254. switch (DatatableName) {
  255. case "dt_Action":
  256. {
  257. var record = dt_Action.getRecord(RecordId);
  258. record.setData(ColumnName, Value);
  259. break;
  260. }
  261. default:
  262. {
  263. break;
  264. }
  265. }
  266. }
  267. var formatActionInlineEntry = function(elCell, oRecord, oColumn, sData) {
  268. elCell.innerHTML = createEntry(sData, oRecord, oColumn, false, 'dt_Action');
  269. };
  270. var formatUrl = function(elCell, oRecord, oColumn, sData) {
  271. elCell.innerHTML = '<a href="javascript:void(0)" onclick="queryUrlClicked=true;">' + sData + '</a>';
  272. };
  273. var formatBool = function(elCell, oRecord, oColumn, sData) {
  274. elCell.innerHTML = sData == "1" ? "Yes" : "No";
  275. };
  276. var formatCheckboxDisabled = function(elCell, oRecord, oColumn, sData) {
  277. elCell.innerHTML = "&nbsp;";
  278. if (sData == "1") {
  279. YAHOO.util.Dom.addClass(elCell, "yuimenuitem-checked");
  280. }
  281. };
  282. var formatUsesLibraries = function(elCell, oRecord, oColumn, sData) {
  283. elCell.innerHTML = "&nbsp;";
  284. if (sData.length > 0) {
  285. YAHOO.util.Dom.addClass(elCell, "yuimenuitem-checked");
  286. }
  287. }
  288. var formatQueryError = function(elCell, oRecord, oColumn, sData) {
  289. if (sData.length > 0) {
  290. elCell.innerHTML = '<a href="javascript:void(0)" class="cellstatusinformation" title="Query information" onclick="showQueryError(\'' + oRecord.getId() + '\')">&nbsp;</a>';
  291. return;
  292. }
  293. elCell.innerHTML = '';
  294. };
  295. function showQueryError(RecId) {
  296. var recordSet = dt_Queries.getRecordSet();
  297. var record = recordSet.getRecord(RecId);
  298. showInformation(record.getData('QueryId') + ' Status', record.getData('ErrorStatus').replace(/\n/gi, '<br />'));
  299. }
  300. function showInformation(HeaderText, BodyText) {
  301. var handleOk = function() {
  302. statusPanel.hide();
  303. statusPanel = null;
  304. };
  305. if (!statusPanel) {
  306. statusPanel = new YAHOO.widget.SimpleDialog("showDeploymentStatus",
  307. { width: "500px",
  308. fixedcenter: true,
  309. visible: true,
  310. close: true,
  311. effect: {
  312. effect: YAHOO.widget.ContainerEffect.FADE,
  313. duration: 0.25
  314. },
  315. icon: YAHOO.widget.SimpleDialog.ICON_INFO,
  316. constraintoviewport: true,
  317. buttons: [{ text: "Ok", handler: handleOk, isDefault: true}]
  318. });
  319. }
  320. statusPanel.setHeader(HeaderText);
  321. statusPanel.setBody('<div style="text-align:left; height:300px; width:auto; overflow:scroll;">' + BodyText + '</div>');
  322. statusPanel.render("statusdiv");
  323. statusPanel.show();
  324. }
  325. function openGraph(QueryName)
  326. {
  327. window.open('/ws_roxieconfig/GVCAjaxGraph?Name=' + QueryName,'', 'menubar = no');
  328. return;
  329. }
  330. function markAllQueries() {
  331. var records = dt_Queries.getRecordSet().getRecords();
  332. var globalMark = document.getElementById('markallqueries').checked;
  333. var i_marked = 0;
  334. for (var i = 0; i < records.length; i++) {
  335. records[i].setData('Mark', globalMark);
  336. if (globalMark) {
  337. i_marked++;
  338. }
  339. }
  340. dt_Queries.render();
  341. setQueryActionState(i_marked > 0 ? false : true);
  342. }
  343. var formatGraphLink = function(elCell, oRecord, oColumn, oData) {
  344. elCell.innerHTML = '<a title="Graph" href="javascript:void(0);" onclick="openGraph(\'' + oRecord.getData('QueryId') + '\')" class="graphlink">&nbsp;</a>';
  345. };
  346. var formatInlineEditCheckbox = function(el, oRecord, oColumn, oData) {
  347. var bChecked = oData == '1' ? true : false;
  348. bChecked = (bChecked) ? " checked=\"checked\"" : "";
  349. el.innerHTML = "<input type=\"checkbox\"" + bChecked +
  350. " class=\"" + YAHOO.widget.DataTable.CLASS_CHECKBOX + "\" />";
  351. }
  352. YAHOO.widget.DataTable._bDynStylesFallback = true
  353. function loadQueries(QueryType, Resize) {
  354. /*
  355. if (Resize) {
  356. debugger;
  357. dt_Queries.setAttributeConfig("height", "200px", true);
  358. dt_Queries.render();
  359. //dt_Queries.setAttributeConfig("height", (YAHOO.util.Dom.getViewportHeight() - 200) + "px", true);
  360. //dt_Queries.cfg.setProperty("width", (YAHOO.util.Dom.getViewportWidth() - 25) + "px");
  361. return;
  362. }
  363. */
  364. if (ds_FullQueries && dt_Queries) {
  365. dt_Queries.destroy();
  366. dt_Queries = null;
  367. }
  368. if (Resize) {
  369. createQueryDataTable(QueryType);
  370. filterDeployedQueries();
  371. return;
  372. }
  373. var connectionCallback = {
  374. success: function(o) {
  375. var xmlDoc = o.responseXML;
  376. ds_FullQueries = new YAHOO.util.DataSource(xmlDoc);
  377. ds_FullQueries.responseType = YAHOO.util.DataSource.TYPE_XML;
  378. /*
  379. var test_arr = [
  380. { QueryId: "123", QueryPriority: "1", Suspended: "1", Aliased: "1", IsLibrary: "0", DeployedBy: "Jo", Wuid: "Test", Error: "", ErrorStatus: "", Comment: "", LibrariesUsed: "", Label: "Test", AssociatedName: "Test", PkgQueryVersion: "", SuspendedBy: "" },
  381. { QueryId: "456", QueryPriority: "1", Suspended: "1", Aliased: "1", IsLibrary: "0", DeployedBy: "Jo", Wuid: "Test", Error: "", ErrorStatus: "", Comment: "", LibrariesUsed: "", Label: "Test", AssociatedName: "Test", PkgQueryVersion: "", SuspendedBy: "" }
  382. ];
  383. ds_FullQueries = new YAHOO.util.DataSource(test_arr);
  384. ds_FullQueries.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
  385. */
  386. ds_FullQueries.responseSchema = {
  387. resultNode: "QueryInfo",
  388. fields: ["QueryId", "QueryPriority", "Suspended", "Aliased", "IsLibrary", "DeployedBy", "Wuid", "Error", "ErrorStatus", "Comment", "LibrariesUsed", "Label", "AssociatedName", "PkgQueryVersion", "SuspendedBy"]
  389. };
  390. createQueryDataTable(QueryType);
  391. filterDeployedQueries();
  392. checkForException(xmlDoc);
  393. document.getElementById("markallqueries").disabled = false;
  394. },
  395. failure: function(o) {
  396. alert('Failure:' + o.statusText);
  397. }
  398. };
  399. function getCheckboxValue(ElementId) {
  400. if (document.getElementById(ElementId)) {
  401. return document.getElementById(ElementId).checked ? '1' : '';
  402. }
  403. return "";
  404. }
  405. function createQueryDataTable(QueryType) {
  406. var myColumnDefs = [
  407. { key: "Mark", label: "<input type=\"checkbox\" id=\"markallqueries\" onclick=\"markAllQueries();\" disabled=\"true\" />", formatter: formatInlineEditCheckbox, width: 40, resizable: false },
  408. { key: "QueryId", label: "Name", sortable: true, formatter: formatUrl, width: (isFF ? 320 : 380), resizeable: false },
  409. { key: "ErrorStatus", label: "Info", formatter: formatQueryError, width: 40, resizable: false },
  410. { key: "Graph", label: "<span title=\"Graph\">G</span>", formatter: formatGraphLink, width: (isFF ? 20 : 30), resizable: false },
  411. { key: "QueryPriority", label: "Priority", width: 60, resizable: false },
  412. { key: "Suspended", sortable: true, label: "<span title=\"Is Suspended\">S</span>", parser: "boolean", formatter: formatCheckboxDisabled, width: (isFF ? 20 : 30), resizable: false },
  413. { key: "Aliased", sortable: true, label: "<span title=\"Is Aliased\">A</span>", parser: "boolean", formatter: formatCheckboxDisabled, width: (isFF ? 20 : 30), resizable: false },
  414. { key: "IsLibrary", sortable: true, label: "<span title=\"Is a Library\">L</span>", parser: "boolean", formatter: formatCheckboxDisabled, width: (isFF ? 20 : 30), resizable: false },
  415. { key: "LibrariesUsed", label: "<span title=\"Uses Library\">UL</span>", formatter: formatUsesLibraries, width: (isFF ? 20 : 30), resizable: false },
  416. { key: "DeployedBy", sortable: true, label: "Deployed by", width: 120, resizable: false },
  417. { key: "Wuid", sortable: true, label: "Workunit", width: 200, resizable: false }
  418. ];
  419. //dt_Queries = new YAHOO.widget.DataView("dt_" + QueryType, myColumnDefs, ds_FullQueries, { height: (YAHOO.util.Dom.getViewportHeight() - 200) + "px", width: (YAHOO.util.Dom.getViewportWidth() - 25) + "px", paginator: new YAHOO.widget.Paginator({ rowsPerPage: 50 })});
  420. dt_Queries = new YAHOO.widget.DataView("dt_" + QueryType, myColumnDefs, ds_FullQueries, { width: "100%", paginator: new YAHOO.widget.Paginator({ rowsPerPage: 50 })});
  421. dt_Queries.set("selectionMode", "single");
  422. //dt_Queries.subscribe("rowMouseoverEvent", dt_Queries.onEventHighlightRow);
  423. //dt_Queries.subscribe("rowMouseoutEvent", dt_Queries.onEventUnhighlightRow);
  424. dt_Queries.subscribe("rowDblclickEvent", QueryRowHandler);
  425. dt_Queries.subscribe("rowClickEvent", QueryRowClickedHandler);
  426. dt_Queries.subscribe("cellClickEvent", QueryCellClickedHandler);
  427. }
  428. //document.getElementById('dt_' + QueryType).innerHTML = '<img src="/esp/files/img/loading.gif" style="height:18px;" />';
  429. if (dt_Queries) {
  430. dt_Queries.destroy();
  431. dt_Queries = null;
  432. }
  433. queryFilter.QueryName = document.getElementById(QueryType + 'Filter').value;
  434. queryFilter.Suspended = getCheckboxValue(QueryType + 'FilterSuspended');
  435. queryFilter.Aliased = getCheckboxValue(QueryType + 'FilterAliases');
  436. queryFilter.IsLibrary = getCheckboxValue(QueryType + 'FilterLibrary');
  437. queryFilter.LibrariesUsed = getCheckboxValue(QueryType + 'FilterUsesLibrary');
  438. ds_FullQueries = YAHOO.util.DataSource();
  439. ds_Queries = YAHOO.util.DataSource();
  440. createQueryDataTable(QueryType);
  441. dt_Queries.showTableMessage(dt_Queries.get("MSG_LOADING"), dt_Queries.CLASS_LOADING);
  442. var postBody = '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding" xmlns="http://webservices.seisint.com/ws_roxieconfig"><soap:Body><' + QueryType + '><excludeAliasNames>0</excludeAliasNames><excludeQueryNames>0</excludeQueryNames><excludeLibraryNames>0</excludeLibraryNames><excludeDataOnlyNames>1</excludeDataOnlyNames></' + QueryType + '></soap:Body></soap:Envelope>';
  443. YAHOO.util.Connect.initHeader("SOAPAction", "ws_roxieconfig/" + QueryType + "?ver_=" + WS_ROXIECONFIG_VER);
  444. YAHOO.util.Connect.initHeader("Content-Type", "text/xml");
  445. YAHOO.util.Connect._use_default_post_header = false;
  446. var getXML = YAHOO.util.Connect.asyncRequest("POST",
  447. "/ws_roxieconfig/" + QueryType + "?ver_=" + WS_ROXIECONFIG_VER,
  448. connectionCallback, postBody);
  449. return {
  450. oDS: ds_FullQueries,
  451. oDT: dt_Queries
  452. };
  453. }
  454. function checkForException(xmlDoc) {
  455. var exceptions = xmlDoc.getElementsByTagName('Exception');
  456. if (exceptions && exceptions.length > 0) {
  457. var message = exceptions[0].getElementsByTagName('Message')[0].childNodes[0].nodeValue;
  458. showInformation("Error Loading", message);
  459. }
  460. }
  461. // ListDeployedAliases
  462. var ds_Aliases, dt_Aliases;
  463. var AliasRowHandler = function(oArgs) {
  464. dt_Aliases.onEventSelectRow(oArgs);
  465. //var selectedRow = dt_Aliases.getSelectedRows();
  466. //if (selectedRow.length > 0)
  467. //{
  468. // var record = dt_Aliases.getRecord(selectedRow[0]);
  469. //}
  470. };
  471. var AliasCellClickedHandler = function(oArgs) {
  472. var record = dt_Aliases.getRecord(oArgs.target);
  473. var column = dt_Aliases.getColumn(oArgs.target);
  474. if (column && column.field == 'Mark') {
  475. record.setData(column.field, record.getData(column.field) == '1' ? '0' : '1');
  476. }
  477. var records = dt_Aliases.getRecordSet().getRecords();
  478. var i_marked = 0;
  479. for (var i = 0; i < records.length; i++) {
  480. if (records[i].getData('Mark') == '1') {
  481. i_marked++;
  482. }
  483. }
  484. if (i_marked == records.length) { // marked all
  485. document.getElementById("markallaliases").checked = true;
  486. }
  487. if (i_marked == 0) { // marked none
  488. document.getElementById("markallaliases").checked = false;
  489. }
  490. var disableActions = i_marked > 0 ? false : true;
  491. if (disableActions) {
  492. document.getElementById('buttonDeleteAliases').disabled = true;
  493. } else {
  494. document.getElementById('buttonDeleteAliases').disabled = false;
  495. }
  496. }
  497. function markAllAliases() {
  498. var globalMark = document.getElementById('markallaliases').checked;
  499. var records = dt_Aliases.getRecordSet().getRecords();
  500. for (var i = 0; i < records.length; i++) {
  501. records[i].setData('Mark', globalMark);
  502. }
  503. dt_Aliases.render();
  504. }
  505. function loadAliases(QueryName, ElementId, QueryPage, Resize) {
  506. if (!document.getElementById('checkNotifyRoxie4')) {
  507. var d = document.createElement("span");
  508. var notifyChecked = '';
  509. if (notifyRoxie) {
  510. notifyChecked = ' checked="true"';
  511. }
  512. d.innerHTML = '<input type="checkbox" name="checkNotifyRoxie5" id="checkNotifyRoxie4" ' + notifyChecked + ' onclick="setNotifyRoxie(this.checked);">Notify Roxie?</input>';
  513. document.getElementById('aliasactions').appendChild(d);
  514. }
  515. if (Resize) {
  516. createAliasDataTable(ElementId);
  517. filterAliases();
  518. return;
  519. }
  520. var connectionCallback = {
  521. success: function(o) {
  522. var xmlDoc = o.responseXML;
  523. ds_Aliases = new YAHOO.util.DataSource(xmlDoc);
  524. ds_Aliases.responseType = YAHOO.util.DataSource.TYPE_XML;
  525. ds_Aliases.responseSchema = {
  526. resultNode: "AliasInfo",
  527. fields: ["QueryAlias","QueryId"]
  528. };
  529. createAliasDataTable(ElementId);
  530. dt_Aliases.subscribe("rowMouseoverEvent", dt_Aliases.onEventHighlightRow);
  531. dt_Aliases.subscribe("rowMouseoutEvent", dt_Aliases.onEventUnhighlightRow);
  532. dt_Aliases.set("selectionMode","multiple");
  533. dt_Aliases.subscribe("rowClickEvent", AliasRowHandler);
  534. dt_Aliases.subscribe("cellClickEvent", AliasCellClickedHandler);
  535. checkForException(xmlDoc);
  536. },
  537. failure: function(o) {
  538. alert('Failure:' + o.statusText);
  539. }
  540. };
  541. function createAliasDataTable(ElementId) {
  542. var myColumnDefs = [
  543. { key: "Mark", label: "<input type=\"checkbox\" id=\"markallaliases\" onclick=\"markAllAliases();\" />", formatter: formatInlineEditCheckbox, width: 40, resizable: false },
  544. { key: "QueryAlias", label: "Alias", sortable: true, width: 350 },
  545. { key: "QueryId", label: "Query", width: 350 }
  546. ];
  547. if (QueryPage) {
  548. dt_Aliases = new YAHOO.widget.ScrollingDataTable(ElementId, myColumnDefs, ds_Aliases, { height: (YAHOO.util.Dom.getViewportHeight() - 155) + "px", width: (queryPanel.cfg.getProperty('width') - 65) + "px" });
  549. } else {
  550. dt_Aliases = new YAHOO.widget.DataView(ElementId, myColumnDefs, ds_Aliases, { height: (YAHOO.util.Dom.getViewportHeight() - 140) + "px", width: (YAHOO.util.Dom.getViewportWidth() - 25) + "px" });
  551. }
  552. }
  553. if (dt_Aliases) {
  554. dt_Aliases.destroy();
  555. dt_Aliases = null;
  556. ds_Aliases = null;
  557. }
  558. ds_Aliases = YAHOO.util.DataSource();
  559. createAliasDataTable(ElementId);
  560. dt_Aliases.showTableMessage(dt_Aliases.get("MSG_LOADING"), dt_Aliases.CLASS_LOADING);
  561. var postBody = '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding" xmlns="http://webservices.seisint.com/ws_roxieconfig"><soap:Body><ListDeployedAliasesRequest><QueryId>' + QueryName + '</QueryId></ListDeployedAliasesRequest></soap:Body></soap:Envelope>';
  562. YAHOO.util.Connect.initHeader("SOAPAction", "ws_roxieconfig/ListDeployedAliases?ver_=" + WS_ROXIECONFIG_VER);
  563. YAHOO.util.Connect.initHeader("Content-Type", "text/xml");
  564. YAHOO.util.Connect._use_default_post_header = false;
  565. var getXML = YAHOO.util.Connect.asyncRequest("POST",
  566. "/ws_roxieconfig/ListDeployedAliases",
  567. connectionCallback, postBody);
  568. return {
  569. oDS: ds_Aliases,
  570. oDT: dt_Aliases
  571. };
  572. }
  573. function filterAliases() {
  574. if (document.getElementById('AliasFilter').value.length > 0) {
  575. dt_Aliases.Filter([{ Value: document.getElementById('AliasFilter').value, ColumnKey: "Alias"}]);
  576. }
  577. else {
  578. dt_Aliases.ClearFilters();
  579. }
  580. }
  581. // ListDataFilesUsedByQuery
  582. function clearDataFiles()
  583. {
  584. document.getElementById('dtindexes').innerHTML = '';
  585. setQueryActionState(true);
  586. }
  587. var DataFilesRowHandler = function(oArgs) {
  588. dt_IndexFiles.onEventSelectRow(oArgs);
  589. //var selectedRow = dt_IndexFiles.getSelectedRows();
  590. //if (selectedRow.length > 0)
  591. //{
  592. // var record = dt_IndexFiles.getRecord(selectedRow[0]);
  593. //}
  594. };
  595. // Define a custom row formatter function
  596. var parseEspNumber = function(oArgs)
  597. {
  598. //return oArgs.replace(',', ''));
  599. return YAHOO.util.DataSourceBase.parseNumber(oArgs.replace(/,/g, ''));
  600. };
  601. var ds_IndexFiles, dt_IndexFiles;
  602. var ds_DataFiles, dt_DataFiles;
  603. function loadDataFiles(QueryName, ElementId, RowsPerPage, QueryPage, Resize)
  604. {
  605. if (Resize) {
  606. createDataFileDataTable(ElementId);
  607. filterDataFiles();
  608. filterIndexFiles();
  609. return;
  610. }
  611. var connectionCallback = {
  612. success: function(o) {
  613. var xmlDocMain = o.responseXML;
  614. var xmlIndexes = xmlDocMain.getElementsByTagName('IndexFiles')[0];
  615. var xmlDataFiles = xmlDocMain.getElementsByTagName('DataFiles')[0];
  616. var nodeTotals = xmlDocMain.getElementsByTagName('Totals');
  617. if (nodeTotals.length > 0) {
  618. var xmlTotalRecords = nodeTotals[0].getElementsByTagName('RecordCount')[0];
  619. if (xmlTotalRecords) {
  620. document.getElementById(ElementId + "Records").innerHTML = xmlTotalRecords.childNodes[0].nodeValue;
  621. }
  622. var xmlTotalSize = nodeTotals[0].getElementsByTagName('FileSize');
  623. if (xmlTotalSize.length > 0) {
  624. document.getElementById(ElementId + "Size").innerHTML = xmlTotalSize[0].childNodes[0].nodeValue;
  625. }
  626. }
  627. // Indexes
  628. if (xmlIndexes) {
  629. ds_IndexFiles = new YAHOO.util.DataSource(xmlIndexes);
  630. ds_IndexFiles.responseType = YAHOO.util.DataSource.TYPE_XML;
  631. ds_IndexFiles.responseSchema = {
  632. resultNode: "FileInfo",
  633. fields: [{ key: "Name" }, { key: "FileSize", parser: parseEspNumber }, { key: "RecordCount", parser: parseEspNumber }, { key: "CopiedBy"}]
  634. };
  635. }
  636. else {
  637. ds_Indexes = new YAHOO.util.DataSource();
  638. }
  639. // Data Files
  640. if (xmlDataFiles) {
  641. ds_DataFiles = new YAHOO.util.DataSource(xmlDataFiles);
  642. ds_DataFiles.responseType = YAHOO.util.DataSource.TYPE_XML;
  643. ds_DataFiles.responseSchema = {
  644. resultNode: "FileInfo",
  645. fields: [{ key: "Name" }, { key: "FileSize", parser: parseEspNumber }, { key: "RecordCount", parser: parseEspNumber }, { key: "CopiedBy"}]
  646. };
  647. }
  648. else {
  649. ds_DataFiles = new YAHOO.util.DataSource();
  650. }
  651. createDataFileDataTable(ElementId);
  652. dt_IndexFiles.set("selectionMode", "single");
  653. dt_IndexFiles.subscribe("rowClickEvent", DataFilesRowHandler);
  654. dt_DataFiles.subscribe("rowMouseoverEvent", dt_DataFiles.onEventHighlightRow);
  655. dt_DataFiles.subscribe("rowMouseoutEvent", dt_DataFiles.onEventUnhighlightRow);
  656. dt_DataFiles.set("selectionMode", "single");
  657. dt_DataFiles.subscribe("rowClickEvent", DataFilesRowHandler);
  658. checkForException(xmlDocMain);
  659. },
  660. failure: function(o) {
  661. alert('Failure:' + o.statusText);
  662. }
  663. };
  664. function createDataFileDataTable(ElementId) {
  665. var oConfigs = {
  666. height: (YAHOO.util.Dom.getViewportHeight() - 195) + "px", width: (YAHOO.util.Dom.getViewportWidth() - 35) + "px"
  667. //initialRequest: "results=504"
  668. };
  669. var indexColumnDefs = [
  670. //{ key: "Mark", label: "<input type=\"checkbox\" id=\"markallindexes\" onclick=\"markAllIndexes();\" />", formatter: formatInlineEditCheckbox, width: 20 },
  671. {key: "Name", label: "Name", sortable: true, width: 600 },
  672. { key: "FileSize", label: "Size", sortable: true, formatter: "number", width: 80 },
  673. { key: "RecordCount", label: "Count", sortable: true, formatter: "number", width: 80 }
  674. ];
  675. var dataFileColumnDefs = [
  676. //{ key: "Mark", label: "<input type=\"checkbox\" id=\"markalldatafiles\" onclick=\"markAllDataFiles();\" />", formatter: formatInlineEditCheckbox, width: 20 },
  677. {key: "Name", label: "Name", sortable: true, width: 600 },
  678. { key: "FileSize", label: "Size", sortable: true, formatter: "number", width: 80 },
  679. { key: "RecordCount", label: "Count", sortable: true, formatter: "number", width: 80 }
  680. ];
  681. if (QueryPage) {
  682. dt_IndexFiles = new YAHOO.widget.ScrollingDataTable(ElementId, indexColumnDefs, ds_IndexFiles, { height: (YAHOO.util.Dom.getViewportHeight() - 240) + "px", width: (queryPanel.cfg.getProperty('width') - 80) + "px" });
  683. dt_DataFiles = new YAHOO.widget.ScrollingDataTable(ElementId + "2", dataFileColumnDefs, ds_DataFiles, { height: (YAHOO.util.Dom.getViewportHeight() - 240) + "px", width: (queryPanel.cfg.getProperty('width') - 80) + "px" });
  684. } else {
  685. dt_IndexFiles = new YAHOO.widget.DataView(ElementId, indexColumnDefs, ds_IndexFiles, oConfigs);
  686. dt_DataFiles = new YAHOO.widget.DataView(ElementId + "2", dataFileColumnDefs, ds_DataFiles, oConfigs);
  687. }
  688. dt_IndexFiles.subscribe("rowMouseoverEvent", dt_IndexFiles.onEventHighlightRow);
  689. dt_IndexFiles.subscribe("rowMouseoutEvent", dt_IndexFiles.onEventUnhighlightRow);
  690. }
  691. if (dt_DataFiles) {
  692. dt_DataFiles.destroy();
  693. dt_DataFiles = null;
  694. ds_DataFiles = null;
  695. }
  696. if (dt_IndexFiles) {
  697. dt_IndexFiles.destroy();
  698. ds_IndexFiles = null;
  699. }
  700. ds_IndexFiles = YAHOO.util.DataSource();
  701. ds_DataFiles = YAHOO.util.DataSource();
  702. createDataFileDataTable(ElementId);
  703. dt_IndexFiles.showTableMessage(dt_IndexFiles.get("MSG_LOADING"), dt_IndexFiles.CLASS_LOADING);
  704. dt_DataFiles.showTableMessage(dt_DataFiles.get("MSG_LOADING"), dt_DataFiles.CLASS_LOADING);
  705. var postBody = '<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding" xmlns="http://webservices.seisint.com/ws_roxieconfig"><soap:Body><ListFilesUsedByQueryRequest><QueryId>' + QueryName + '</QueryId><excludeSuperFileNames>1</excludeSuperFileNames><excludeDataFileNames>0</excludeDataFileNames></ListFilesUsedByQueryRequest></soap:Body></soap:Envelope>';
  706. YAHOO.util.Connect.initHeader("SOAPAction", "ws_roxieconfig/ListFilesUsedByQuery?ver_=" + WS_ROXIECONFIG_VER);
  707. YAHOO.util.Connect.initHeader("Content-Type", "text/xml");
  708. YAHOO.util.Connect._use_default_post_header = false;
  709. var getXML = YAHOO.util.Connect.asyncRequest("POST",
  710. "/ws_roxieconfig/ListFilesUsedByQuery?ver_=" + WS_ROXIECONFIG_VER,
  711. connectionCallback, postBody);
  712. return {
  713. oDS: ds_IndexFiles,
  714. oDT: dt_IndexFiles
  715. };
  716. }
  717. function filterIndexFiles() {
  718. if (document.getElementById('IndexFilesFilter').value.length > 0) {
  719. dt_IndexFiles.Filter([{ Value: document.getElementById('IndexFilesFilter').value, ColumnKey: "Name"}]);
  720. }
  721. else {
  722. dt_IndexFiles.ClearFilters();
  723. }
  724. }
  725. function filterDataFiles() {
  726. if (document.getElementById('DataFilesFilter').value.length > 0) {
  727. dt_DataFiles.Filter([{ Value: document.getElementById('DataFilesFilter').value, ColumnKey: "Name"}]);
  728. }
  729. else {
  730. dt_DataFiles.ClearFilters();
  731. }
  732. }
  733. function markAllIndexes() {
  734. var records = dt_IndexFiles.getRecordSet().getRecords();
  735. var globalMark = document.getElementById('markallindexes').checked;
  736. for (var i = 0; i < records.length; i++) {
  737. records[i].setData('Mark', globalMark);
  738. }
  739. dt_IndexFiles.render();
  740. }
  741. // Load Super Files
  742. var ds_SuperFiles, dt_SuperFiles;
  743. function loadSuperFiles(QueryName, ElementId, RowsPerPage, QueryPage, Resize)
  744. {
  745. if (Resize) {
  746. createSuperFilesDataTable();
  747. filterSuperFiles();
  748. return;
  749. }
  750. var connectionCallback = {
  751. success: function(o) {
  752. var xmlDocMain = o.responseXML;
  753. // SuperFiles
  754. ds_SuperFiles = new YAHOO.util.DataSource(xmlDocMain);
  755. ds_SuperFiles.responseType = YAHOO.util.DataSource.TYPE_XML;
  756. ds_SuperFiles.responseSchema = {
  757. resultNode: "SuperFileInfo",
  758. fields: [{ key: "Name" }, { key: "FileSize", parser: parseEspNumber }, { key: "RecordCount", parser: Number }, { key: "CopiedBy"}]
  759. };
  760. createSuperFilesDataTable();
  761. dt_SuperFiles.subscribe("rowMouseoverEvent", dt_SuperFiles.onEventHighlightRow);
  762. dt_SuperFiles.subscribe("rowMouseoutEvent", dt_SuperFiles.onEventUnhighlightRow);
  763. dt_SuperFiles.set("selectionMode", "single");
  764. dt_SuperFiles.subscribe("rowClickEvent", dt_SuperFiles.onEventSelectRow);
  765. checkForException(xmlDocMain);
  766. },
  767. failure: function(o) {
  768. alert('Failure:' + o.statusText);
  769. }
  770. };
  771. function createSuperFilesDataTable() {
  772. var oConfigs = {
  773. height: (YAHOO.util.Dom.getViewportHeight() - 140) + "px", width: (YAHOO.util.Dom.getViewportWidth() - 25) + "px"
  774. //initialRequest: "results=504"
  775. };
  776. var myColumnDefs = [
  777. //{ key: "Mark", label: "<input type=\"checkbox\" id=\"markallsuperfiles\" onclick=\"markAllSuperFiles();\" />", formatter: formatInlineEditCheckbox, width: 20 },
  778. {key: "Name", label: "Name", sortable: true, width: 600 },
  779. { key: "Version", label: "Version", sortable: true, formatter: "number", width: 100 }
  780. ];
  781. if (QueryPage) {
  782. dt_SuperFiles = new YAHOO.widget.ScrollingDataTable(ElementId, myColumnDefs, ds_SuperFiles, { height: (YAHOO.util.Dom.getViewportHeight() - 150) + "px", width: (queryPanel.cfg.getProperty('width') - 70) + "px" });
  783. } else {
  784. dt_SuperFiles = new YAHOO.widget.DataView(ElementId, myColumnDefs, ds_SuperFiles, oConfigs);
  785. }
  786. }
  787. if (dt_SuperFiles) {
  788. dt_SuperFiles.destroy();
  789. dt_SuperFiles = null;
  790. ds_SuperFiles = null;
  791. }
  792. ds_SuperFiles = YAHOO.util.DataSource();
  793. createSuperFilesDataTable();
  794. dt_SuperFiles.showTableMessage(dt_SuperFiles.get("MSG_LOADING"), dt_SuperFiles.CLASS_LOADING);
  795. var postBody = '<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding" xmlns="http://webservices.seisint.com/ws_roxieconfig"><soap:Body><ListFilesUsedByQueryRequest><QueryId>' + QueryName + '</QueryId><excludeSuperFileNames>0</excludeSuperFileNames><excludeDataFileNames>1</excludeDataFileNames></ListFilesUsedByQueryRequest></soap:Body></soap:Envelope>';
  796. YAHOO.util.Connect.initHeader("SOAPAction", "ws_roxieconfig/ListFilesUsedByQuery?ver_=" + WS_ROXIECONFIG_VER);
  797. YAHOO.util.Connect.initHeader("Content-Type", "text/xml");
  798. YAHOO.util.Connect._use_default_post_header = false;
  799. var getXML = YAHOO.util.Connect.asyncRequest("POST",
  800. "/ws_roxieconfig/ListFilesUsedByQuery?ver_=" + WS_ROXIECONFIG_VER,
  801. connectionCallback, postBody);
  802. return {
  803. oDS: ds_IndexFiles,
  804. oDT: dt_IndexFiles
  805. };
  806. }
  807. function filterSuperFiles() {
  808. if (document.getElementById('SuperFilesFilter').value.length > 0) {
  809. dt_SuperFiles.Filter([{ Value: document.getElementById('SuperFilesFilter').value, ColumnKey: "Name"}]);
  810. }
  811. else {
  812. dt_SuperFiles.ClearFilters();
  813. }
  814. }
  815. function markAllSuperFiles() {
  816. var records = dt_SuperFiles.getRecordSet().getRecords();
  817. var globalMark = document.getElementById('markallsuperfiles').checked;
  818. for (var i = 0; i < records.length; i++) {
  819. records[i].setData('Mark', globalMark);
  820. }
  821. dt_SuperFiles.render();
  822. }
  823. //
  824. function hideConfirmationPanel()
  825. {
  826. confirmationPanel.hide();
  827. }
  828. function hideActionPanel()
  829. {
  830. actionPanel.hide();
  831. }
  832. function addAlias()
  833. {
  834. actionPanel.show();
  835. }
  836. // Query Actions
  837. function deleteQueries()
  838. {
  839. var queries = new Array();
  840. var formatAliasLabel = function(elCell, oRecord, oColumn, sData) {
  841. elCell.innerHTML = '<input type="text" value="' + sData + '" />';
  842. };
  843. var myColumnDefs = [
  844. { key: "QueryId", label: "Query Name", sortable: true, width: 400 },
  845. { key: "Response", label: "Response", width: 300 }
  846. ];
  847. var records = dt_Queries.getRecordSet().getRecords();
  848. var i_added = 0;
  849. for (var i = 0; i < records.length; i++) {
  850. if (records[i].getData('Mark') == '1') {
  851. queries[i_added] = { QueryId: records[i].getData('QueryId'), Response: '' };
  852. i_added++;
  853. }
  854. }
  855. ds_Action = new YAHOO.util.LocalDataSource(queries);
  856. ds_Action.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
  857. ds_Action.responseSchema = {
  858. fields: ["QueryId", "Response"]
  859. };
  860. dt_Action = new YAHOO.widget.ScrollingDataTable('dt_Action', myColumnDefs, ds_Action, { height: "400px" });
  861. performAction("Delete Queries", doDeleteQueries, "750px");
  862. }
  863. function doDeleteQueries() {
  864. modifyQueries('delete', 'ListDeployedQueries');
  865. }
  866. function suspendQueries() {
  867. var recordSet = dt_Queries.getRecordSet();
  868. confirmMarked('ConfirmationPanel', 'QueryName', recordSet, 'Suspend these Queries?', doSuspendQueries);
  869. }
  870. function doSuspendQueries() {
  871. modifyQueries('suspend', 'ListDeployedQueries');
  872. }
  873. function checkForEnter(e) {
  874. if (!e) {
  875. alert('no e?');
  876. }
  877. if (e && e.keyCode == 13) {
  878. doFilter(e);
  879. }
  880. return !(window.event && window.event.keyCode == 13);
  881. }
  882. function doFilter(e) {
  883. var srcElement = e.srcElement;
  884. if (!srcElement) {
  885. srcElement = e.target;
  886. while (srcElement.nodeType != srcElement.ELEMENT_NODE) {
  887. srcElement = e.parentNode;
  888. }
  889. }
  890. switch (srcElement.id) {
  891. case "ListDeployedQueriesFilter":
  892. queryFilter.QueryName = srcElement.value;
  893. filterDeployedQueries();
  894. break;
  895. case "ListDeployedQueriesFilterSuspended":
  896. case "ListDeployedDataOnlyQueriesFilterSuspended":
  897. case "ListDeployedLibraryQueriesFilterSuspended":
  898. queryFilter.Suspended = srcElement.checked ? '1' : '';
  899. filterDeployedQueries();
  900. break;
  901. case "ListDeployedQueriesFilterAliases":
  902. case "ListDeployedDataOnlyQueriesFilterAliases":
  903. case "ListDeployedLibraryQueriesFilterAliases":
  904. queryFilter.Aliased = srcElement.checked ? '1' : '';
  905. filterDeployedQueries();
  906. break;
  907. case "ListDeployedQueriesFilterLibrary":
  908. queryFilter.IsLibrary = srcElement.checked ? '1' : '';
  909. filterDeployedQueries();
  910. break;
  911. case "ListDeployedQueriesFilterUsesLibrary":
  912. case "ListDeployedLibraryQueriesFilterUsesLibrary":
  913. queryFilter.LibrariesUsed = srcElement.checked ? '1' : '';
  914. filterDeployedQueries();
  915. break;
  916. case "ListDeployedDataOnlyQueriesFilter":
  917. queryFilter.QueryName = srcElement.value;
  918. filterDeployedQueries();
  919. break;
  920. case "ListDeployedLibraryQueriesFilter":
  921. queryFilter.QueryName = srcElement.value;
  922. filterDeployedQueries();
  923. break;
  924. case "AliasFilter":
  925. filterAliases();
  926. break;
  927. case "DataFilesFilter":
  928. filterDataFiles();
  929. break;
  930. case "IndexFilesFilter":
  931. filterIndexFiles();
  932. break;
  933. case "SuperFilesFilter":
  934. filterSuperFiles();
  935. break;
  936. }
  937. }
  938. var queryFilter = {
  939. QueryName: "",
  940. DeployedBy: "",
  941. Wuid: "",
  942. Suspended: "",
  943. Aliased: "",
  944. IsLibrary: "",
  945. LibrariesUsed: ""
  946. }
  947. function filterLibrariesUsed(RowValue, FilterValue) {
  948. // custom function to handle "Libraries used" like an exists check
  949. if (FilterValue == '1' && RowValue.length > 0) {
  950. return true;
  951. }
  952. return false;
  953. }
  954. function filterDeployedQueries() {
  955. var filterArray = new Array();
  956. if (queryFilter.QueryName.length > 0) {
  957. filterArray[filterArray.length] = { Value: queryFilter.QueryName, ColumnKey: ["QueryId", "DeployedBy", "Wuid"] };
  958. }
  959. if (queryFilter.Suspended.length > 0) {
  960. filterArray[filterArray.length] = { Value: queryFilter.Suspended, ColumnKey: "Suspended" };
  961. }
  962. if (queryFilter.Aliased.length > 0) {
  963. filterArray[filterArray.length] = { Value: queryFilter.Aliased, ColumnKey: "Aliased" };
  964. }
  965. if (queryFilter.IsLibrary.length > 0) {
  966. filterArray[filterArray.length] = { Value: queryFilter.IsLibrary, ColumnKey: "IsLibrary" };
  967. }
  968. if (queryFilter.LibrariesUsed.length > 0) {
  969. filterArray[filterArray.length] = { Value: queryFilter.LibrariesUsed, ColumnKey: "LibrariesUsed", FilterFunction: filterLibrariesUsed };
  970. }
  971. if (filterArray.length > 0) {
  972. dt_Queries.Filter(filterArray);
  973. }
  974. else {
  975. dt_Queries.ClearFilters();
  976. }
  977. }
  978. function filterDataTable(DataTableSource, FilterColumn, FilterString)
  979. {
  980. var records = DataTableSource.getRecordSet().getRecords();
  981. for (var i = 0; i < records.length; i++)
  982. {
  983. var elRow = records[i].getId();
  984. if (records[i].getData(FilterColumn).toLowerCase().indexOf(FilterString.toLowerCase()) > -1) {
  985. document.getElementById(elRow).style.display = "";
  986. } else {
  987. document.getElementById(elRow).style.display = "none";
  988. }
  989. }
  990. }
  991. function filterDataSource(OriginalDataSource, FilterColumn, FilterString)
  992. {
  993. var records = OriginalDataSource.getRecordSet().getRecords();
  994. for (var i = 0; i < records.length; i++)
  995. {
  996. var elRow = records[i].getId();
  997. if (records[i].getData(FilterColumn).toLowerCase().indexOf(FilterString.toLowerCase()) > -1) {
  998. document.getElementById(elRow).style.display = "";
  999. } else {
  1000. document.getElementById(elRow).style.display = "none";
  1001. }
  1002. }
  1003. }
  1004. function confirmMarked(PanelId, DesciptionColumn, RecordSet, HeaderText, OkMethodToCall)
  1005. {
  1006. document.getElementById('ConfirmationHeader').innerHTML = HeaderText;
  1007. var records = RecordSet.getRecords();
  1008. var innerHTML = '<table style="text-align:left;">';
  1009. for (var i = 0; i < records.length; i++)
  1010. {
  1011. if (records[i].getData('Mark') == '1')
  1012. {
  1013. innerHTML += '<tr><td>' + records[i].getData(DesciptionColumn) + '</td></tr>';
  1014. }
  1015. }
  1016. innerHTML += '</table>';
  1017. document.getElementById('ConfirmationList').innerHTML = innerHTML;
  1018. document.getElementById('buttonConfirmationOk').onclick = OkMethodToCall;
  1019. confirmationPanel.show();
  1020. }
  1021. function showConfirmationMessage(PanelId, HeaderText, BodyText, OkMethodToCall) {
  1022. document.getElementById('ConfirmationHeader').innerHTML = HeaderText;
  1023. document.getElementById('ConfirmationList').innerHTML = BodyText;
  1024. document.getElementById('buttonConfirmationOk').onclick = OkMethodToCall;
  1025. confirmationPanel.show();
  1026. }
  1027. // Alias Actions
  1028. function deleteAliases() {
  1029. var queries = new Array();
  1030. var formatAliasLabel = function(elCell, oRecord, oColumn, sData) {
  1031. elCell.innerHTML = '<input type="text" value="' + sData + '" />';
  1032. };
  1033. var myColumnDefs = [
  1034. { key: "QueryAlias", label: "Alias", sortable: true, width: 300 },
  1035. { key: "QueryId", label: "Query", sortable: true, width: 300 },
  1036. { key: "Response", label: "Response", width: 100 }
  1037. ];
  1038. var records = dt_Aliases.getRecordSet().getRecords();
  1039. var i_added = 0;
  1040. for (var i = 0; i < records.length; i++) {
  1041. if (records[i].getData('Mark') == '1') {
  1042. queries[i_added] = { QueryAlias: records[i].getData('QueryAlias'), QueryId: records[i].getData('QueryId'), Response: '' };
  1043. i_added++;
  1044. }
  1045. }
  1046. ds_Action = new YAHOO.util.LocalDataSource(queries);
  1047. ds_Action.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
  1048. ds_Action.responseSchema = {
  1049. fields: ["QueryAlias", "QueryId", "Response"]
  1050. };
  1051. dt_Action = new YAHOO.widget.ScrollingDataTable('dt_Action', myColumnDefs, ds_Action, { height: "300px" });
  1052. performAction("Delete Aliases", doDeleteAliases, "900px");
  1053. }
  1054. function doDeleteAliases() {
  1055. var connectionCallback = {
  1056. success: function(o) {
  1057. var xmlDoc = o.responseXML;
  1058. var rows = xmlDoc.getElementsByTagName('StatusRow');
  1059. // Update Response Column.
  1060. if (rows && rows.length > 0) {
  1061. for (var i = 0; i < rows.length; i++) {
  1062. var cols = rows[i].getElementsByTagName('Item');
  1063. if (cols && cols.length > 0) {
  1064. var aliasName = cols[0].childNodes[0].nodeValue;
  1065. var response = cols[1].childNodes[0].nodeValue;
  1066. var records = dt_Action.getRecordSet().getRecords();
  1067. for (var j = 0; j < records.length; j++) {
  1068. if (records[j].getData('QueryAlias') == aliasName) {
  1069. records[j].setData('Response', response);
  1070. }
  1071. }
  1072. }
  1073. }
  1074. }
  1075. dt_Action.render();
  1076. document.getElementById('buttonActionCancel').innerHTML = 'Close';
  1077. document.getElementById('buttonActionOk').style.display = 'none';
  1078. clearActionProgress();
  1079. setActionCloseButton(refreshCurrentTab);
  1080. },
  1081. failure: function(o) {
  1082. alert('Failure:' + o.statusText);
  1083. }
  1084. };
  1085. function clearActionProgress() {
  1086. document.getElementById('buttonActionOk').disabled = false;
  1087. document.getElementById('ActionProgress').innerHTML = '';
  1088. }
  1089. document.getElementById('ActionProgress').innerHTML = '<img src="/esp/files/img/loading.gif" style="height:18px;" />';
  1090. var postBody = '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding" xmlns="http://webservices.seisint.com/ws_roxieconfig"><soap:Body>' + getSelectedAliases() + '</soap:Body></soap:Envelope>';
  1091. YAHOO.util.Connect.initHeader("SOAPAction", "ws_roxieconfig/RemoveAliases?ver_=" + WS_ROXIECONFIG_VER);
  1092. YAHOO.util.Connect.initHeader("Content-Type", "text/xml");
  1093. YAHOO.util.Connect._use_default_post_header = false;
  1094. var getXML = YAHOO.util.Connect.asyncRequest("POST",
  1095. "/ws_roxieconfig/RemoveAliases" + "?ver_=" + WS_ROXIECONFIG_VER,
  1096. connectionCallback, postBody);
  1097. return {
  1098. };
  1099. }
  1100. function getSelectedAliases() {
  1101. var removeAliasesRequest = '<RemoveAliasesRequest><Aliases>';
  1102. var records = dt_Aliases.getRecordSet().getRecords();
  1103. for (var i = 0; i < records.length; i++) {
  1104. if (records[i].getData('Mark') == '1') {
  1105. removeAliasesRequest += '<AliasInfo>';
  1106. removeAliasesRequest += '<QueryAlias>' + records[i].getData('QueryAlias') + '</QueryAlias>';
  1107. removeAliasesRequest += '<QueryId>' + records[i].getData('QueryId') + '</QueryId>';
  1108. removeAliasesRequest += '</AliasInfo>';
  1109. }
  1110. }
  1111. removeAliasesRequest += '</Aliases></RemoveAliasesRequest>';
  1112. return removeAliasesRequest;
  1113. }
  1114. // Load Queries using Library
  1115. var ds_LibQueries, dt_LibQueries;
  1116. function loadQueriesUsingLibrary(LibraryName, ElementId)
  1117. {
  1118. var connectionCallback = {
  1119. success: function(o) {
  1120. var xmlDoc = o.responseXML;
  1121. var xmlQueries = xmlDoc.getElementsByTagName('Item');
  1122. var queries = new Array();
  1123. for(var i=0;i<xmlQueries.length;i++)
  1124. {
  1125. queries[i] = xmlQueries[i].childNodes[0].nodeValue;
  1126. }
  1127. var myColumnDefs = [
  1128. {key:"Query", label:"Query", sortable:true, width:800}
  1129. ];
  1130. ds_LibQueries = new YAHOO.util.LocalDataSource(queries);
  1131. ds_LibQueries.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
  1132. ds_LibQueries.responseSchema = {
  1133. fields: ["Query"]
  1134. };
  1135. dt_LibQueries = new YAHOO.widget.ScrollingDataTable(ElementId, myColumnDefs, ds_LibQueries, { height: (YAHOO.util.Dom.getViewportHeight() - 155) + "px", width: (queryPanel.cfg.getProperty('width') - 65) + "px" });
  1136. },
  1137. failure: function(o) {
  1138. alert('Failure:' + o.statusText);
  1139. }
  1140. };
  1141. document.getElementById(ElementId).innerHTML = '<img src="/esp/files/img/loading.gif" style="height:18px;" />';
  1142. var postBody = '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding" xmlns="http://webservices.seisint.com/ws_roxieconfig"><soap:Body><ListQueriesUsingLibraryRequest><LibraryName>' + LibraryName + '</LibraryName></ListQueriesUsingLibraryRequest></soap:Body></soap:Envelope>';
  1143. YAHOO.util.Connect.initHeader("SOAPAction", "ws_roxieconfig/ListQueriesUsingLibrary?ver_=" + WS_ROXIECONFIG_VER);
  1144. YAHOO.util.Connect.initHeader("Content-Type", "text/xml");
  1145. YAHOO.util.Connect._use_default_post_header = false;
  1146. var getXML = YAHOO.util.Connect.asyncRequest("POST",
  1147. "/ws_roxieconfig/ListQueriesUsingLibrary" + "?ver_=" + WS_ROXIECONFIG_VER,
  1148. connectionCallback, postBody);
  1149. return {
  1150. };
  1151. }
  1152. function modifyQueries(Operation, ElementId)
  1153. {
  1154. var connectionCallback = {
  1155. success: function(o) {
  1156. var xmlDoc = o.responseXML;
  1157. var rows = xmlDoc.getElementsByTagName('StatusRow');
  1158. // Update Response Column.
  1159. if (rows && rows.length > 0) {
  1160. for (var i = 0; i < rows.length; i++) {
  1161. var cols = rows[i].getElementsByTagName('Item');
  1162. if (cols && cols.length > 0) {
  1163. var queryName = cols[0].childNodes[0].nodeValue;
  1164. var response = cols[1].childNodes[0].nodeValue;
  1165. if (response.indexOf('Error val') > -1) {
  1166. var ttmp = unescape(response);
  1167. ttmp = ttmp.replace(/\/+/gi, ' ');
  1168. ttmp = ttmp.replace(/</gi, ' ');
  1169. ttmp = ttmp.replace(/>/gi, ' ');
  1170. response = ttmp;
  1171. }
  1172. var records = dt_Action.getRecordSet().getRecords();
  1173. for (var j = 0; j < records.length; j++) {
  1174. if (records[j].getData('QueryId') == queryName) {
  1175. records[j].setData('Response', response);
  1176. }
  1177. }
  1178. }
  1179. }
  1180. }
  1181. dt_Action.render();
  1182. document.getElementById('buttonActionCancel').innerHTML = 'Close';
  1183. document.getElementById('buttonActionOk').style.display = 'none';
  1184. clearActionProgress();
  1185. setActionCloseButton(refreshCurrentTab);
  1186. },
  1187. failure: function(o) {
  1188. alert('Failure:' + o.statusText);
  1189. debugger;
  1190. }
  1191. };
  1192. function clearActionProgress() {
  1193. document.getElementById('buttonActionOk').disabled = false;
  1194. document.getElementById('ActionProgress').innerHTML = '';
  1195. }
  1196. document.getElementById('ActionProgress').innerHTML = '<img src="/esp/files/img/loading.gif" style="height:18px;" />';
  1197. var postBody = '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding" xmlns="http://webservices.seisint.com/ws_roxieconfig"><soap:Body>' + getSelectedQueries(Operation) + '</soap:Body></soap:Envelope>';
  1198. YAHOO.util.Connect.initHeader("SOAPAction", "ws_roxieconfig/ModifyQueries?ver_=" + WS_ROXIECONFIG_VER);
  1199. YAHOO.util.Connect.initHeader("Content-Type", "text/xml");
  1200. YAHOO.util.Connect._use_default_post_header = false;
  1201. var getXML = YAHOO.util.Connect.asyncRequest("POST",
  1202. "/ws_roxieconfig/ModifyQueries" + "?ver_=" + WS_ROXIECONFIG_VER,
  1203. connectionCallback, postBody);
  1204. return {
  1205. };
  1206. }
  1207. function getSelectedQueries(Operation) {
  1208. var modifyQueriesRequest = '<ModifyQueriesRequest><Operation>' + Operation + '</Operation><NotifyRoxie>' + notifyRoxie + '</NotifyRoxie><Queries>';
  1209. var records = dt_Queries.getRecordSet().getRecords();
  1210. for (var i = 0; i < records.length; i++) {
  1211. if (records[i].getData('Mark') == '1') {
  1212. modifyQueriesRequest += '<QueryInfo>';
  1213. modifyQueriesRequest += '<QueryId>' + records[i].getData('QueryId') + '</QueryId>';
  1214. if (Operation == 'suspend') {
  1215. modifyQueriesRequest += '<Suspended>' + (records[i].getData('Suspended') == '1' ? '0' : '1') + '</Suspended>';
  1216. }
  1217. modifyQueriesRequest += '</QueryInfo>';
  1218. }
  1219. }
  1220. modifyQueriesRequest += '</Queries></ModifyQueriesRequest>';
  1221. return modifyQueriesRequest;
  1222. }
  1223. var ds_Action, dt_Action;
  1224. function activateQueries(Activate) {
  1225. var queries = new Array();
  1226. var formatAliasLabel = function(elCell, oRecord, oColumn, sData) {
  1227. elCell.innerHTML = '<input type="text" value="' + sData + '" />';
  1228. };
  1229. var myColumnDefs = [
  1230. { key: "QueryId", label: "Query Name", sortable: true, width: 200 },
  1231. { key: "Alias", label: "Alias", formatter: formatActionInlineEntry, width: 200, sortable: true },
  1232. { key: "SuspendPrevious", label: "Suspend<br />Previous", parser: "boolean", formatter: "checkbox", width: 80 },
  1233. { key: "DeletePrevious", label: "Delete<br />Previous", parser: "boolean", formatter: "checkbox", width: 80 },
  1234. { key: "Response", label: "Response", width: 150 }
  1235. ];
  1236. var records = dt_Queries.getRecordSet().getRecords();
  1237. var i_added = 0;
  1238. for (var i = 0; i < records.length; i++) {
  1239. if (records[i].getData('Mark') == '1') {
  1240. var aliasName = records[i].getData('QueryId');
  1241. aliasName = aliasName.substring(0, aliasName.lastIndexOf('.'));
  1242. queries[i_added] = { QueryId: records[i].getData('QueryId'), Alias: aliasName, SuspendPrevious: false, DeletePrevious: false, Response: '' };
  1243. i_added++;
  1244. }
  1245. }
  1246. ds_Action = new YAHOO.util.LocalDataSource(queries);
  1247. ds_Action.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
  1248. ds_Action.responseSchema = {
  1249. fields: ["QueryId", "Alias", "SuspendPrevious", "DeletePrevious", "Response"]
  1250. };
  1251. dt_Action = new YAHOO.widget.ScrollingDataTable('dt_Action', myColumnDefs, ds_Action, { height: "200px" });
  1252. var highlightEditableCell = function(oArgs) {
  1253. var elCell = oArgs.target;
  1254. if (YAHOO.util.Dom.hasClass(elCell, "yui-dt-editable")) {
  1255. this.highlightCell(elCell);
  1256. }
  1257. };
  1258. dt_Action.subscribe("cellMouseoverEvent", highlightEditableCell);
  1259. dt_Action.subscribe("cellMouseoutEvent", dt_Action.onEventUnhighlightCell);
  1260. dt_Action.subscribe("cellClickEvent", dt_Action.onEventShowCellEditor);
  1261. performAction((Activate ? "Activate Queries" : "Add Aliases"), (Activate ? doActivateQueries : doAddAliases), "800px");
  1262. }
  1263. function doActivateQueries() {
  1264. actionQueries(true);
  1265. }
  1266. function doAddAliases() {
  1267. actionQueries(false);
  1268. }
  1269. function performAction(HeaderText, OkMethodToCall, Width) {
  1270. document.getElementById('ahd').innerHTML = HeaderText;
  1271. // dt_Action
  1272. actionPanel.cfg.setProperty("width", Width);
  1273. YAHOO.util.Dom.addClass('ActionProgress', 'spanleft');
  1274. YAHOO.util.Dom.addClass('ActionButtons', 'spanright');
  1275. var test = dt_Action.get('width');
  1276. var t = document.getElementById('dt_Action');
  1277. document.getElementById('buttonActionOk').disabled = false;
  1278. document.getElementById('buttonActionOk').style.display = 'block';
  1279. document.getElementById('buttonActionCancel').innerHTML = 'Cancel';
  1280. document.getElementById('ActionProgress').innerHTML = '';
  1281. document.getElementById('buttonActionOk').onclick = function() { document.getElementById('buttonActionOk').disabled = true; OkMethodToCall(); }; // disable the Ok button
  1282. document.getElementById('buttonActionCancel').onclick = function() { hideActionPanel(); }; // disable the Ok button
  1283. actionPanel.show();
  1284. }
  1285. function setActionCloseButton(CloseMethodToCall) {
  1286. if (CloseMethodToCall) {
  1287. document.getElementById('buttonActionCancel').onclick = function() { CloseMethodToCall(); hideActionPanel(); }; // disable the Ok button
  1288. } else {
  1289. document.getElementById('buttonActionCancel').onclick = function() { hideActionPanel(); }; // disable the Ok button
  1290. }
  1291. }
  1292. function actionQueries(Activate) {
  1293. var connectionCallback = {
  1294. success: function(o) {
  1295. var xmlDoc = o.responseXML;
  1296. var rows = xmlDoc.getElementsByTagName('StatusRow');
  1297. // Update Response Column.
  1298. if (rows && rows.length > 0) {
  1299. for (var i = 0; i < rows.length; i++) {
  1300. var cols = rows[i].getElementsByTagName('Item');
  1301. if (cols && cols.length > 0) {
  1302. var queryName = cols[0].childNodes[0].nodeValue;
  1303. var response = cols[1].childNodes[0].nodeValue;
  1304. var records = dt_Action.getRecordSet().getRecords();
  1305. for (var j = 0; j < records.length; j++) {
  1306. if (records[j].getData('QueryId') == queryName) {
  1307. records[j].setData('Response', response);
  1308. }
  1309. }
  1310. }
  1311. }
  1312. }
  1313. dt_Action.render();
  1314. document.getElementById('buttonActionCancel').innerHTML = 'Close';
  1315. document.getElementById('buttonActionOk').style.display = 'none';
  1316. clearActionProgress();
  1317. setActionCloseButton(refreshCurrentTab);
  1318. },
  1319. failure: function(o) {
  1320. alert('Failure:' + o.statusText);
  1321. clearActionProgress();
  1322. hideActionPanel();
  1323. }
  1324. };
  1325. function clearActionProgress() {
  1326. document.getElementById('buttonActionOk').disabled = false;
  1327. document.getElementById('ActionProgress').innerHTML = '';
  1328. }
  1329. document.getElementById('ActionProgress').innerHTML = '<img src="/esp/files/img/loading.gif" style="height:18px;" />';
  1330. var postBody = '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding" xmlns="http://webservices.seisint.com/ws_roxieconfig"><soap:Body>' + getActionQueries(Activate) + '</soap:Body></soap:Envelope>';
  1331. YAHOO.util.Connect.initHeader("SOAPAction", "ws_roxieconfig/AddAliasesToQueries?ver_=" + WS_ROXIECONFIG_VER);
  1332. YAHOO.util.Connect.initHeader("Content-Type", "text/xml");
  1333. YAHOO.util.Connect._use_default_post_header = false;
  1334. var getXML = YAHOO.util.Connect.asyncRequest("POST",
  1335. "/ws_roxieconfig/AddAliasesToQueries" + "?ver_=" + WS_ROXIECONFIG_VER,
  1336. connectionCallback, postBody);
  1337. return {
  1338. };
  1339. }
  1340. function getActionQueries(Activate) {
  1341. var modifyQueriesRequest = '<AddAliasesRequest><Activate>' + (Activate ? '1' : '0') + '</Activate><Info>';
  1342. var records = dt_Action.getRecordSet().getRecords();
  1343. for (var i = 0; i < records.length; i++) {
  1344. modifyQueriesRequest += '<RoxieQueryModificationInfo>';
  1345. modifyQueriesRequest += '<QueryId>' + records[i].getData('QueryId') + '</QueryId>';
  1346. modifyQueriesRequest += '<QueryAlias>' + records[i].getData('Alias') + '</QueryAlias>';
  1347. modifyQueriesRequest += '<SuspendPrevious>' + records[i].getData('SuspendPrevious') + '</SuspendPrevious>';
  1348. modifyQueriesRequest += '<DeletePrevious>' + records[i].getData('DeletePrevious') + '</DeletePrevious>';
  1349. modifyQueriesRequest += '</RoxieQueryModificationInfo>';
  1350. }
  1351. modifyQueriesRequest += '</Info></AddAliasesRequest>';
  1352. return modifyQueriesRequest;
  1353. }
  1354. function toggleQueries() {
  1355. var queries = new Array();
  1356. var formatAliasLabel = function(elCell, oRecord, oColumn, sData) {
  1357. elCell.innerHTML = '<input type="text" value="' + sData + '" />';
  1358. };
  1359. var myColumnDefs = [
  1360. { key: "QueryId", label: "Query Name", sortable: true, width: 300 },
  1361. { key: "Suspended", label: "Suspended", formatter: formatCheckboxDisabled, width: 80, sortable: true },
  1362. { key: "Action", label: "Action", width: 80 },
  1363. { key: "Response", label: "Response", width: 200 }
  1364. ];
  1365. var records = dt_Queries.getRecordSet().getRecords();
  1366. var i_added = 0;
  1367. for (var i = 0; i < records.length; i++) {
  1368. if (records[i].getData('Mark') == '1') {
  1369. var aliasName = records[i].getData('QueryId');
  1370. var suspended = records[i].getData('Suspended');
  1371. var action = suspended == '1' ? 'Unsuspend' : 'Suspend';
  1372. queries[i_added] = { QueryId: records[i].getData('QueryId'), Suspended: suspended, Action: action, Response: '' };
  1373. i_added++;
  1374. }
  1375. }
  1376. ds_Action = new YAHOO.util.LocalDataSource(queries);
  1377. ds_Action.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
  1378. ds_Action.responseSchema = {
  1379. fields: ["QueryId", "Suspended", "Action", "Response"]
  1380. };
  1381. dt_Action = new YAHOO.widget.ScrollingDataTable('dt_Action', myColumnDefs, ds_Action, { height: "500px" });
  1382. var highlightEditableCell = function(oArgs) {
  1383. var elCell = oArgs.target;
  1384. if (YAHOO.util.Dom.hasClass(elCell, "yui-dt-editable")) {
  1385. this.highlightCell(elCell);
  1386. }
  1387. };
  1388. dt_Action.subscribe("cellMouseoverEvent", highlightEditableCell);
  1389. dt_Action.subscribe("cellMouseoutEvent", dt_Action.onEventUnhighlightCell);
  1390. dt_Action.subscribe("cellClickEvent", dt_Action.onEventShowCellEditor);
  1391. performAction("Change Query Status", doSuspendQueries, "750px");
  1392. }
  1393. function listQueriesUsingFile(SourceDt) {
  1394. var connectionCallback = {
  1395. success: function(o) {
  1396. var xmlDoc = o.responseXML;
  1397. var xmlQueries = xmlDoc.getElementsByTagName('Item');
  1398. if (xmlQueries) {
  1399. var queries = new Array();
  1400. for (var i = 0; i < xmlQueries.length; i++) {
  1401. queries[i] = xmlQueries[i].childNodes[0].nodeValue;
  1402. }
  1403. var myColumnDefs = [{ key: "Query", label: "Query", sortable: true, width: 385}];
  1404. ds_Action = new YAHOO.util.LocalDataSource(queries);
  1405. ds_Action.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
  1406. ds_Action.responseSchema = {
  1407. fields: ["Query"]
  1408. };
  1409. dt_Action = new YAHOO.widget.ScrollingDataTable('dt_Action', myColumnDefs, ds_Action, { height: "300px", width: "390px" });
  1410. dt_Action.render();
  1411. document.getElementById('buttonActionCancel').innerHTML = 'Close';
  1412. document.getElementById('buttonActionOk').style.display = 'none';
  1413. clearActionProgress();
  1414. setActionCloseButton();
  1415. document.getElementById('ahd').innerHTML = "Queries using index";
  1416. // dt_Action
  1417. actionPanel.cfg.setProperty("width", "420px");
  1418. YAHOO.util.Dom.addClass('ActionProgress', 'spanleft');
  1419. YAHOO.util.Dom.addClass('ActionButtons', 'spanright');
  1420. actionPanel.show();
  1421. }
  1422. },
  1423. failure: function(o) {
  1424. alert('Failure:' + o.statusText);
  1425. }
  1426. };
  1427. function clearActionProgress() {
  1428. document.getElementById('buttonActionOk').disabled = false;
  1429. document.getElementById('ActionProgress').innerHTML = '';
  1430. }
  1431. // Find selected rows...
  1432. var rows = SourceDt.getSelectedRows();
  1433. if (rows.length > 0) {
  1434. var rec = SourceDt.getRecord(rows[0]);
  1435. var FileName = rec.getData('Name');
  1436. document.getElementById('ActionProgress').innerHTML = '<img src="/esp/files/img/loading.gif" style="height:18px;" />';
  1437. var postBody = '<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding" xmlns="http://webservices.seisint.com/ws_roxieconfig"><soap:Body><ListQueriesUsingFileRequest><fileName>' + FileName + '</fileName></ListQueriesUsingFileRequest></soap:Body></soap:Envelope>';
  1438. YAHOO.util.Connect.initHeader("SOAPAction", "ws_roxieconfig/ListQueriesUsingFile?ver_=" + WS_ROXIECONFIG_VER);
  1439. YAHOO.util.Connect.initHeader("Content-Type", "text/xml");
  1440. YAHOO.util.Connect._use_default_post_header = false;
  1441. var getXML = YAHOO.util.Connect.asyncRequest("POST",
  1442. "/ws_roxieconfig/ListQueriesUsingFile" + "?ver_=" + WS_ROXIECONFIG_VER,
  1443. connectionCallback, postBody);
  1444. }
  1445. return {};
  1446. }