/*############################################################################## # Copyright (C) 2011 HPCC Systems. # # All rights reserved. This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . ############################################################################## */ /*global YAHOO*/ function createRowArraysForComp(compName, rows) { if (typeof (compTabs[compName]) === 'undefined') return; for (var i = 0; i < compTabs[compName].length; i++) rows[compTabs[compName][i]] = new Array(); } function createTablesForComp(compName, rows) { if (typeof (compTabs[compName]) === 'undefined') return; for (var i = 0; i < compTabs[compName].length; i++) { if (compTabs[compName][i] !== 'Servers' && compTabs[compName][i] !== 'Agents' && compTabs[compName][i] !== 'Topology') createTable(rows[compTabs[compName][i]], compTabs[compName][i], i, compName); } } function argsToXml(category, params, attrName, oldValue, newValue, rowIndex, onChange) { var xmlArgs = ""; return xmlArgs; } var formatterDispatcher = function(elCell, oRecord, oColumn, oData) { var meta = oRecord.getData(oColumn.key + '_ctrlType'); //('meta_' + oColumn.key); //oColumn.editorOptions = meta.editorOptions; switch (meta) { case '0': YAHOO.widget.DataTable.formatNumber.call(this, elCell, oRecord, oColumn, oData); break; case '4': YAHOO.widget.DataTable.formatDropdown.call(this, elCell, oRecord, oColumn, oData); break; case 5: elCell.innerHTML = oData.replace(/./g, '*'); break; case '3': elCell.innerHTML = oData; break; case '1': default: YAHOO.widget.DataTable.formatText.call(this, elCell, oRecord, oColumn, oData); break; } }; function createSubTable(rows, tabDivName, index, name) { var tabNameTemp = tabDivName + 'On'; var myColumnDefs2; var myDataSource2 = new YAHOO.util.DataSource(rows); myDataSource2.responseType = YAHOO.util.DataSource.TYPE_JSARRAY; myColumnDefs2 = new Array(); var colIndex1 = 0; var colIndex2 = 0; var columnFields = new Array(); var tableName = name.split("_"); var newName = tableName[1]; for (var realCol in rows[0]) { if ((realCol.indexOf('_') === -1) && (realCol.indexOf('params') === -1) && (realCol.indexOf('compType') === -1)) { newName = cS[realCol + tableName[1]].tab; break; } } for (var i in rows[0]) { var lbl = i; if (rows[0][i + "_caption"]) lbl = rows[0][i + "_caption"]; //if((i.indexOf('_extra') === -1) && (i.indexOf('_ctrlType') === -1) && (i.indexOf('params') === -1) && (i.indexOf('compType') === -1)) if ((i.indexOf('_') === -1) && (i.indexOf('params') === -1) && (i.indexOf('compType') === -1)) { if (typeof (colIndex) !== 'undefined' && colIndex[i + newName]) myColumnDefs2[colIndex[i + newName]] = { key: i, label: lbl, minWidth: 200, /*maxAutoWidth:auto,*/scrollable: true, resizeable: true, formatter: formatterDispatcher, editor: new YAHOO.widget.BaseCellEditor() }; else myColumnDefs2[colIndex1++] = { key: i, minWidth: 200, label: lbl, /*maxAutoWidth:auto,*/scrollable: true, resizeable: true, formatter: formatterDispatcher, editor: new YAHOO.widget.BaseCellEditor() }; } columnFields[colIndex2++] = i; } //Add missing columns or columns for tables with no rows if (typeof (tabCols) !== 'undefined' && YAHOO.lang.isArray(tabCols) && typeof (tabCols[newName]) !== 'undefined' && tabCols[newName].length > 0) { for (var colHdrIndex = 0; colHdrIndex < tabCols[newName].length; colHdrIndex++) { if (typeof (tabCols[newName][colHdrIndex]) !== 'undefined') { var flag = false; for (var tmpIdx = 0; tmpIdx < myColumnDefs2.length; tmpIdx++) { if (typeof (myColumnDefs2[tmpIdx]) !== 'undefined' && myColumnDefs2[tmpIdx]['label'] === tabCols[newName][colHdrIndex]) { flag = true; break; } } if (flag) continue; myColumnDefs2[myColumnDefs2.length] = { key: tabCols[newName][colHdrIndex], minWidth: 200, /*maxAutoWidth:auto,*/scrollable: true, resizeable: true, formatter: formatterDispatcher, editor: new YAHOO.widget.BaseCellEditor() }; columnFields[colIndex2++] = tabCols[newName][colHdrIndex]; } } } myDataSource2.responseSchema = { fields: columnFields }; tabNameTemp = tabDivName + 'Tab'; var parentdiv = document.getElementById(tabNameTemp); var newDiv = document.createElement('div'); YAHOO.util.Dom.setStyle(newDiv, 'width', '100%'); parentdiv.parentNode.appendChild(newDiv); var newColDefs = new Array(); var nIndx = 0; for (idx = 0; idx < colIndex2; idx++) { if (typeof (myColumnDefs2[idx]) !== 'undefined') newColDefs[nIndx++] = myColumnDefs2[idx]; } if (nIndx === 1) newColDefs[0].minWidth = '400'; var myDataTable2 = new YAHOO.widget.DataTable(newDiv, newColDefs/*myColumnDefs2*/, myDataSource2, { width: "100%", caption: "" + newName + "" }); // Set up editing flow var highlightEditableCell = function(oArgs) { var elCell = oArgs.target; if (YAHOO.util.Dom.hasClass(elCell, "yui-dt-editable")) { this.highlightCell(elCell); } }; var oContextMenu2 = new YAHOO.widget.ContextMenu(newName + 'Menu', { trigger: newDiv, lazyload: true }); myDataTable2.tt = new YAHOO.widget.Tooltip(newName + "tooltip"); oContextMenu2.dt = myDataTable2; oContextMenu2.subscribe("beforeShow", onContextMenuBeforeShowRegular); myDataTable2.subscribe("cellMouseoverEvent", function(oArgs) { var target = oArgs.target; var cols = this.getColumnSet(); var txt = cS[cols.keys[target.cellIndex].key + tableName[1]].tip; if (cS[cols.keys[target.cellIndex].key + tableName[1]].defaultValue) txt += "
Default value = '" + cS[cols.keys[target.cellIndex].key + tableName[1]].defaultValue + "'"; if (myDataTable2.showTimer) { window.clearTimeout(myDataTable2.showTimer); myDataTable2.showTimer = 0; } var xy = [parseInt(oArgs.event.clientX, 10) + 10, parseInt(oArgs.event.clientY, 10) + 10]; if (txt.length) { myDataTable2.showTimer = window.setTimeout(function() { myDataTable2.tt.setBody(txt); myDataTable2.tt.cfg.setProperty('xy', xy); myDataTable2.tt.show(); myDataTable2.hideTimer = window.setTimeout(function() { myDataTable2.tt.hide(); }, 5000); }, 500); } }); myDataTable2.subscribe("cellMouseoutEvent", function(oArgs) { if (myDataTable2.showTimer) { window.clearTimeout(myDataTable2.showTimer); myDataTable2.showTimer = 0; } if (myDataTable2.hideTimer) { window.clearTimeout(myDataTable2.hideTimer); myDataTable2.hideTimer = 0; } myDataTable2.tt.hide(); }); //myDataTable.subscribe("cellClickEvent", myDataTable.onEventShowCellEditor); myDataTable2.subscribe("rowClickEvent", function(oArgs) { //this messes with the cell click event by taking away the focus away from the cell editor /*myDataTable2.clearTextSelection();*/ myDataTable2.onEventSelectRow(oArgs) }); myDataTable2.subscribe("tableKeyEvent", function(oArgs) { if (oArgs.event.keyCode === 9) { showCurrentCellEditor(myDataTable2); YAHOO.util.Event.stopEvent(oArgs.event); } else if (oArgs.event.keyCode === 192 && oArgs.event.ctrlKey === true) setFocusToNavTable(); }); myDataTable2.subscribe("tableFocusEvent", function(oArgs) { var Dom = YAHOO.util.Dom; var selRows = myDataTable2.getSelectedRows(); for (var idx = 0; idx < selRows.length; idx++) { Dom.removeClass(myDataTable2.getTrEl(selRows[idx]), 'outoffocus'); } // var dt = myDataTable2.parentDT; // dt.fireEvent("tableBlurEvent"); // if (dt.subTables) { // for (var stIdx = 0; stIdx < dt.subTables.length; stIdx++) { // if (myDataTable2 !== dt.subTables[stIdx].oDT) // dt.subTables[stIdx].oDT.fireEvent("tableBlurEvent"); // } // } }); myDataTable2.subscribe("tableBlurEvent", function(oArgs) { var Dom = YAHOO.util.Dom; var selRows = myDataTable2.getSelectedRows(); for (var idx = 0; idx < selRows.length; idx++) { Dom.addClass(myDataTable2.getTrEl(selRows[idx]), 'outoffocus'); } }); myDataTable2.getDefault = function(oTarget, record) { var column = this.getColumn(oTarget); if( (column.key + tableName[1]) in cS ) { if (cS[column.key + tableName[1]].defaultValue) return cS[column.key + tableName[1]].defaultValue; } else return ''; } myDataTable2.subscribe("cellMousedownEvent", function(oArgs) { //if left button click return as it is handled in handleConfigCellClickEvent if (oArgs.event.button === 1 || oArgs.event.button === 0) return; var selRows = this.getSelectedRows(); if (selRows && selRows.length > 0) { if (this.isSelected(this.getRecord(oArgs.target))) return; } this.onEventSelectRow(oArgs); }); myDataTable2.subscribe("cellClickEvent", function(oArgs) { handleConfigCellClickEvent(oArgs, this, false); }); myDataTable2.cleanup = function() { this.unsubscribeAll("cellMouseoverEvent"); this.unsubscribeAll("rowClickEvent"); this.unsubscribeAll("tableKeyEvent"); this.unsubscribeAll("cellMousedownEvent"); this.unsubscribeAll("tableFocusEvent"); this.unsubscribeAll("tableBlurEvent"); this.unsubscribeAll("cellClickEvent"); this.unsubscribeAll("rowSelectEvent"); oContextMenu2.dt = null; oContextMenu2.unsubscribeAll("beforeShow"); } return { oDS: myDataSource2, oDT: myDataTable2, oName: name, oTableName: newName}; } function createTable(rows, tabDivName, index, compName) { if (!top.document.RightTabView) top.document.RightTabView = new YAHOO.widget.TabView('tabviewcontainer'); var tabView = top.document.RightTabView; var tabs = tabView.get("tabs"); var tab; for (i = 0; i < tabs.length; i++) { if (tabs[i].get("label") === tabDivName) { tab = tabs[i]; break; } } var listenEvent = "activeChange"; if (typeof (tab) === 'undefined') { tab = window; listenEvent = "load"; } //For simple view, some of the tabs may not have any rows. In that case, do not add if ((tabDivName !== "Instances" && tabDivName !== "Notes" && (rows.length == 0 && !(typeof (tabCols) !== 'undefined' && YAHOO.lang.isArray(tabCols) && typeof (tabCols[tabDivName]) !== 'undefined' && tabCols[tabDivName].length > 0)) && (top.document.forms['treeForm'].displayMode.value === 1)))// || //(tabDivName === "URL Authentication" || tabDivName === "Feature Authentication" || tabDivName === "Configuration" || tabDivName === "Gateway")) { tabView.removeTab(tab); return; } if (typeof (hiddenTabs) !== 'undefined' && YAHOO.lang.isArray(hiddenTabs) && isPresentInArr(hiddenTabs[compName], tabDivName)) return; var flag = tab.addListener(listenEvent, function(event) { if (!event.newValue) return; YAHOO.example.Basic = function() { var tabNameTemp = tabDivName + 'On'; var myColumnDefs; var myDataSource = new YAHOO.util.DataSource(rows); myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY; myColumnDefs = new Array(); var colIndex1 = 0; var colIndex2 = 0; var columnFields = new Array(); var subTables = new Array(); if (typeof (rows) !== 'undefined' && rows.length > 0) { for (var i in rows[0]) { var lbl = i; if (rows[0][i + "_caption"]) lbl = rows[0][i + "_caption"]; //if((i.indexOf('_extra') === -1) && (i.indexOf('_ctrlType') === -1) && (i.indexOf('params') === -1) && (i.indexOf('compType') === -1)) if ((i.indexOf('_') === -1) && (i.indexOf('params') === -1) && (i.indexOf('compType') === -1)) { if (typeof (colIndex) !== 'undefined' && colIndex[i + tabDivName]) myColumnDefs[colIndex[i + tabDivName]] = { key: i, label: lbl, minWidth: 200, /*maxAutoWidth:auto,*/scrollable: true, resizeable: true, formatter: formatterDispatcher, editor: new YAHOO.widget.BaseCellEditor() }; else myColumnDefs[colIndex1++] = { key: i, label: lbl, minWidth: 200, /*maxAutoWidth:auto,*/scrollable: true, resizeable: true, formatter: formatterDispatcher, editor: new YAHOO.widget.BaseCellEditor() }; } else if ((i.indexOf('_') === 0) && YAHOO.lang.isArray(rows[0][i])) subTables[subTables.length] = createSubTable(rows[0][i], tabDivName, 0, i); columnFields[colIndex2++] = i; } } //Add missing columns or columns for tables with no rows if (typeof (tabCols) !== 'undefined' && YAHOO.lang.isArray(tabCols) && typeof (tabCols[tabDivName]) !== 'undefined' && tabCols[tabDivName].length > 0) { for (var colHdrIndex = 0; colHdrIndex < tabCols[tabDivName].length; colHdrIndex++) { if (typeof (tabCols[tabDivName][colHdrIndex]) !== 'undefined') { var flag = false; for (var tmpIdx = 0; tmpIdx < myColumnDefs.length; tmpIdx++) { if (typeof (myColumnDefs[tmpIdx]) !== 'undefined' && myColumnDefs[tmpIdx]['label'] === tabCols[tabDivName][colHdrIndex]) { flag = true; break; } } if (flag) continue; else if (tabCols[tabDivName][colHdrIndex].indexOf('_') === 0) { var subTablePresent = false; if (subTables) { for (var idx = 0; idx < subTables.length; idx++) { var tableName = tabCols[tabDivName][colHdrIndex].split("_"); if (tableName[1] === subTables[idx].oTableName) { subTablePresent = true; break; } } } if (!subTablePresent) subTables[subTables.length] = createSubTable({}, tabDivName, 0, tabCols[tabDivName][colHdrIndex]); } else { myColumnDefs[myColumnDefs.length] = { key: tabCols[tabDivName][colHdrIndex], minWidth: 200, /*maxAutoWidth:auto,*/scrollable: true, resizeable: true, formatter: formatterDispatcher, editor: new YAHOO.widget.BaseCellEditor() }; columnFields[colIndex2++] = tabCols[tabDivName][colHdrIndex]; } } } } myDataSource.responseSchema = { fields: columnFields }; tabNameTemp = tabDivName + 'Tab'; var newColDefs = new Array(); var nIndx = 0; for (idx = 0; idx < colIndex2; idx++) { if (typeof (myColumnDefs[idx]) !== 'undefined') newColDefs[nIndx++] = myColumnDefs[idx]; } var myDataTable = new YAHOO.widget.DataTable(tabNameTemp, newColDefs/*myColumnDefs*/, myDataSource, { width: "100%" }); tab.dt = myDataTable; tab.dataSource = myDataSource; myDataTable.subTables = subTables; for (i = 0; i < subTables.length; i++) subTables[i].oDT.parentDT = myDataTable; // Set up editing flow var highlightEditableCell = function(oArgs) { var elCell = oArgs.target; if (YAHOO.util.Dom.hasClass(elCell, "yui-dt-editable")) { this.highlightCell(elCell); } }; var oContextMenu = new YAHOO.widget.ContextMenu(tabDivName + 'Menu', { trigger: tabNameTemp, lazyload: true }); oContextMenu.dt = myDataTable; oContextMenu.subscribe("beforeShow", onContextMenuBeforeShowRegular); myDataTable.tt = new YAHOO.widget.Tooltip(tabDivName + "tooltip"); myDataTable.subscribe("cellMouseoverEvent", function(oArgs) { var target = oArgs.target; var record = this.getRecord(target); var txt; //firefox has option to control status bar msg writing that is off by default. //need to doc this to let the user enable the setting. if (record.getData('_key')) { if (cS[record.getData('_key')].tip) txt = cS[record.getData('_key')].tip; else if (cS[record.getData('_key') + tabDivName].tip) txt = cS[record.getData('_key') + tabDivName].tip; if (cS[record.getData('_key')].defaultValue) txt += "
Default value = '" + cS[record.getData('_key')].defaultValue + "'"; else if (cS[record.getData('_key') + tabDivName].defaultValue) txt += "
Default value = '" + cS[record.getData('_key') + tabDivName].defaultValue + "'"; } else { var cols = this.getColumnSet(); var tmp = record.getData('params').split("subType="); var tmp1; if (tmp.length > 1) tmp1 = tmp[1].split("::"); if (cS[cols.keys[target.cellIndex].key + tmp1[0]].tip) txt = cS[cols.keys[target.cellIndex].key + tmp1[0]].tip; if (cS[cols.keys[target.cellIndex].key + tmp1[0]].defaultValue) txt += "
Default value = '" + cS[cols.keys[target.cellIndex].key + tmp1[0]].defaultValue + "'"; } if (myDataTable.showTimer) { window.clearTimeout(myDataTable.showTimer); myDataTable.showTimer = 0; } var xy = [parseInt(oArgs.event.clientX, 10) + 10, parseInt(oArgs.event.clientY, 10) + 10]; if (txt.length) { myDataTable.showTimer = window.setTimeout(function() { myDataTable.tt.setBody(txt); myDataTable.tt.cfg.setProperty('xy', xy); myDataTable.tt.show(); myDataTable.hideTimer = window.setTimeout(function() { myDataTable.tt.hide(); }, 5000); }, 500); } }); myDataTable.subscribe("cellMouseoutEvent", function(oArgs) { if (myDataTable.showTimer) { window.clearTimeout(myDataTable.showTimer); myDataTable.showTimer = 0; } if (myDataTable.hideTimer) { window.clearTimeout(myDataTable.hideTimer); myDataTable.hideTimer = 0; } myDataTable.tt.hide(); }); //myDataTable.subscribe("cellClickEvent", myDataTable.onEventShowCellEditor); myDataTable.subscribe("rowClickEvent", function(oArgs) { //this messes with the cell click event by taking away the focus away from the cell editor /*myDataTable.clearTextSelection();*/ myDataTable.onEventSelectRow(oArgs) }); myDataTable.subscribe("tableKeyEvent", function(oArgs) { if (oArgs.event.keyCode === 9) { showCurrentCellEditor(myDataTable); YAHOO.util.Event.stopEvent(oArgs.event); } else if (oArgs.event.keyCode === 192 && oArgs.event.ctrlKey === true) setFocusToNavTable(); }); myDataTable.subscribe("cellMousedownEvent", function(oArgs) { //if left button click return as it is handled in handleConfigCellClickEvent if (oArgs.event.button === 1 || oArgs.event.button === 0) return; var selRows = this.getSelectedRows(); for (i = 0; i < selRows.length; i++) { rec = this.getRecord(selRows[i]); if (YAHOO.util.Dom.hasClass(this.getTrEl(rec), 'outoffocus')) YAHOO.util.Dom.removeClass(this.getTrEl(rec), 'outoffocus'); } if (selRows && selRows.length > 0) { if (this.isSelected(this.getRecord(oArgs.target))) return; } this.onEventSelectRow(oArgs) }); myDataTable.subscribe("tableFocusEvent", function(oArgs) { document.getElementById('hiddenButton').click(); var Dom = YAHOO.util.Dom; var selRows = myDataTable.getSelectedRows(); for (var idx = 0; idx < selRows.length; idx++) { Dom.removeClass(myDataTable.getTrEl(selRows[idx]), 'outoffocus'); } }); myDataTable.subscribe("tableBlurEvent", function(oArgs) { //var tabView = top.document.RightTabView; if (tabView && tabView.get("activeTab").dt !== myDataTable) return; var Dom = YAHOO.util.Dom; var selRows = myDataTable.getSelectedRows(); for (var idx = 0; idx < selRows.length; idx++) { Dom.addClass(myDataTable.getTrEl(selRows[idx]), 'outoffocus'); } }); myDataTable.subscribe("cellClickEvent", function(oArgs) { handleConfigCellClickEvent(oArgs, this, false); }); myDataTable.subscribe("rowSelectEvent", function(oArgs) { var tmpRec = oArgs.record; if (myDataTable.subTables && myDataTable.subTables.length > 0) { for (i = 0; i < myDataTable.subTables.length; i++) { myDataTable.subTables[i].oDS.handleResponse("", tmpRec.getData(myDataTable.subTables[i].oName), { success: myDataTable.subTables[i].oDT.onDataReturnInitializeTable, scope: myDataTable.subTables[i].oDT }, myDataTable, 999); } } }); myDataTable.cleanup = function() { this.unsubscribeAll("cellMouseoverEvent"); this.unsubscribeAll("rowClickEvent"); this.unsubscribeAll("tableKeyEvent"); this.unsubscribeAll("cellMousedownEvent"); this.unsubscribeAll("tableFocusEvent"); this.unsubscribeAll("tableBlurEvent"); this.unsubscribeAll("cellClickEvent"); this.unsubscribeAll("rowSelectEvent"); for (var idx = 0; idx < this.subTables.length; idx++) { this.subTables[idx].oDT.cleanup(); this.subTables[idx].oDT.parentDT = null; this.subTables[idx].oDT.destroy(); this.subTables[idx].oDT = null; this.subTables[idx].oDS = null; } oContextMenu.dt = null; oContextMenu.unsubscribeAll("beforeShow"); } myDataTable.getDefault = function(oTarget, record) { if ( record.getData('_key') in cS ) { if(cS[record.getData('_key')].defaultValue) return cS[record.getData('_key')].defaultValue ; } else if ( ( record.getData('_key') + tabDivName) in cS){ if ( cS[record.getData('_key')+ tabDivName].defaultValue ) return cS[record.getData('_key') + tabDivName].defaultValue ; } else { var cols = this.getColumnSet(); var tmp = record.getData('params').split("subType="); var tmp1; if (tmp.length > 1) tmp1 = tmp[1].split("::"); if( (record.getData('_key') + tmp1[0]) in cS) { if (cS[record.getData('_key') + tmp1[0]].defaultValue) return ( cS[record.getData('_key') + tmp1[0]].defaultValue); } else return ''; } } tabView.addListener("activeIndexChange", function(oArgs) { top.document.activeTab = tabView.getTab(oArgs.newValue).get("label"); setFocusToTable(myDataTable); if (top.document.needsRefresh === true) { top.document.navDT.clickCurrentSelOrName(top.document.navDT); return false; } }); tab.removeListener(listenEvent); if (typeof (top.document.selectRecord) !== 'undefined' && top.document.selectRecord.length > 0) { if (!top.document.selectRecordField || top.document.selectRecordField.length === 0) top.document.selectRecordField = 'name'; top.document.navDT.selectRecordAndClick(myDataTable, top.document.selectRecord, top.document.selectRecordClick, top.document.selectRecordField); top.document.selectRecord = ''; top.document.selectRecordField = ''; top.document.selectRecordClick = false; } else myDataTable.selectRow(0); if (tabView.inInit) { top.document.navDT.focus(); myDataTable.fireEvent("tableBlurEvent"); tabView.inInit = false; } else setFocusToTable(myDataTable); return { oDS: myDataSource, oDT: myDataTable }; } (); }); } function createTabDivsForComp(compName) { if (typeof (compTabs[compName]) === 'undefined') return; var selected = true; document.getElementById('tabviewcontainerul').innerHTML = ''; var tabIdx = 0; for (i = 0; i < compTabs[compName].length; i++) { if (typeof (hiddenTabs) !== 'undefined' && YAHOO.lang.isArray(hiddenTabs) && isPresentInArr(hiddenTabs[compName], compTabs[compName][i])) continue; selected = createTabDivForComp(compTabs[compName][i], selected, tabIdx); tabIdx++; } } function createTabDivForComp(compName, selected, i) { var htmlString; if (selected) htmlString = '
  • ' + compName + '
  • '; else htmlString = '
  • ' + compName + '
  • '; document.getElementById('tabviewcontainerul').innerHTML += htmlString; return false; } function createDivInTabsForComp(compName) { if (typeof (compTabs[compName]) === 'undefined') return; var htmlStringForTabs = ''; for (i = 0; i < compTabs[compName].length; i++) { if (typeof (hiddenTabs) !== 'undefined' && YAHOO.lang.isArray(hiddenTabs) && isPresentInArr(hiddenTabs[compName], compTabs[compName][i])) continue; htmlStringForTabs += createDivsInTabsForComp(compTabs[compName][i], compName); } htmlStringForTabs +='
    '; document.getElementById('tabviewcontainercontent').innerHTML = htmlStringForTabs; } function createDivsInTabsForComp(tabName, compType) { var htmlString = '
    '; if (typeof(viewChildNodes) !== 'undefined' && isPresentInArr(viewChildNodes, compTabToNode[tabName])) htmlString = '
    '; htmlString += '
    '; return htmlString; } function initItemForRoxieSlaves(item) { item.depth = 0; item.name = "Roxie Cluster"; item.name_extra = ""; item.name_ctrlType = 0; item.parent = -1; item.netAddress = ""; item.netAddress_extra = ""; item.netAddress_ctrlType = 0; item.dataDirectory = ""; item.dataDirectory_extra = ""; item.dataDirectory_ctrlType = 0; item.itemType = ""; item.itemType_extra = ""; item.itemType_ctrlType = 0; item.compType = ""; } function initItemForThorTopology(item) { item.depth = 0; item.name = "Topology"; item.name_extra = ""; item.name_ctrlType = 0; item.process = ""; item.process_extra = ""; item.process_ctrlType = 0; item.parent = -1; item.netAddress = ""; item.netAddress_extra = ""; item.netAddress_ctrlType = 0; item.compType = "ThorCluster"; item._processId = ""; } function initItemForRoxieServers(item) { item.depth = 0; item.name = "Roxie Cluster"; item.name_extra = ""; item.name_ctrlType = 0; item.parent = -1; item.netAddress = ""; item.netAddress_extra = ""; item.netAddress_ctrlType = 0; item.port = ""; item.port_extra = ""; item.port_ctrlType = 0; item.dataDirectory = ""; item.dataDirectory_extra = ""; item.dataDirectory_ctrlType = 0; item.listenQueue = ""; item.listenQueue_extra = ""; item.listenQueue_ctrlType = 0; item.numThreads = ""; item.numThreads_extra = ""; item.numThreads_ctrlType = 0; item.requestArrayThreads = ""; item.requestArrayThreads_extra = ""; item.requestArrayThreads_ctrlType = 0; item.aclName = ""; item.aclName_extra = ""; item.aclName_ctrlType = 0; item.process = ""; item.process_extra = ""; item.process_ctrlType = 0; item.compType = ""; item.params = ""; } function handleConfigCellClickEvent(oArgs, caller, isComplex) { caller.clearTextSelection(); var target = oArgs.target; var record = caller.getRecord(target); var selRows = caller.getSelectedRows(); var alreadySel = false; var column = caller.getColumn(target); if (typeof (caller.editors) !== 'undefined') { for (i = 1; i < 7; i++) //caller.editors[i].cancel(); if (/*caller.editors[i] != column.editor && */caller.editors[i].isActive) { //caller.editors[i].save();//on blur already saves the changes return; } } var rec; for (i = 0; i < selRows.length; i++) { rec = caller.getRecord(selRows[i]); if (YAHOO.util.Dom.hasClass(caller.getTrEl(rec), 'outoffocus')) YAHOO.util.Dom.removeClass(caller.getTrEl(rec), 'outoffocus'); if (rec === record) { alreadySel = true; } } if (!alreadySel) { caller.unselectAllRows(); //row select is called after cellselect and it handles updating subtables, if any return; } if (oArgs.event.ctrlKey || top.document.forms['treeForm'].isLocked.value === 'false') return; var column = caller.getColumn(target); var type = record.getData(column.key + '_ctrlType'); var meta = record.getData(column.key + '_extra'); var asyncSubmitFn = function(callback, newValue) { var record = this.getRecord(), column = this.getColumn(), oldValue = this.value, datatable = this.getDataTable(); if (record.getData(column.key + '_required') === 1 && oldValue.length > 0 && newValue.length === 0) { alert("This is a required field and cannot be empty. Please enter a value"); column.editor.cancel(); return; } if (record.getData(column.key + '_onChange') === 1 && record.getData(column.key + '_onChangeMsg').length > 0) { if (!confirm(record.getData(column.key + '_onChangeMsg'))) { column.editor.cancel(); return; } } if (oldValue === newValue) { if (column.editor) column.editor.cancel(); if (datatable.gotonexttab === true) showNextCellEditor(this); else if (datatable.gotoprevtab === true) showPrevCellEditor(this); return; } var attrName = getAttrName(datatable, column, record, isComplex); // = record.getData('name'); var recordIndex = datatable.getRecordIndex(record); var compName = top.document.navDT.getRecord(top.document.navDT.getSelectedRows()[0]).getData('Name'); var bldSet = top.document.navDT.getRecord(top.document.navDT.getSelectedRows()[0]).getData('BuildSet'); if (compName === "Hardware" && attrName === "netAddress") { var errMsg = ""; errMsg = isValidIPAddress(newValue, "netAddress", true, false); if (errMsg.length > 0) { alert(errMsg); column.editor.cancel(); return false; } } if (bldSet === "roxie" && attrName === "dataDirectory") { if (newValue === '') { alert('Roxie data directory cannot be empty'); return; } if (!confirm("The primary data directory for other farms and agents will be changed to the same value. Do you want to continue?")) { for (i = 1; i < 7; i++) if (caller.editors[i].isActive) caller.editors[i].cancel(); return false; } } else if (compName === 'Directories' && attrName === 'dir' && caller.subTables) { if (newValue.indexOf('[NAME]') === -1 || (newValue.indexOf('[INST]') === -1 && newValue.indexOf('[COMPONENT]') === -1)) { alert('Common directory entries must have "[NAME]" and either "[INST]" or "[COMPONENT]"'); return; } } var category = "Software"; var params = record.getData('params'); if (compName === "Hardware") category = "Hardware"; else if (compName === "Builds") category = "Programs"; else if (compName === "Environment") category = "Environment"; else if (compName === "topology") { category = 'Topology'; params = ''; var parRec = record; var i = 0; while (true) { if (parRec.getData('parent') != -1) { params += 'inner' + i + '_name=' + parRec.getData('name') + '::' + 'inner' + i++ + '_value=' + parRec.getData('value') + "::"; parRec = getRecord(datatable, parRec.getData('parent')); } else break; } } if (record.getData(column.key + '_ctrlType') === 5) { caller.editors[5].cancel(); top.document.navDT.promptVerifyPwd(category, params, attrName, oldValue, newValue, recordIndex + 1, callback); return false; } var parRec; if (caller.parentDT) { for (var idx = 0; idx < caller.parentDT.subTables.length; idx++) { if (caller === caller.parentDT.subTables[idx].oDT) { parRec = caller.parentDT.getRecord(caller.parentDT.getSelectedRows()[0]).getData(caller.parentDT.subTables[idx].oName); var paramstr = caller.parentDT.getRecord(caller.parentDT.getSelectedRows()[0]).getData('params'); var index = paramstr.indexOf("::Update"); if (index !== -1) params += paramstr.substr(index); break; } } } var form = top.window.document.forms['treeForm']; top.document.startWait(document); var xmlArgs = argsToXml(category, params, attrName, oldValue, newValue, recordIndex + 1, record.getData(column.key + '_onChange')); YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/SaveSetting', { success: function(o) { if (o.status === 200) { if (o.responseText.indexOf("/g); var prevVal, prevVal1, updateAttr1, updateVal, updateVal1; if (updateAttr[1].indexOf("") !== 0) { updateAttr1 = updateAttr[1].split(/<\/UpdateAttr>/g); updateVal = o.responseText.split(//g); updateVal1 = updateVal[1].split(/<\/UpdateValue>/g); if (updateVal1[0].indexOf("<") === 0) caller.updateCell(record, updateAttr1[0], ""); else caller.updateCell(record, updateAttr1[0], updateVal1[0]); prevVal = o.responseText.split(//g); prevVal1 = prevVal[1].split(/<\/PrevValue>/g); } var newParams = updateParams(record, attrName, oldValue, newValue, updateAttr1, prevVal1, updateVal1); var newkey = '::Update'; var idx = 1; if (typeof (newParams) !== 'undefined') { while (true) { var tmpArr = newParams.split(newkey + idx); if (tmpArr.length === 1) break; idx++; } if (newParams.length > 0) record.setData('params', newParams); if (caller.subTables) { for (var tabidx = 0; tabidx < caller.subTables.length; tabidx++) { var subtablerecset = caller.subTables[tabidx].oDT.getRecordSet(); var subrecsetlen = subtablerecset.getLength(); for (var recidx = 0; recidx < subrecsetlen; recidx++) { var subrec = subtablerecset.getRecord(recidx); newParams = updateParams(subrec, attrName, oldValue, newValue, updateAttr1, prevVal1, updateVal1); subrec.setData('params', newParams); } } } else if (attrName === 'name' && record.getData('compType') === 'Environment') { var recSet = datatable.getRecordSet(); var recSetLen = recSet.getLength(); var parent = record.getData('parent'); for (var i = 0; i < recSetLen; i++) { var r = recSet.getRecord(i); if (r != record && r.getData('parent') === parent) r.setData('params', newParams); } } } callback(true, newValue); if (compName === "topology") { //refresh for topology to refresh the left hand side values top.document.navDT.clickCurrentSelOrName(top.document.navDT); } if (caller.parentDT) { parRec[recordIndex] = record.getData(); } if (datatable.gotonexttab === true) showNextCellEditor(this); else if (datatable.gotoprevtab === true) showPrevCellEditor(this); var refreshPage = o.responseText.split(//g); if (refreshPage[1].indexOf("") !== 0) { var refreshPage1 = refreshPage[1].split(/<\/Refresh>/g); if (refreshPage1[0] === "true") doPageRefresh(); } } else if (o.responseText.indexOf("/g); var temp1 = temp[1].split(/<\/td>/g); alert(temp1[0]); column.editor.cancel(); top.document.stopWait(document); callback(); if (temp1[0].indexOf("Cannot modify") === 0) { form.isLocked.value = "false"; doPageRefresh(); } } } else { alert(r.replyText); callback(); } top.document.stopWait(document); }, failure: function(o) { alert(o.statusText); callback(); top.document.stopWait(document); }, scope: this }, top.document.navDT.getFileName(true) + 'XmlArgs=' + xmlArgs); }; if (typeof (caller.editors) === 'undefined') { caller.editors = { 1: new YAHOO.widget.TextboxCellEditor({ disableBtns: true, asyncSubmitter: asyncSubmitFn }), 2: new YAHOO.widget.TextboxCellEditor({ disableBtns: true, asyncSubmitter: asyncSubmitFn, validator: function(val) { val = parseFloat(val); if (YAHOO.lang.isNumber(val)) { return val; } } }), 4: new YAHOO.widget.DropdownCellEditor({ dropdownOptions: meta, disableBtns: true, asyncSubmitter: asyncSubmitFn }), 3: new YAHOO.widget.RadioCellEditor({ radioOptions: ["true", "false"], disableBtns: true, asyncSubmitter: asyncSubmitFn }), 5: new YAHOO.widget.PasswordCellEditor({ disableBtns: true, asyncSubmitter: asyncSubmitFn }), 6: new YAHOO.widget.TextareaCellEditor({ disableBtns: true, asyncSubmitter: asyncSubmitFn }) }; } if (typeof (type) === 'undefined') type = 1; if (type === 0) return; else { if (type === 4) { caller.editors[type].destroy(); if (caller.parentDT && caller.parentDT.subTables[0].oName === '_Override' && column.key == 'instance') { var parRec = caller.parentDT.getRecord(caller.parentDT.getSelectedRows()[0]); var params = "queryType=multiple::category=Software::buildSet=" + record.getData('component') + "::attrName=name"; if (record.getData('instance') === '') params += "::excludePath=Directories/Category[@name='" + parRec.getData('name') + "']/Override[@component='" + record.getData('component') + "']::excludeAttr=@instance"; YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/GetValue', { success: function(o) { if (o.responseText.indexOf("/g); var tmp1; if (tmp.length > 1) { tmp1 = tmp[1].split(/<\/ReqValue>/g); if (tmp1.length > 1) instances = tmp1[0]; else instances = ''; meta = instances.split(/,/g); if (typeof (meta[0]) !== 'undefined' && meta[0] != "") meta.unshift(""); caller.editors[type] = new YAHOO.widget.DropdownCellEditor({ dropdownOptions: meta, disableBtns: true, asyncSubmitter: asyncSubmitFn }); column.editor = caller.editors[type]; caller.showCellEditor(target); } } }, failure: function(o) { }, scope: this }, top.document.navDT.getFileName(true) + 'Params=' + params); return; } else if (YAHOO.lang.isString(meta) && meta.indexOf('#') === 0) { var extrainfo = meta.split(/#/g); if (extrainfo.length >= 1) { var attribName = getAttrName(caller, column, record, isComplex); var extra = extrainfo[0]; if (extra.length === 0) extra = extrainfo[1]; var params = "queryType=xpathType::" + record.getData('params') + "::attrName=" + attribName + "::xpath=" + extra; YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/GetValue', { success: function(o) { if (o.responseText.indexOf("/g); var tmp1, values; if (tmp.length > 1) { tmp1 = tmp[1].split(/<\/ReqValue>/g); if (tmp1.length > 1) values = tmp1[0]; else values = ''; meta = values.split(/,/g); if (typeof (meta[0]) !== 'undefined' && meta[0] != "") meta.unshift(""); caller.editors[type] = new YAHOO.widget.DropdownCellEditor({ dropdownOptions: meta, disableBtns: true, asyncSubmitter: asyncSubmitFn }); column.editor = caller.editors[type]; caller.showCellEditor(target); } } }, failure: function(o) { }, scope: this }, top.document.navDT.getFileName(true) + 'Params=' + params); return; } } else if (record.getData(column.key) === '') { if (typeof (meta[0]) !== 'undefined' && meta[0] != "") meta.unshift(""); } caller.editors[type] = new YAHOO.widget.DropdownCellEditor({ dropdownOptions: meta, disableBtns: true, asyncSubmitter: asyncSubmitFn }); } else if (type === 6) { if (record.getData(column.key).indexOf(' ') != -1) { var str = record.getData(column.key); //str.replace(/\&##13;\&##10;/g, '\r\n'); var exp = ' '; var re = new RegExp(exp); var s = re.exec(str); var x = str.substr(0, s.index); x += '\n'; x += str.substr(s.lastIndex); //not working.. need to replace above workaround //str.replace(re, '\r\n'); record.setData(column.key, x); } } column.editor = caller.editors[type]; caller.editors[type].subscribe("cancelEvent", function(oArgs) { this.unsubscribe("cancelEvent"); if (caller.parentDT) { for (var idx = 0; idx < caller.parentDT.subTables.length; idx++) { var tmpdt = caller.parentDT.subTables[idx].oDT; if (typeof (tmpdt.editors) !== 'undefined') { for (i = 1; i < 7; i++) if (tmpdt.editors[i].isActive) return; } } } caller.focus(); }); caller.editors[type].subscribe("saveEvent", function(oArgs) { this.unsubscribe("saveEvent"); if (caller.parentDT) { for (var idx = 0; idx < caller.parentDT.subTables.length; idx++) { var tmpdt = caller.parentDT.subTables[idx].oDT; if (typeof (tmpdt.editors) !== 'undefined') { for (i = 1; i < 7; i++) if (tmpdt.editors[i].isActive) return; } } } caller.focus(); }); caller.editors[type].subscribe("blurEvent", function(oArgs) { this.unsubscribe("blurEvent"); this.save(); }); caller.editors[type].subscribe("keydownEvent", function(oArgs) { if (oArgs.event.keyCode === 9) { this.unsubscribe("keydownEvent"); if (oArgs.event.shiftKey) caller.gotoprevtab = true; else caller.gotonexttab = true; this.fireEvent("blurEvent", { editor: this }); YAHOO.util.Event.stopEvent(oArgs.event); } }); } caller.showCellEditor(target); } function createMultiColTreeCtrlForComp(rows, compName, subRecordIndex) { var createFn = function() { YAHOO.example.Basic = function() { var Dom = YAHOO.util.Dom, Lang = YAHOO.lang; var hasChildren = {}; var myDTDropTgts = new Array(); var myColumnDefs = new Array(); var myDataSource = new YAHOO.util.DataSource(rows); myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY; var colIndex1 = 0; var colIndex2 = 0; var columnFields = new Array(); for (var i in rows[subRecordIndex]) { if ((i.indexOf('_extra') === -1) && (i.indexOf('_ctrlType') === -1) && (i.indexOf('_required') === -1) && (i.indexOf('_onChange') === -1) && (i.indexOf('params') === -1) && (i.indexOf('depth') === -1) && (i.indexOf('parent') === -1) && (i.indexOf('compType') === -1) && (i.indexOf('id') === -1)) { if (i === 'icon') myColumnDefs[0] = { key: "icon", label: "" }; else if (i === 'name') myColumnDefs[colIndex[i + compName]] = { key: "name", resizeable: true, width: 250, maxAutoWidth: 250, formatter: function(el, oRecord, oColumn, oData) { el.innerHTML = "
    " + oData + "
    "; Dom.addClass(el, 'yui-dt-liner depth' + oRecord.getData('depth')); }, scrollable: true }; else myColumnDefs[colIndex[i + compName]] = { key: i, resizeable: true, formatter: formatterDispatcher, editor: new YAHOO.widget.BaseCellEditor() }; } columnFields[colIndex2++] = i; } myDataSource.responseSchema = { fields: columnFields }; tabNameTemp = compName + 'Tab'; var dt = new YAHOO.widget.DataTable(tabNameTemp, myColumnDefs, myDataSource, { formatRow: function(row, record) { var prnt = record.getData('parent'); if (prnt !== -1 && compName !== 'Deploy') { Dom.addClass(row, 'hidden'); } else //reset if we are starting or refreshing just the table hasChildren = {}; hasChildren[prnt] = true; return true; }, width: "100%"/*, initialLoad:false*/ }); tab.dt = dt; tab.dataSource = myDataSource; dt.myDTDropTgts = myDTDropTgts; //dt.subscribe("rowMouseoverEvent", dt.onEventHighlightRow); dt.subscribe("rowMouseoutEvent", dt.onEventUnhighlightRow); dt.subscribe("cellMousedownEvent", function(oArgs) { //on left click, the cellClickEvent is fired, taking care of the behaviour //on right click, we use cellMousedownEvent to select the row, as well as cause the page to display on the right if (oArgs.event.button === 1 || oArgs.event.button === 0) return; var selRows = this.getSelectedRows(); if (selRows && selRows.length > 0) { if (this.isSelected(this.getRecord(oArgs.target))) return; } this.onEventSelectRow(oArgs) }); dt.subscribe("rowClickEvent", dt.onEventSelectRow); dt.selectionToXML = function(targetRec) { var xmlStr = ""; var parentName; if (typeof (targetRec) !== 'undefined') { var parentId = targetRec.getData('parent'); var ds = dt.getDataSource(); //var parentRec = ds.liveData[parentId]; var parentRec = getRecord(ds, parentId); xmlStr += ""; } xmlStr += ""; return xmlStr; } dt.subscribe('renderEvent', function() { var recSet = this.getRecordSet(); var recSetLen = recSet.getLength(); var expand = true; var ddindex = 0; if (compName !== 'Deploy') { for (var i = 0; i < recSetLen; i++) { var r = recSet.getRecord(i); if (hasChildren[r.getData('id')]) { var tdEl = this.getFirstTdEl(r); var divEl = Dom.getChildren(tdEl); var children = Dom.getChildren(divEl[0]); children[0].id = "depth" + (r.getData('depth') - 1); var inner = children[0].innerHTML; var temp = inner.split(" "); if (temp[0].toLowerCase() !== "" + inner; Dom.addClass(this.getTrEl(r), 'collapsed'); } else children[0].innerHTML = "" + inner; } if (top.document.navDT.lastSelIndex > 0) dt.expandRecord(top.document.navDT.lastSelIndex); else if (expand) dt.expandRecord(); }); dt.sendCommand = function(record) { if (record.getData('parent') === -1) { Dom.addClass(Dom.get('tabviewcontainer1'), 'hidden'); Dom.setStyle(Dom.get('tabviewcontainer'), 'height', '100%'); Dom.setStyle(Dom.get('tabviewcontainer'), 'border-bottom-style', 'none'); } else { Dom.removeClass(Dom.get('tabviewcontainer1'), 'hidden'); Dom.setStyle(Dom.get('tabviewcontainer'), 'height', '50%'); Dom.setStyle(Dom.get('tabviewcontainer'), 'overflow', 'auto'); Dom.setStyle(Dom.get('tabviewcontainer'), 'border-bottom-style', 'double'); var xmlArgs = dt.selectionToXML(record); YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/GetBuildSetInfo', { success: function(o) { if (o.status === 200) { if (o.responseText.indexOf("/g); var temp1 = temp[1].split(/<\/XmlArgs>/g); dt.buildSetDataSource.handleResponse("", o, { success: dt.buildSetTable.onDataReturnInitializeTable, scope: dt.buildSetTable }, this, 999); } else if (o.responseText.indexOf("/g); var temp1 = temp[1].split(/<\/body>/g); //dt.buildSetTable.deleteRows(0); dt.buildSetDataSource.push(temp1[0]); dt.buildSetDataSource.sendRequest("moredata", { success: dt.buildSetTable.onDataReturnInsertRows, scope: dt.buildSetTable }); } } else { alert(r.replyText); } }, failure: function(o) { alert(o.statusText); }, scope: this }, top.document.navDT.getFileName(true) + 'cmd=SaveSetting&XmlArgs=' + xmlArgs); } } dt.subscribe("tableKeyEvent", function(oArgs) { if (oArgs.event.keyCode === 192 && oArgs.event.ctrlKey === true) setFocusToNavTable(); else if (oArgs.event.keyCode === 39 || oArgs.event.keyCode === 37) { var rec = dt.getRecord(dt.getSelectedRows()[0]); if (rec) dt.expColRecord(rec.getData('id')); } else handleComplexTableKeyDown(oArgs, dt); }); dt.subscribe("cellClickEvent", function(oArgs) { dt.clearTextSelection(); var target = oArgs.target; var record = this.getRecord(target); var selectedRows; var eventTarget = YAHOO.util.Event.getTarget(oArgs.event); if (eventTarget.id.indexOf("deployCheck") !== -1) { var recSet = this.getRecordSet(); var recSetLen = recSet.getLength(); var self = this; var id = record.getData('id'); var checkDependents = function(id, checked) { for (var i = 0; i < recSetLen; i++) { var r = recSet.getRecord(i); if (r.getData('parent') === id) { var elem = document.getElementById("deployCheck" + r.getData('id')); elem.checked = checked; checkDependents(r.getData('id'), checked); } } }; var checkParents = function(id, parentId, checked) { if (!checked) { for (var i = 0; i < recSetLen; i++) { var r = recSet.getRecord(i); if (r.getData('id') === parentId) { var elem = document.getElementById("deployCheck" + r.getData('id')); elem.checked = checked; checkParents(0, r.getData('parent'), checked); } } } else { if (parentId === -1) return; var allChecks = true; var newParentId = 0; for (var i = 0; i < recSetLen; i++) { var r = recSet.getRecord(i); if (r.getData('parent') === parentId) { allChecks &= document.getElementById("deployCheck" + r.getData('id')).checked; if (!allChecks) break; } } for (var i = 0; i < recSetLen; i++) { var r = recSet.getRecord(i); if (r.getData('id') === parentId) { document.getElementById("deployCheck" + parentId).checked = allChecks; newParentId = r.getData('parent'); break; } } checkParents(parentId, newParentId, checked); } }; var saveSelectedComps = function(parentId) { var xmlStr = ''; var flag = false; for (var i = 1; i < recSetLen; i++) { var r = recSet.getRecord(i); if (r.getData('parent') === parentId) { if (document.getElementById("deployCheck" + r.getData('id')).checked) { if (r.getData('buildSet') === "Instance") { xmlStr += ""; } else { xmlStr += "<" + r.getData('buildSet'); xmlStr += " name=\"" + r.getData('name'); xmlStr += "\" >"; xmlStr += saveSelectedComps(r.getData('id')); xmlStr += ""; } } } } return xmlStr; } checkDependents(id, eventTarget.checked); checkParents(id, record.getData('parent'), eventTarget.checked); var xmlStr = ""; xmlStr += saveSelectedComps(0); xmlStr += ""; top.document.forms['treeForm'].compsToBeDeployed.value = xmlStr; return; } var eventTarget = YAHOO.util.Event.getTarget(oArgs.event); if (eventTarget.id.indexOf("pushbutton") === -1) { if (compName === 'Programs') { if (record.getData('parent') === -1) { Dom.addClass(Dom.get('tabviewcontainer1'), 'hidden'); Dom.setStyle(Dom.get('tabviewcontainer'), 'height', '100%'); Dom.setStyle(Dom.get('tabviewcontainer'), 'border-bottom-style', 'none'); } else dt.sendCommand(record); return; } else handleConfigCellClickEvent(oArgs, this, true); return true; } var parentId = record.getData('id'); var recSet = dt.getRecordSet(); //this.getRecordSet(); var recSetLen = recSet.getLength(); var self = dt; //this; var visibility = function(parentId, visible) { var count = 0; for (var i = 0; i < recSetLen; i++) { var r = recSet.getRecord(i); if (r.getData('parent') === parentId) { if (visible) { Dom.removeClass(self.getTrEl(r), 'hidden'); } else { Dom.addClass(self.getTrEl(r), 'hidden'); } count += visibility(r.getData('id'), visible && r.getData('expanded')); count++; } } return count; }; record.setData('expanded', !record.getData('expanded')); if (visibility(parentId, record.getData('expanded'))) { var tdEl = this.getFirstTdEl(record); var divEl = Dom.getChildren(tdEl); var children = Dom.getChildren(divEl[0]); var innerChild = children[0].children[0]; if (record.getData('expanded')) { Dom.addClass(this.getTrEl(record), 'expanded'); Dom.removeClass(this.getTrEl(record), 'collapsed'); Dom.addClass(innerChild, 'buttonexpanded'); Dom.removeClass(innerChild, 'buttoncollapsed'); } else { Dom.addClass(this.getTrEl(record), 'collapsed'); Dom.removeClass(this.getTrEl(record), 'expanded'); Dom.addClass(innerChild, 'buttoncollapsed'); Dom.removeClass(innerChild, 'buttonexpanded'); } } }); if (compName === 'Programs') { //also create the hidden table to display the buildset information var myBSColumnDefs = [{ key: "name", label: "File Name", resizeable: true }, { key: "method", label: "Method", resizeable: true }, { key: "srcPath", label: "Source Path", resizeable: true }, { key: "destPath", label: "Destination Path", resizeable: true }, { key: "destName", label: "Destination Name", resizeable: true}]; var xmlStr = ''; var myBSDataSource = new YAHOO.util.DataSource(xmlStr); myBSDataSource.responseType = YAHOO.util.DataSource.TYPE_XML; myBSDataSource.responseSchema = { resultNode: "File", fields: ["name", "method", "srcPath", "destPath", "destName"] }; var myBSDataTable = new YAHOO.widget.DataTable("tabviewcontainercontent1", myBSColumnDefs, myBSDataSource, { width: "100%"/*, initialLoad:false*/ }); dt.buildSetTable = myBSDataTable; dt.buildSetDataSource = myBSDataSource; } if (typeof (tabView) !== 'undefined' && tabView !== null) tabView.addListener("activeIndexChange", function(oArgs) { top.document.activeTab = tabView.getTab(oArgs.newValue).get("label"); setFocusToTable(dt); if (top.document.needsRefresh === true) { top.document.navDT.clickCurrentSelOrName(top.document.navDT); } }); dt.subscribe("rowSelectEvent", function(oArgs) { top.document.navDT.lastSelIndex = this.getRecordIndex(oArgs.record); }); var oContextMenu = new YAHOO.widget.ContextMenu(compName + 'Menu', { trigger: tabNameTemp, lazyload: true }); oContextMenu.dt = dt; oContextMenu.subscribe("beforeShow", onContextMenuBeforeShow); dt.expandRecord = function(id) { var recSet = dt.getRecordSet(); if (typeof (id) === 'undefined') { var tdEl = dt.getFirstTdEl(recSet.getRecord(0)); var children = Dom.getChildren(tdEl); if (Dom.hasClass(children[0].children[0].children[0], 'yui-button')) { children[0].children[0].children[0].click(); return; } } var recSetLen = recSet.getLength(); for (var i = 0; i < recSetLen; i++) { var r = recSet.getRecord(i); if (r.getData('id') === id) { if (r.getData('parent') != -1) dt.expandRecord(r.getData('parent')); var tdEl = dt.getFirstTdEl(r); var children = Dom.getChildren(tdEl); if (Dom.hasClass(children[0].children[0].children[0], 'yui-button') && Dom.hasClass(children[0].children[0].children[0], 'buttoncollapsed')) { children[0].children[0].children[0].click(); break; } else { dt.unselectAllRows(); dt.selectRow(r); break; } } } } dt.expColRecord = function(id) { if (typeof (id) === 'undefined') return; var recSet = dt.getRecordSet(); var recSetLen = recSet.getLength(); for (var i = 0; i < recSetLen; i++) { var r = recSet.getRecord(i); if (r.getData('id') === id) { if (r.getData('parent') != -1) dt.expandRecord(r.getData('parent')); var tdEl = dt.getFirstTdEl(r); var children = Dom.getChildren(tdEl); if (Dom.hasClass(children[0].children[0].children[0], 'yui-button')) { children[0].children[0].children[0].click(); break; } } } } dt.cleanup = function() { this.unsubscribeAll("cellMouseoverEvent"); this.unsubscribeAll("rowClickEvent"); this.unsubscribeAll("tableKeyEvent"); this.unsubscribeAll("cellMousedownEvent"); this.unsubscribeAll("tableFocusEvent"); this.unsubscribeAll("tableBlurEvent"); this.unsubscribeAll("cellClickEvent"); this.unsubscribeAll("rowSelectEvent"); this.unsubscribeAll("rowMouseoutEvent"); this.unsubscribeAll("renderEvent"); var i; for (i = 0; i < this.myDTDropTgts.length; i++) { if (this.myDTDropTgts[i]) { this.myDTDropTgts[i].unreg(); delete this.myDTDropTgts[i]; } } oContextMenu.dt = null; oContextMenu.unsubscribeAll("beforeShow"); } if (tabView.inInit) { top.document.navDT.focus(); dt.fireEvent("tableBlurEvent"); tabView.inInit = false; } else setFocusToTable(dt); if (listenEvent != "load") tab.removeListener(listenEvent); return { oDS: myDataSource, oDT: dt/*, oTV: myTabView*/ }; } (); }; if (compName !== "Deploy") { if (!top.document.RightTabView) top.document.RightTabView = new YAHOO.widget.TabView('tabviewcontainer'); var tabView = top.document.RightTabView; var tabs = tabView.get("tabs"); var tab; for (i = 0; i < tabs.length; i++) { if (tabs[i].get("label") === compName) { tab = tabs[i]; break; } } } var listenEvent = "activeChange"; if (typeof (tab) === 'undefined') { tab = window; listenEvent = "load"; YAHOO.util.Event.addListener(tab, listenEvent, createFn); } else tab.addListener(listenEvent, createFn); } function createEnvXmlView(allrows, compName, subRecordIndex) { var createFn = function() { YAHOO.example.Basic = function() { var Dom = YAHOO.util.Dom, Lang = YAHOO.lang; var hasChildren = {}; top.document.startWait(document); var myDTDropTgts = new Array(); var myColumnDefs = new Array(); var rows = new Array(); rows[0] = allrows[0]; var expanded = {}; var myDataSource = new YAHOO.util.DataSource(rows); myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY; var colIndex1 = 0; var colIndex2 = 0; var columnFields = new Array(); for (var i in rows[subRecordIndex]) { if ((i.indexOf('_extra') === -1) && (i.indexOf('_ctrlType') === -1) && (i.indexOf('_required') === -1) && (i.indexOf('_onChange') === -1) && (i.indexOf('params') === -1) && (i.indexOf('depth') === -1) && (i.indexOf('parent') === -1) && (i.indexOf('compType') === -1) && (i.indexOf('id') === -1)) { if (i === 'icon') myColumnDefs[0] = { key: "icon", label: "" }; else if (i === 'name') myColumnDefs[colIndex[i + compName]] = { key: "name", resizeable: true, width: 250, maxAutoWidth: 250, formatter: function(el, oRecord, oColumn, oData) { el.innerHTML = "
    " + oData + "
    "; Dom.addClass(el, 'yui-dt-liner depth' + oRecord.getData('depth')); }, scrollable: true }; else myColumnDefs[colIndex[i + compName]] = { key: i, resizeable: true, formatter: formatterDispatcher, editor: new YAHOO.widget.BaseCellEditor() }; } columnFields[colIndex2++] = i; } myDataSource.responseSchema = { fields: columnFields }; tabNameTemp = compName + 'Tab'; var dt = new YAHOO.widget.DataTable(tabNameTemp, myColumnDefs, myDataSource, { formatRow: function(row, record) { var prnt = record.getData('parent'); setChildrenOf(prnt, record); if (prnt !== -1 && compName !== 'Deploy') { Dom.addClass(row, 'hidden'); } return true; }, width: "100%" }); tab.dt = dt; tab.dataSource = myDataSource; dt.subscribe("rowMouseoutEvent", dt.onEventUnhighlightRow); dt.subscribe("cellMousedownEvent", function(oArgs) { //on left click, the cellClickEvent is fired, taking care of the behaviour //on right click, we use cellMousedownEvent to select the row, as well as cause the page to display on the right if (oArgs.event.button === 1 || oArgs.event.button === 0) return; var selRows = this.getSelectedRows(); if (selRows && selRows.length > 0) { if (this.isSelected(this.getRecord(oArgs.target))) return; } this.onEventSelectRow(oArgs) }); dt.subscribe("rowClickEvent", dt.onEventSelectRow); dt.selectionToXML = function(targetRec) { var xmlStr = ""; var parentName; if (typeof (targetRec) !== 'undefined') { var parentId = targetRec.getData('parent'); var ds = dt.getDataSource(); var parentRec = getRecord(ds, parentId); xmlStr += ""; } xmlStr += ""; return xmlStr; } dt.subscribe('renderEvent', function() { var recSet = this.getRecordSet(); var recSetLen = recSet.getLength(); var recs = recSet.getRecords(); var expand = true; var fnDomGetCh = Dom.getChildren; var fnDomGetFCh = Dom.getFirstChild; var fnDomAddCl = Dom.addClass; var hC = hasChildren; for (var i = 0; i < recSetLen; i++) { var r = recs[i]; var id = r.getData('id'); if (id === 0 && (hC[id] || allrows.length)) { hC[0] = true; var children = fnDomGetCh(fnDomGetFCh(this.getFirstTdEl(r))); children[0].id = "depth" + (r.getData('depth') - 1); var inner = children[0].innerHTML; if (inner.indexOf(" rows[parentIds[parentIds.length - 1]].depth) parentIds[parentIds.length] = item.id; else if (item.depth === rows[parentIds[parentIds.length - 1]].depth) { item.parent = parentIds[parentIds.length - 2]; parentIds[parentIds.length - 1] = item.id; } else { var depth = rows[parentIds[parentIds.length - 1]].depth - item.depth; while (depth--) parentIds.pop(); item.parent = parentIds[parentIds.length - 2]; parentIds[parentIds.length - 1] = item.id; } } function onMenuItemClickAddFarm(p_sType, p_aArgs, p_oValue) { if (top.document.forms['treeForm'].isLocked.value === 'false') return; top.document.navDT.displayRoxieClusterAddFarm(top.document.navDT, ""); return; } function onMenuItemClickAddServers(p_sType, p_aArgs, p_oValue) { if (top.document.forms['treeForm'].isLocked.value === 'false') return; top.document.navDT.displayRoxieClusterAddFarm(top.document.navDT, this.parent.contextEventTarget.lastChild.nodeValue); return; } function roxieSelectionToXML(table, type, selectedRows, compName) { var xmlStr = ""; if (typeof (selectedRows) !== 'undefined') { for (var i = 0; i < selectedRows.length; i++) { var parentRec = getRecord(table, table.getRecord(selectedRows[i]).getData('parent')); if (typeof (parentRec) === 'undefined') xmlStr += ""; else xmlStr += "<" + table.getRecord(selectedRows[i]).getData('compType') + " name=\"" + table.getRecord(selectedRows[i]).getData('name') + "\" parent=\"" + parentRec.getData('name') + "\"/>"; } } xmlStr += ""; return xmlStr; } function onMenuItemClickDelete(p_sType, p_aArgs, p_oValue) { var Dom = YAHOO.util.Dom; var oTarget = this.parent.contextEventTarget; var oSelectedTR = oTarget.nodeName.toUpperCase() === "TR" ? oTarget : Dom.getAncestorByTagName(oTarget, "TR"); var recSet = this.parent.dt.getRecordSet(); var selRows = this.parent.dt.getSelectedRows(); var msg = ""; if (this.parent.id === "AgentsMenu") { if (this.parent.dt.getRecord(selRows[0]).getData('name') !== 'Roxie Cluster') msg = "You cannot selectively delete agents or channels!\n"; msg += "Are you sure you want to delete the entire agent configuration?"; } else { if (selRows.length > 1) msg = "Are you sure you want to delete the selected items?"; else { var record = recSet.getRecord(oSelectedTR.id); msg = "Are you sure you want to delete " + record.getData('name') + "?"; } } if (confirm(msg)) { top.document.startWait(document); var compName = top.document.navDT.getRecord(top.document.navDT.getSelectedRows()[0]).getData('Name'); var xmlStr = roxieSelectionToXML(this.parent.dt, "RoxieFarm", selRows, compName); YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/HandleRoxieOperation', { success: function(o) { var form = top.window.document.forms['treeForm']; form.isChanged.value = "true"; top.document.stopWait(document); top.document.navDT.clickCurrentSelOrName(top.document.navDT); }, failure: function(o) { top.document.stopWait(document); alert(o.statusText); }, scope: this }, top.document.navDT.getFileName(true) + 'Cmd=DeleteRoxieFarm&XmlArgs=' + xmlStr); } } function onMenuItemClickSlaveConfig(p_sType, p_aArgs, p_oValue) { if (top.document.forms['treeForm'].isLocked.value === 'false') return; top.document.navDT.promptSlaveConfig(top.document.navDT); } function onMenuItemClickFarmReplace(p_sType, p_aArgs, p_oValue) { if (top.document.forms['treeForm'].isLocked.value === 'false') return; top.document.navDT.displayRoxieClusterReplaceServer(); return; } function onMenuItemClickImportServers(p_sType, p_aArgs, p_oValue) { } function onMenuItemClickExportServers(p_sType, p_aArgs, p_oValue) { } function onMenuItemClick(p_sType, p_aArgs, p_oValue) { } function onMenuItemClickTopology(p_sType, p_aArgs, p_oValue) { if (top.document.forms['treeForm'].isLocked.value === 'false') return; var oTarget = this.parent.contextEventTarget; var Dom = YAHOO.util.Dom; var oSelectedTR = oTarget.nodeName.toUpperCase() === "TR" ? oTarget : Dom.getAncestorByTagName(oTarget, "TR"); var dt = this.parent.dt; var recSet = dt.getRecordSet(); var selRows = dt.getSelectedRows(); var menuItemName = this.cfg.getProperty("text"); var record = recSet.getRecord(selRows[0]); var type; //use 'name' instead of '_key' for complex tables var recName = record.getData('name'); var temp = new Array(); temp = recName.split(' '); var temp1 = new Array(); temp1 = menuItemName.split(' '); var oper = "Add"; if (menuItemName.indexOf("Delete") === 0) oper = "Delete"; var params = ''; var parRec = record; var i = 0; while (true) { if (parRec.getData('parent') != -1) { params += 'inner' + i + '_name=' + parRec.getData('name') + '::' + 'inner' + i++ + '_value=' + parRec.getData('value') + "::"; parRec = getRecord(dt, parRec.getData('parent')); } else break; } var xmlArgs = ""; YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/HandleTopology', { success: function(o) { var form = top.window.document.forms['treeForm']; form.isChanged.value = "true"; top.document.stopWait(document); top.document.navDT.clickCurrentSelOrName(top.document.navDT); }, failure: function(o) { top.document.stopWait(document); alert(o.statusText); }, scope: this }, top.document.navDT.getFileName(true) + 'Operation=' + oper + '&XmlArgs=' + xmlArgs); } function onMenuItemClickThorTopologyDelete(p_sType, p_aArgs, p_oValue) { if (top.document.forms['treeForm'].isLocked.value === 'false') return; var oTarget = this.parent.contextEventTarget; var Dom = YAHOO.util.Dom; var oSelectedTR = oTarget.nodeName.toUpperCase() === "TR" ? oTarget : Dom.getAncestorByTagName(oTarget, "TR"); var dt = this.parent.dt; var recSet = dt.getRecordSet(); var selRows = dt.getSelectedRows(); var menuItemName = this.cfg.getProperty("text"); //use 'name' instead of '_key' for complex tables var compName = top.document.navDT.getRecord(top.document.navDT.getSelectedRows()[0]).getData('Name'); var xmlStr = ""; for (var idx = 0; idx < selRows.length; idx++) { xmlStr += ""; } xmlStr += ""; YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/HandleThorTopology', { success: function(o) { if (o.responseText.indexOf("/g); var temp1 = temp[1].split(/<\/td>/g); top.document.stopWait(document); alert(temp1[0]); } else { var form = top.window.document.forms['treeForm']; form.isChanged.value = "true"; top.document.stopWait(document); top.document.navDT.clickCurrentSelOrName(top.document.navDT); } }, failure: function(o) { top.document.stopWait(document); alert(o.statusText); }, scope: this }, top.document.navDT.getFileName(true) + 'Operation=Delete&XmlArgs=' + xmlStr); } function onMenuItemClickThorTopology(p_sType, p_aArgs, p_oValue) { if (top.document.forms['treeForm'].isLocked.value === 'false') return; var oTarget = this.parent.contextEventTarget; var Dom = YAHOO.util.Dom; var oSelectedTR = oTarget.nodeName.toUpperCase() === "TR" ? oTarget : Dom.getAncestorByTagName(oTarget, "TR"); var dt = this.parent.dt; var recSet = dt.getRecordSet(); var selRows = dt.getSelectedRows(); var menuItemName = this.cfg.getProperty("text"); var record = recSet.getRecord(selRows[0]); var type; //use 'name' instead of '_key' for complex tables var recName = record.getData('name'); var temp = new Array(); temp = recName.split(' '); var temp1 = new Array(); temp1 = menuItemName.split(' '); var type = "Slave"; if (menuItemName === "Add Master...") type = "Master"; else if (menuItemName === "Add Spares...") type = "Spare"; top.document.navDT.promptThorTopology(top.document.navDT, type); } function onContextMenuBeforeShow(p_sType, p_aArgs) { if (!this.configContextMenuItems) { this.configContextMenuItems = { "Roxie Cluster": [ { text: "Add Farm", onclick: { fn: onMenuItemClickAddFarm} } ], "RoxieFarmProcess": [ //{text: "AddFarm", onclick: { fn: onMenuItemClickAddFarm}}, {text: "Add Servers", onclick: { fn: onMenuItemClickAddServers}}//, //{ text: "Replace...", onclick: { fn: onMenuItemClickFarmReplace}}//, //{text: "ImportServers...", onclick: { fn: onMenuItemClickImportServers}}, //{text: "ExportServers...", onclick: { fn: onMenuItemClickExportServers}} ], "RoxieServerProcess": [ { text: "Replace...", onclick: { fn: onMenuItemClickFarmReplace}}//, //{text: "ImportServers", onclick: { fn: onMenuItemClickImportServers}}, //{text: "ExportServers", onclick: { fn: onMenuItemClickExportServers}} ], "RoxieSlave": [ { text: "Reconfigure Agents...", onclick: { fn: onMenuItemClickSlaveConfig}} ], "Delete": [ { text: "Delete", onclick: { fn: onMenuItemClickDelete} } ], "Topology": [ { text: "Add Cluster", onclick: { fn: onMenuItemClickTopology} } ], "TopologyEclCCServer": [ { text: "Delete", onclick: { fn: onMenuItemClickTopology} } ], "TopologyEclScheduler": [ { text: "Delete", onclick: { fn: onMenuItemClickTopology} } ], "TopologyCluster": [ { text: "Add EclAgent", onclick: { fn: onMenuItemClickTopology} }, { text: "Add EclCCServer", onclick: { fn: onMenuItemClickTopology} }, { text: "Add EclScheduler", onclick: { fn: onMenuItemClickTopology} }, { text: "Add Thor", onclick: { fn: onMenuItemClickTopology} }, { text: "Add Roxie", onclick: { fn: onMenuItemClickTopology} }, { text: "Delete", onclick: { fn: onMenuItemClickTopology} } ], "TopologyThor": [ { text: "Delete", onclick: { fn: onMenuItemClickTopology} } ], "TopologyRoxie": [ { text: "Delete", onclick: { fn: onMenuItemClickTopology} } ], "TopologyEclAgent": [ { text: "Delete", onclick: { fn: onMenuItemClickTopology} } ], "ThorClusterRoot": [ { text: "Add Master...", onclick: { fn: onMenuItemClickThorTopology} }, { text: "Add Spares...", onclick: { fn: onMenuItemClickThorTopology} } ], "ThorClusterMaster": [ { text: "Add Slaves...", onclick: { fn: onMenuItemClickThorTopology} }, { text: "Add Spares...", onclick: { fn: onMenuItemClickThorTopology} } ], "ThorClusterSlave": [ { text: "Add Spares...", onclick: { fn: onMenuItemClickThorTopology} } ], "ThorClusterDelete": [ { text: "Delete", onclick: { fn: onMenuItemClickThorTopologyDelete} } ] }; } var oTarget = this.contextEventTarget, aMenuItems, aClasses; if (this.getRoot() === this) { var Dom = YAHOO.util.Dom; var oSelectedTR = oTarget.nodeName.toUpperCase() === "TR" ? oTarget : Dom.getAncestorByTagName(oTarget, "TR"); var dt = this.dt; var recSet = dt.getRecordSet(); var record = recSet.getRecord(oSelectedTR.id); var parentName = record.getData('compType'); if (parentName.length <= 0) { if (dt.configs.element === "AgentsTab") parentName = "RoxieSlave"; else if (dt.configs.element === "ServersTab") parentName = "Roxie Cluster"; } else if (parentName === "Topology") { //use 'name' instead of '_key' for complex tables. var recName = record.getData('name'); if (recName.indexOf("Cluster") === 0) parentName += "Cluster"; else if (recName.indexOf("EclCCServer") === 0) parentName += "EclCCServer"; else if (recName.indexOf("EclScheduler") === 0) parentName += "EclScheduler"; else if (recName.indexOf("ThorCluster") === 0) parentName += "Thor"; else if (recName.indexOf("RoxieCluster") === 0) parentName += "Roxie"; else if (recName.indexOf("EclAgent") === 0) parentName += "EclAgent"; else if (recName.indexOf("process") === 0 || recName.indexOf("name") === 0 || recName.indexOf("prefix") === 0 || recName.indexOf("build") === 0) parentName = ""; } else if (parentName === "ThorCluster") { var recType = record.getData('process'); if (recType === "Master") parentName += "Master"; else if (recType === "Slave" || recType === "Spare") parentName += "Slave"; else if (recType === "") parentName += "Root"; } var oContextMenuItems = this.configContextMenuItems; aMenuItems = oContextMenuItems[parentName]; this.clearContent(); if (typeof (aMenuItems) === 'undefined' || aMenuItems.length === 0) return false; // Add the new set of items to the ContentMenu instance this.addItems(aMenuItems); if (parentName === "RoxieFarmProcess" || parentName === "RoxieServerProcess" || parentName === "RoxieSlave") this.addItems(oContextMenuItems["Delete"], 1); else if (parentName.indexOf('Topology') === 0) { if (parentName === 'TopologyCluster') { for (var cIdx = 0; cIdx < recSet.getLength(); cIdx++) { var r = recSet.getRecord(cIdx); if (r.getData('parent') === record.getData('id')) { if (r.getData('name').indexOf('ThorCluster') == 0) { this.getItem(4).cfg.setProperty("disabled", true); break; } else if (r.getData('name').indexOf('RoxieCluster') == 0) { this.getItem(3).cfg.setProperty("disabled", true); break; } } } } } else if (parentName === "ThorClusterMaster" || parentName === "ThorClusterSlave") this.addItems(oContextMenuItems["ThorClusterDelete"], 1); else if (parentName === "ThorClusterRoot") { for (var tIdx = 0; tIdx < recSet.getLength(); tIdx++) { var r = recSet.getRecord(tIdx); if (r.getData('process') === 'Master') { this.getItem(0).cfg.setProperty("disabled", true); break; } } } if (top.document.forms['treeForm'].isLocked.value === 'false') { var groups = this.getItemGroups(); for (iGroup = 0; iGroup < groups.length; iGroup++) { if (typeof (groups[iGroup]) !== 'undefined') for (i = 0; i < groups[iGroup].length; i++) groups[iGroup][i].cfg.setProperty("disabled", true); } } this.render(); } } function selectLastActiveTab() { var tabView = top.document.RightTabView; if (typeof (top.document.activeTab) !== 'undefined' && (typeof (tabView) !== 'undefined' && tabView !== null)) { tabView.inInit = false; var tabs = tabView.get("tabs"); var tab = null; for (i = 0; i < tabs.length; i++) { if (tabs[i].get("label") === top.document.activeTab) { tab = tabs[i]; break; } } if (i == tabs.length) i = 0; if (i == 0 && top.document.needsRefresh !== true) tabView.inInit = true; top.document.needsRefresh = false; tabView.selectTab(i); } else if (typeof (tabView) !== 'undefined' && tabView !== null) { tabView.inInit = true; top.document.needsRefresh = false; tabView.selectTab(0); } } function doPageRefresh(msg) { top.document.navDT.doPageRefresh(msg); } function onMenuItemClickAddInstance(p_sType, p_aArgs, p_oValue) { if (top.document.forms['treeForm'].isLocked.value === 'false') return; top.document.navDT.displayAddInstance(); return; } function onMenuItemClickGenericAddDelete(p_sType, p_aArgs, p_oValue) { if (top.document.forms['treeForm'].isLocked.value === 'false') return; var oTarget = this.parent.contextEventTarget; var Dom = YAHOO.util.Dom; var oSelectedTR = oTarget.nodeName.toUpperCase() === "TR" ? oTarget : Dom.getAncestorByTagName(oTarget, "TR"); var dt = this.parent.dt; var recSet = dt.getRecordSet(); var menuid = this.parent.id.split("Menu"); if (menuid.length > 1) parentName = menuid[0]; var type = compTabToNode[parentName]; if (dt.parentDT) type = dt.parentDT.getRecord(dt.parentDT.getSelectedRows()[0]).getData('name'); var subRecs = null; var subRecSet = null; if (dt.parentDT) { for (i = 0; i < dt.parentDT.subTables.length; i++) if (dt === dt.parentDT.subTables[i].oDT) { type = dt.parentDT.subTables[i].oName; var subSelRows = dt.getSelectedRows(); subRecs = subSelRows; //dt.getRecord(subSelRows[0]); subRecSet = dt.getRecordSet(); break; } dt = dt.parentDT; } var recSet = dt.getRecordSet(); var selRows = dt.getSelectedRows(); var menuItemName = this.cfg.getProperty("text"); var oper = "Delete"; if (menuItemName === "Add") oper = "Add"; var curNavRec = top.document.navDT.getRecord(top.document.navDT.getSelectedRows()[0]); var xmlArgs; if (subRecs !== null) { var prnt; var prntType = type; if (typeof (dt.configs.element) === 'string') { prnt = dt.configs.element.split("Tab"); if (prnt.length > 1) prntType = prnt[0]; } var typeName = type.split("_"); if (typeName.length > 1) type = typeName[1]; if (compTabToNode[type]) { var t = type; type = compTabToNode[t]; } xmlArgs = ''; if (oper === "Delete") { if (subRecs.length) for (i = 0; i < subRecs.length; i++) { var subRec = subRecSet.getRecord(subRecs[i]); xmlArgs += ''; } } else //use name instead of '_key' for multirow tables { var r = recSet.getRecord(selRows[0]); var str=""; for (var fld in r._oData) { if (fld.indexOf("_") == -1 && fld !== "params" && fld !== "compType" && r.getData(fld) != null) str += fld + "=" + r.getData(fld) + "::"; } xmlArgs += ''; } xmlArgs += ''; } else { xmlArgs = ""; //generic records have no _key, so use name if (oper === "Delete") { var selRows = dt.getSelectedRows(); for (var idx = 0; idx < selRows.length; idx++) { if (curNavRec.getData('Name') !== 'Directories') { if (type !== "Notes") { var r = dt.getRecord(selRows[idx]); if (r.getData('name')) xmlArgs += ""; else xmlArgs += ""; } else xmlArgs += ""; } else xmlArgs += ""; } } xmlArgs += ""; } YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/HandleRows', { success: function(o) { if (o.responseText.indexOf("/g); var temp1 = temp[1].split(/<\/td>/g); top.document.stopWait(document); alert(temp1[0]); } else { var form = top.window.document.forms['treeForm']; form.isChanged.value = "true"; top.document.stopWait(document); top.document.navDT.clickCurrentSelOrName(top.document.navDT); if (dt.parentDT) { top.document.selectRecord = dt.parentDT.getRecord(dt.parentDT.getSelectedRows()[0]).getData('name'); top.document.selectRecordClick = true; } else { var temp = o.responseText.split(//g); if (temp.length > 1) { var temp1 = temp[1].split(/<\/CompName>/g); if (temp1.length > 1) { top.document.selectRecord = temp1[0]; top.document.selectRecordClick = true; if (type === 'Notes') top.document.selectRecordField = 'date'; } } } } }, failure: function(o) { top.document.stopWait(document); alert(o.statusText); }, scope: this }, top.document.navDT.getFileName(true) + 'Operation=' + oper + '&XmlArgs=' + xmlArgs); return; } function getCurrentSelRec(dt, name) { var rec; if (typeof (name) === 'undefined') { var selectedRows = dt.getSelectedRows(); if (typeof (selectedRows) !== 'undefined') { if (selectedRows.length > 0) rec = dt.getRecord(selectedRows[0]); } } else { var recSet = dt.getRecordSet(); var recSetLen = recSet.getLength(); for (var i = 0; i < recSetLen; i++) { var r = recSet.getRecord(i); if (r.getData('Name') === name) { rec = r; break; } } } return rec; } function instanceSelectionToXML(table, selectedRows) { var rec = getCurrentSelRec(top.document.navDT); var xmlStr = ""; if (typeof (selectedRows) !== 'undefined') for (var i = 0; i < selectedRows.length; i++) xmlStr += ""; xmlStr += ""; return xmlStr; } function onMenuItemClickRemoveInstance(p_sType, p_aArgs, p_oValue) { if (top.document.forms['treeForm'].isLocked.value === 'false') return; var oTarget = this.parent.contextEventTarget; var Dom = YAHOO.util.Dom; var oSelectedTR = oTarget.nodeName.toUpperCase() === "TR" ? oTarget : Dom.getAncestorByTagName(oTarget, "TR"); var dt = this.parent.dt; var recSet = dt.getRecordSet(); var record = recSet.getRecord(oSelectedTR.id); var selRows = dt.getSelectedRows(); var xmlStr = instanceSelectionToXML(dt, selRows); YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/HandleInstance', { success: function(o) { var form = top.window.document.forms['treeForm']; form.isChanged.value = "true"; top.document.stopWait(document); top.document.navDT.clickCurrentSelOrName(top.document.navDT); }, failure: function(o) { top.document.stopWait(document); alert(o.statusText); }, scope: this }, top.document.navDT.getFileName(true) + 'Operation=Delete&XmlArgs=' + xmlStr); } function onMenuItemClickHandleEspServiceBindings(p_sType, p_aArgs, p_oValue) { if (top.document.forms['treeForm'].isLocked.value === 'false') return; var oTarget = this.parent.contextEventTarget; var Dom = YAHOO.util.Dom; var oSelectedTR = oTarget.nodeName.toUpperCase() === "TR" ? oTarget : Dom.getAncestorByTagName(oTarget, "TR"); var dt = this.parent.dt; var type = "EspBinding"; var subRecs = null; var subRecSet = null; if (dt.parentDT) { for (i = 0; i < dt.parentDT.subTables.length; i++) if (dt === dt.parentDT.subTables[i].oDT) { type = dt.parentDT.subTables[i].oName; var subSelRows = dt.getSelectedRows(); subRecs = subSelRows; //dt.getRecord(subSelRows[0]); subRecSet = dt.getRecordSet(); break; } dt = dt.parentDT; } var recSet = dt.getRecordSet(); var selRows = dt.getSelectedRows(); var menuItemName = this.cfg.getProperty("text"); var oper = "Add"; if (menuItemName === "Delete") oper = "Delete"; var compName = top.document.navDT.getRecord(top.document.navDT.getSelectedRows()[0]).getData('Name'); var xmlArgs; if (subRecs !== null) { xmlArgs = ''; if (subRecs.length) for (i = 0; i < subRecs.length; i++) { var subRec = subRecSet.getRecord(subRecs[i]); xmlArgs += ''; } else //use name instead of '_key' for multirow tables xmlArgs += ''; xmlArgs += ''; } else { xmlArgs = ''; for (i = 0; i < selRows.length; i++) { //use name instead of '_key' for multirow tables var record = recSet.getRecord(selRows[i]); xmlArgs += ''; } xmlArgs += ''; } YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/HandleEspServiceBindings', { success: function(o) { if (o.responseText.indexOf("/g); var status1 = status[1].split(/<\/Status>/g); if (status1[0] !== 'true') { alert(status1[0]); return; } else { var form = top.window.document.forms['treeForm']; form.isChanged.value = "true"; top.document.stopWait(document); top.document.navDT.clickCurrentSelOrName(top.document.navDT); if (subRecs !== null) { top.document.selectRecord = recSet.getRecord(selRows[0]).getData('name'); top.document.selectRecordClick = true; } else { var temp = o.responseText.split(//g); if (temp.length > 1) { var temp1 = temp[1].split(/<\/NewName>/g); if (temp1.length > 1) { top.document.selectRecord = temp1[0]; top.document.selectRecordClick = true; } } } } } }, failure: function(o) { top.document.stopWait(document); alert(o.statusText); }, scope: this }, top.document.navDT.getFileName(true) + 'Operation=' + oper + '&XmlArgs=' + xmlArgs); } function onMenuItemClickHandleComputer(p_sType, p_aArgs, p_oValue) { var form = top.document.forms['treeForm']; if (form.isLocked.value === 'false') return; var oTarget = this.parent.contextEventTarget; var Dom = YAHOO.util.Dom; var oSelectedTR = oTarget.nodeName.toUpperCase() === "TR" ? oTarget : Dom.getAncestorByTagName(oTarget, "TR"); var dt = this.parent.dt; var recSet = dt.getRecordSet(); var selRows = dt.getSelectedRows(); var menuItemName = this.cfg.getProperty("text"); var record = recSet.getRecord(selRows[0]); var menuid = this.parent.id.split("Menu"); if (menuid.length > 1) parentName = menuid[0]; var type = compTabToNode[parentName]; var menuItemName = this.cfg.getProperty("text"); var oper = "Delete"; if (menuItemName === "New" || menuItemName === "New Range...") oper = "New"; if (menuItemName === "New Range..." || menuItemName === "New") { for (i = 0; i < recSet.getLength(); i++) { var arr = recSet.getRecord(i).getData('domain_extra'); if (YAHOO.lang.isArray(arr)) break; } if (i >= recSet.length) { alert("get domain from backend"); return; } var type =( menuItemName === "New Range..." ) ? 0 : 3; top.document.navDT.promptNewRange(recSet.getRecord(i).getData('domain_extra'), recSet.getRecord(i).getData('computerType_extra'), type); return; } var xmlArgs = ""; if (oper === 'Delete') { //use name instead of '_key' for multi row tables for (i = 0; i < selRows.length; i++) xmlArgs += ""; } xmlArgs += ''; YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/HandleComputer', { success: function(o) { if (o.responseText.indexOf("/g); var temp1 = temp[1].split(/<\/td>/g); top.document.stopWait(document); alert(temp1[0]); } else { form.isChanged.value = "true"; top.document.stopWait(document); top.document.navDT.clickCurrentSelOrName(top.document.navDT); var temp = o.responseText.split(//g); if (temp.length > 1) { var temp1 = temp[1].split(/<\/CompName>/g); if (temp1.length > 1) { top.document.selectRecord = temp1[0]; top.document.selectRecordClick = true; } } } }, failure: function(o) { top.document.stopWait(document); alert(o.statusText); }, scope: this }, top.document.navDT.getFileName(true) + 'Operation=' + oper + '&XmlArgs=' + xmlArgs); } function onContextMenuBeforeShowRegular(p_sType, p_aArgs) { if (!this.suppressMenus) { this.suppressMenus = new Array(); this.suppressMenus[this.suppressMenus.length] = 'CSRMenu'; this.suppressMenus[this.suppressMenus.length] = 'CertificateMenu'; this.suppressMenus[this.suppressMenus.length] = 'PrivateKeyMenu'; } if (isPresentInArr(this.suppressMenus, this.id)) { this.clearContent(); return false; } if (!this.configContextMenuItems) { this.configContextMenuItems = { "Instances": [ { text: "Add Instances...", onclick: { fn: onMenuItemClickAddInstance} }, { text: "Remove Instances", onclick: { fn: onMenuItemClickRemoveInstance} } ], "ESP Service Bindings": [ { text: "Add", onclick: { fn: onMenuItemClickHandleEspServiceBindings} }, { text: "Delete", onclick: { fn: onMenuItemClickHandleEspServiceBindings} } ], "URL Authentication": [ { text: "Add", onclick: { fn: onMenuItemClickHandleEspServiceBindings} }, { text: "Delete", onclick: { fn: onMenuItemClickHandleEspServiceBindings} } ], "Feature Authentication": [ { text: "Add", onclick: { fn: onMenuItemClickHandleEspServiceBindings} }, { text: "Delete", onclick: { fn: onMenuItemClickHandleEspServiceBindings} } ], "Computers": [ { text: "New", onclick: { fn: onMenuItemClickHandleComputer} }, { text: "New Range...", onclick: { fn: onMenuItemClickHandleComputer} }, { text: "Delete", onclick: { fn: onMenuItemClickHandleComputer}}], "Hardware": [ { text: "New", onclick: { fn: onMenuItemClickHandleComputer} }, { text: "Delete", onclick: { fn: onMenuItemClickHandleComputer} } ], "GenericAddDelete": [ { text: "Add", onclick: { fn: onMenuItemClickGenericAddDelete} }, { text: "Delete", onclick: { fn: onMenuItemClickGenericAddDelete} } ], "ResetToDefault": [ {text: "Reset to default", onclick: {fn: onMenuItemClickResetToDefault} }] }; } var oTarget = this.contextEventTarget, aMenuItems, aClasses; if (this.getRoot() === this) { var Dom = YAHOO.util.Dom; var oSelectedTR = oTarget.nodeName.toUpperCase() === "TR" ? oTarget : Dom.getAncestorByTagName(oTarget, "TR"); var dt = this.dt; var recSet = dt.getRecordSet(); var record = recSet.getRecord(oSelectedTR.id); var column = dt.getColumn(oTarget); var compType; if (record) compType = record.getData('compType'); else { if (recSet.getLength() > 0) compType = recSet.getRecord(0).getData('compType'); } var parentName; var menuid = this.id.split("Menu"); if (menuid.length > 1) parentName = menuid[0]; if (typeof (parentName) === 'undefined') parentName = "Roxie Cluster"; var oContextMenuItems = this.configContextMenuItems; aMenuItems = oContextMenuItems[parentName]; if (!aMenuItems) { if (isPresentInArr(menuEnabled, compTabToNode[parentName])) { if (compTabToNode[parentName] === "Domain" || compTabToNode[parentName] === "Switch" || compTabToNode[parentName] === "ComputerType") parentName = "Hardware"; else parentName = "GenericAddDelete"; aMenuItems = oContextMenuItems[parentName]; } } this.clearContent(); this.addItems(aMenuItems); if (parentName === "RoxieFarmProcess" || parentName === "RoxieServerProcess" || parentName === "RoxieSlave") this.addItems(oContextMenuItems["Delete"], 2); else if (parentName === "GenericAddDelete" && recSet.getLength() === 0) { this.getItem(1).cfg.setProperty("disabled", true); } if( record && record.getData(column.key + '_ctrlType') !== 0 ) { var defaultValue=dt.getDefault(oTarget, record); if( defaultValue !== '' && typeof(defaultValue) !== 'undefined' && defaultValue !== record.getData('value') ) this.addItems(oContextMenuItems["ResetToDefault"]); } if (top.document.forms['treeForm'].isLocked.value === 'false') { var groups = this.getItemGroups(); for (iGroup = 0; iGroup < groups.length; iGroup++) { if (typeof (groups[iGroup]) !== 'undefined') for (i = 0; i < groups[iGroup].length; i++) groups[iGroup][i].cfg.setProperty("disabled", true); } } this.render(); } } function isPresentInArr(arr, val) { for (idx = 0; idx < arr.length; idx++) if (arr[idx] === val) return true; return false; } //only to be called from unload page function handleunload(fromUnload) { if (top.window.frames["DisplaySettingsFrame"].event && top.window.frames["DisplaySettingsFrame"].event.srcElement && top.window.frames["DisplaySettingsFrame"].event.srcElement.nodeName !== 'BODY' && top.window.frames["DisplaySettingsFrame"].event.srcElement.nodeName !== '#document') return; var tabView = top.document.RightTabView; if (tabView) { var actTab = tabView.get("activeTab"); saveOpenEditors(actTab.dt); var tabs = tabView.get("tabs"); for (var idx = 0; idx < tabs.length; idx++) { if (!tabs[idx].dt) continue; tabs[idx].dt.cleanup(); tabs[idx].dt.destroy(); tabs[idx].dt = null; tabs[idx].dataSource = null; } tabView.removeListener("activeIndexChange"); } if (fromUnload) top.document.RightTabView = null; } function showNextCellEditor(celled) { var record = celled.getRecord(), column = celled.getColumn(), datatable = celled.getDataTable(); datatable.gotonexttab = false; var recIndex = datatable.getRecordIndex(record); var exit = false; var doneAll = false; var colIndex = column.getKeyIndex() + 1; while (true) { var rec = datatable.getRecord(recIndex); if (!rec && !doneAll) { rec = datatable.getRecord(0); doneAll = true; } if (!rec) break; while (true) { if (colIndex >= datatable.getColumnSet().getDefinitions().length) break; nextCol = datatable.getColumn(colIndex); if (!nextCol) break; var colType = rec.getData(nextCol.key + '_ctrlType'); if (colType !== 0) { var tdEl = datatable.getTdEl({ record: rec, column: nextCol }); if (tdEl) { datatable.unselectAllRows(); datatable.selectRow(rec); YAHOO.util.UserAction.click(tdEl); exit = true; break; } } else colIndex++; } if (exit) break; else { recIndex++; colIndex = 0; } } } function showPrevCellEditor(celled) { var record = celled.getRecord(), column = celled.getColumn(), datatable = celled.getDataTable(); datatable.gotoprevtab = false; var recIndex = datatable.getRecordIndex(record); var exit = false; var doneAll = false; var colIndex = column.getKeyIndex() - 1; while (true) { var rec = datatable.getRecord(recIndex); if (!rec && !doneAll) { rec = datatable.getRecord(datatable.getRecordSet().getLength()-1); doneAll = true; } if (!rec) break; while (true) { if (colIndex < 0) break; nextCol = datatable.getColumn(colIndex); if (!nextCol) break; var colType = rec.getData(nextCol.key + '_ctrlType'); if (colType !== 0) { var tdEl = datatable.getTdEl({ record: rec, column: nextCol }); if (tdEl) { datatable.unselectAllRows(); datatable.selectRow(rec); YAHOO.util.UserAction.click(tdEl); exit = true; break; } } else colIndex--; } if (exit) break; else { recIndex--; colIndex = datatable.getColumnSet().getDefinitions().length - 1; } } } function showCurrentCellEditor(datatable) { var record = datatable.getRecord(datatable.getSelectedRows()[0]); var recIndex = datatable.getRecordIndex(record); var doneAll = false; var colIndex = 0; while (true) { if (colIndex >= datatable.getColumnSet().getDefinitions().length) break; nextCol = datatable.getColumn(colIndex); if (!nextCol) break; var colType = record.getData(nextCol.key + '_ctrlType'); if (colType !== 0) { var tdEl = datatable.getTdEl({ record: record, column: nextCol }); if (tdEl) { datatable.unselectAllRows(); datatable.selectRow(record); YAHOO.util.UserAction.click(tdEl); break; } } else colIndex++; } } function handlekeydown(event) { //ctrl+` if (event.keyCode === 192 && event.ctrlKey === true) setFocusToNavTable(); else if ((event.keyCode === 37 || event.keyCode === 39) && event.ctrlKey === true) { var tabView = top.document.RightTabView; if (tabView) { saveOpenEditors(tabView.get("activeTab").dt); var actTab = tabView.get("activeIndex"); if (event.keyCode === 39) { actTab++; if (actTab >= tabView.get("tabs").length) actTab = 0; } else if (event.keyCode === 37) { actTab--; if (actTab < 0) actTab = tabView.get("tabs").length - 1; } tabView.selectTab(actTab); //setTimeout("setFocusToActiveTabDT()", 250); } } } function handlemousedown(event) { top.document.navDT.fireEvent("tableBlurEvent"); } function getAttrName(datatable, column, record, isComplex) { var attrName; var cols = datatable.getColumnSet(); if (cols.keys.length === 2 && cols.keys[0].key === 'name' && cols.keys[1].key === 'value') { if (isComplex) attrName = record.getData('name'); else attrName = record.getData('_key'); } else attrName = column.key; if (typeof (attrName) === 'undefined') attrName = column.key; return attrName; } function moveScrollBar() { window.scrollTo(0,0); } function setChildrenOf(parent, rec) { if (typeof(childrenOf) === 'undefined') childrenOf = new Array(); if (!childrenOf[parent]) childrenOf[parent] = new Array(); childrenOf[parent][childrenOf[parent].length] = rec; } function initEnvXmlType(i) { i.name_extra = ""; i.name_ctrlType = 0; i.value_extra = ""; i.value_ctrlType = 1; } function updateParams(record, attrName, oldValue, newValue, updateAttr, prevVal, updateVal, paramstr) { var newParams = ''; if (record) newParams = record.getData('params'); else newParams = paramstr; if (typeof (newParams) === 'undefined' || !newParams) return ''; if (record && record.getData('compType') == 'Environment') { if (attrName !== 'name') return ''; var level = record.getData('depth'); var fl = false; var oldAttrVal = 'pcName=' + oldValue; var newAttrVal = 'pcName=' + newValue; var a = newParams.split('parentParams'); if (a.length > 1) { for (var idx = 0; idx < a.length; idx++) { if (a[idx].indexOf(level) === 0) { var strs = a[idx].split(oldAttrVal); if (strs.length > 1) { a[idx] = strs.join(newAttrVal); fl = true; } } } if (fl) newParams = a.join('parentParams'); else newParams = ''; } return newParams; } var oldAttrVal = "@" + attrName + "=\'" + oldValue + "\'"; var newAttrVal = "@" + attrName + "=\'" + newValue + "\'"; var a = newParams.split(oldAttrVal); if (a.length > 1) newParams = a.join(newAttrVal); if (YAHOO.lang.isArray(updateAttr) && updateAttr.length) { if (prevVal[0].indexOf("<") === 0) oldAttrVal = "@" + updateAttr[0] + "=\'\'"; else oldAttrVal = "@" + updateAttr[0] + "=\'" + prevVal[0] + "\'"; if (updateVal[0].indexOf("<") === 0) newAttrVal = "@" + updateAttr[0] + "=\'\'"; else newAttrVal = "@" + updateAttr[0] + "=\'" + updateVal[0] + "\'"; a = newParams.split(oldAttrVal); if (a.length > 1) newParams = a.join(newAttrVal); } if (record) for (var subrec in record._oData) { if (subrec.indexOf("_") === 0) { var sub = record.getData(subrec); if (YAHOO.lang.isArray(sub)) { for (var idx = 0; idx < sub.length; idx++) { var sparams = sub[idx].params; var newsparams = updateParams(null, attrName, oldValue, newValue, updateAttr, prevVal, updateVal, sparams); if (newsparams.length > 0) sub[idx].params = newsparams; } record.setData(subrec, sub); } else { var sparams = sub.params; var newsparams = updateParams(null, attrName, oldValue, newValue, updateAttr, prevVal, updateVal, sparams); if (newsparams.length > 0) sub.params = newsparams; } } } return newParams; } function onMenuItemClickResetToDefault(p_sType, p_aArgs, p_oValue) { if (top.document.forms['treeForm'].isLocked.value === 'false') return; var oTarget = this.parent.contextEventTarget; var dt = this.parent.dt; var recSet = dt.getRecordSet(); var selRows = dt.getSelectedRows(); var menuItemName = this.cfg.getProperty("text"); var record = recSet.getRecord(selRows[0]); var oldValue = record.getData('value'); var column = dt.getColumn(oTarget); var compName = top.document.navDT.getRecord(top.document.navDT.getSelectedRows()[0]).getData('Name'); var bldSet = top.document.navDT.getRecord(top.document.navDT.getSelectedRows()[0]).getData('BuildSet'); var newValue = dt.getDefault(oTarget, record); var meta = record.getData(column.key + '_extra'); if( newValue !== oldValue) { var form = top.window.document.forms['treeForm']; top.document.startWait(document); var attrName = getAttrName(dt, column, record, false); // = record.getData('name'); var recordIndex = dt.getRecordIndex(record); var category = "Software"; var params = record.getData('params'); if (compName === "Hardware") category = "Hardware"; else if (compName === "Builds") category = "Programs"; else if (compName === "Environment") category = "Environment"; else if (compName === "topology") { category = 'Topology'; } var params=record.getData('params'); var xmlArgs = argsToXml(category, params, attrName, oldValue, newValue, recordIndex + 1, record.getData(column.key + '_onChange')); YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/SaveSetting', { success: function(o) { if (o.status === 200) { if (o.responseText.indexOf("/g); var prevVal, prevVal1, updateAttr1, updateVal, updateVal1; if (updateAttr[1].indexOf("") !== 0) { updateAttr1 = updateAttr[1].split(/<\/UpdateAttr>/g); updateVal = o.responseText.split(//g); updateVal1 = updateVal[1].split(/<\/UpdateValue>/g); if (updateVal1[0].indexOf("<") === 0) this.updateCell(record, updateAttr1[0], ""); else this.updateCell(record, updateAttr1[0], updateVal1[0]); prevVal = o.responseText.split(//g); prevVal1 = prevVal[1].split(/<\/PrevValue>/g); } var newParams = updateParams(record, attrName, oldValue, newValue, updateAttr1, prevVal1, updateVal1); var newkey = '::Update'; var idx = 1; if (typeof (newParams) !== 'undefined') { while (true) { var tmpArr = newParams.split(newkey + idx); if (tmpArr.length === 1) break; idx++; } if (newParams.length > 0) record.setData('params', newParams); if (this.subTables) { for (var tabidx = 0; tabidx < this.subTables.length; tabidx++) { var subtablerecset = this.subTables[tabidx].oDT.getRecordSet(); var subrecsetlen = subtablerecset.getLength(); for (var recidx = 0; recidx < subrecsetlen; recidx++) { var subrec = subtablerecset.getRecord(recidx); newParams = updateParams(subrec, attrName, oldValue, newValue, updateAttr1, prevVal1, updateVal1); subrec.setData('params', newParams); } } } else if (attrName === 'name' && record.getData('compType') === 'Environment') { var recSet = datatable.getRecordSet(); var recSetLen = recSet.getLength(); var parent = record.getData('parent'); for (var i = 0; i < recSetLen; i++) { var r = recSet.getRecord(i); if (r != record && r.getData('parent') === parent) r.setData('params', newParams); } } } dt.updateCell(record, column, newValue); if (compName === "topology") { //refresh for topology to refresh the left hand side values top.document.navDT.clickCurrentSelOrName(top.document.navDT); } if (this.parentDT) { parRec[recordIndex] = record.getData(); } if (dt.gotonexttab === true) showNextCellEditor(this); else if (dt.gotoprevtab === true) showPrevCellEditor(this); var refreshPage = o.responseText.split(//g); if (refreshPage[1].indexOf("") !== 0) { var refreshPage1 = refreshPage[1].split(/<\/Refresh>/g); if (refreshPage1[0] === "true") doPageRefresh(); } } else if (o.responseText.indexOf("/g); var temp1 = temp[1].split(/<\/td>/g); alert(temp1[0]); column.editor.cancel(); top.document.stopWait(document); dt.updateCell(record, column, oldValue); if (temp1[0].indexOf("Cannot modify") === 0) { form.isLocked.value = "false"; doPageRefresh(); } } } else { alert(r.replyText); dt.updateCell(record, column, newValue); } top.document.stopWait(document); }, failure: function(o) { alert(o.statusText); callback(); top.document.stopWait(document); }, scope: this }, top.document.navDT.getFileName(true) + 'XmlArgs=' + xmlArgs); } }