2011-03-17 03:39:05 +00:00
/ *
* Globle variable
*
* /
var XcatmonTableId = "XcatMonsettingTable" ;
var dataTables = new Object ( ) ;
/ *
* set datatable
*
* /
function setDatatable ( id , obj ) {
dataTables [ id ] = obj ;
}
/ *
* get datatable from the given id
*
*
* /
function getDatatable ( id ) {
return dataTables [ id ] ;
}
/ *
*
*
* /
2010-08-04 08:49:20 +00:00
function loadXcatMon ( ) {
//find the xcat mon tab
var xcatMonTab = $ ( '#xcatmon' ) ;
2011-03-17 03:39:05 +00:00
xcatMonTab . append ( "<div id= xcatmonTable></div>" ) ;
// show the content of the table monsetting
$ . ajax ( {
url : 'lib/cmd.php' ,
dataType : 'json' ,
data : {
cmd : 'tabdump' ,
tgt : '' ,
args : 'monsetting' ,
msg : ''
} ,
success : loadXcatMonSetting
2010-08-04 08:49:20 +00:00
} ) ;
2011-03-17 03:39:05 +00:00
}
function loadXcatMonSetting ( data ) {
2010-08-04 08:49:20 +00:00
2011-03-17 03:39:05 +00:00
var apps ; // contain the xcatmon apps config
var rsp = data . rsp ;
var apps _flag = 0 ; // Is the apps is stored?
var ping ; // contain the xcatmon ping-interval setting
var ping _flag = 0 ;
//create a infoBar
var infoBar = createInfoBar ( 'Click on a cell to edit,Click outside the table to write to the cell.<br>Once you finish the xCATmon config.click on Apply.' ) ;
$ ( '#xcatmonTable' ) . append ( infoBar ) ;
2010-08-04 08:49:20 +00:00
2011-03-17 03:39:05 +00:00
//create xcatmonTable
var XcatmonTable = new DataTable ( XcatmonTableId ) ;
2010-08-04 08:49:20 +00:00
2011-03-17 03:39:05 +00:00
//create Datatable
var dTable ;
// create the xcatmonTable header
var header = rsp [ 0 ] . split ( "," ) ;
header . splice ( 3 , 2 ) ;
header . splice ( 0 , 1 ) ;
header [ 0 ] = "apps name" ;
header [ 1 ] = "configure" ;
header . push ( '<input type="checkbox" onclick="selectAllCheckbox(event,$(this))">' ) ;
2010-08-04 08:49:20 +00:00
2011-03-17 03:39:05 +00:00
header . unshift ( '' ) ;
XcatmonTable . init ( header ) ; //create the table header
// create container of original table contents
var origCont = new Array ( ) ;
origCont [ 0 ] = header ; // table header
//create contariner for new contents use for update the monsetting table
var newCont = new Object ( ) ;
newCont [ 0 ] = rsp [ 0 ] . split ( "," ) ; // table header
// create container for other monsetting lines not xcatmon
var otherCont = new Array ( ) ;
$ ( '#xcatmonTable' ) . append ( XcatmonTable . object ( ) ) ; // add table object
var m = 1 ; // the count for origCont
var n = 0 ;
for ( var i = 1 ; i < rsp . length ; i ++ ) { // get the apps and the ping-interval configure
var pos = rsp [ i ] . indexOf ( "xcatmon" ) ; // only check the xcatmon setting
if ( pos == 1 ) {
// get the useful info and add it to the page.
if ( ( rsp [ i ] . indexOf ( "apps" ) == - 1 ) && ( rsp [ i ] . indexOf ( "ping" ) == - 1 ) ) {
var cols = rsp [ i ] . split ( ',' ) ;
// pair the semicolon of the content
for ( var j = 0 ; j < cols . length ; j ++ ) {
if ( cols [ j ] . count ( '"' ) % 2 == 1 ) {
while ( cols [ j ] . count ( '"' ) % 2 == 1 ) {
cols [ j ] = cols [ j ] + "," + cols [ j + 1 ] ;
cols . splice ( j + 1 , 1 ) ;
}
}
cols [ j ] = cols [ j ] . replace ( new RegExp ( '"' , 'g' ) , '' ) ;
}
// remove the commend disable
cols . splice ( 3 , 2 ) ;
// remove the xcatmon
cols . splice ( 0 , 1 ) ;
cols . push ( '<input type="checkbox" name="' + cols [ 0 ] + '" title="Click this checkbox will add/remove the app from the configure apps value." />' ) ;
cols . unshift ( '<span class="ui-icon ui-icon-close" onclick="deleteRow1(this)"></span>' ) ;
//add teh column tho the table.
XcatmonTable . add ( cols ) ;
origCont [ m ++ ] = cols ;
} else {
if ( ! apps _flag ) { //check the apps setting
if ( rsp [ i ] . indexOf ( "apps" ) > - 1 ) { // check for is apps or not
apps = rsp [ i ] . split ( ',' ) ; //
for ( var j = 0 ; j < apps . length ; j ++ ) { // pair the semicolon
if ( apps [ j ] . count ( '"' ) % 2 == 1 ) {
while ( apps [ j ] . count ( '"' ) % 2 == 1 ) {
apps [ j ] = apps [ j ] + "," + apps [ j + 1 ] ;
apps . splice ( j + 1 , 1 ) ;
}
}
apps [ j ] = apps [ j ] . replace ( new RegExp ( '"' , 'g' ) , '' ) ;
}
apps _flag = 1 ; // set the flag to 1 to avoid this subroute
}
}
// get into the ping setting subroute
if ( ! ping _flag ) {
//check the ping-interval config
if ( rsp [ i ] . indexOf ( "ping-interval" ) > - 1 ) {
ping = rsp [ i ] . split ( ',' ) ;
// pair the semicolon
for ( var j = 0 ; j < ping . length ; j ++ ) {
if ( ping [ j ] . count ( '"' ) % 2 == 1 ) {
while ( ping [ j ] . count ( '"' ) % 2 == 1 ) {
ping [ j ] = ping [ j ] + "," + ping [ j + 1 ] ;
ping . splice ( j + 1 , 1 ) ;
}
2010-08-04 08:49:20 +00:00
2011-03-17 03:39:05 +00:00
}
ping [ j ] = ping [ j ] . replace ( ( new RegExp ( '"' , 'g' ) ) , '' ) ;
}
ping _flag = 1 ;
}
2010-08-04 08:49:20 +00:00
2011-03-17 03:39:05 +00:00
}
}
} else if ( pos != 1 ) {
// the other monitor in the monsetting table
var otherCols = rsp [ i ] . split ( ',' ) ;
for ( var k = 0 ; k < otherCols . length ; k ++ ) {
if ( otherCols [ k ] . count ( '"' ) % 2 == 1 ) {
while ( otherCols [ k ] . count ( '"' ) % 2 == 1 ) {
otherCols [ k ] = otherCols [ k ] + "," + otherCols [ k + 1 ] ;
otherCols . splice ( k + 1 , 1 ) ;
}
}
otherCols [ k ] = otherCols [ k ] . replace ( new RegExp ( '"' , 'g' ) , '' ) ;
}
//add the rows to the otherCont.
otherCont [ n ++ ] = otherCols ;
}
}
// if the apps is not in the monsetting table.Then create the default apps row.
// When saving the changes,add the row to the table.
if ( ! apps _flag ) {
apps = rsp [ 0 ] . split ( ',' ) ;
apps [ 0 ] = "xcatmon" ;
apps [ 1 ] = "apps" ;
apps [ 2 ] = "" ;
apps [ 3 ] = "" ;
apps [ 4 ] = "" ;
}
// If the ping-interval is not in the monsetting table.Then create the default ping-interval row.
//When saving the changes,add the row to the table.
if ( ! ping _flag ) {
ping = rsp [ 0 ] . split ( ',' ) ;
ping [ 0 ] = "xcatmon" ;
ping [ 1 ] = "ping-interval" ;
// the default ping-interval setting is 5
ping [ 2 ] = "5" ;
ping [ 3 ] = "" ;
ping [ 4 ] = "" ;
2010-08-04 08:49:20 +00:00
}
2011-03-17 03:39:05 +00:00
// set the checkbox to be true according to the apps
var checked = apps [ 2 ] . split ( ',' ) ;
for ( var i = 0 ; i < checked . length ; i ++ ) {
// set the selcet checkbox to true
$ ( "input:checkbox[name=" + checked [ i ] + "]" ) . attr ( 'checked' , true ) ;
for ( var j = 0 ; j < origCont . length ; j ++ ) {
// set the origCont's checkbox to true
if ( origCont [ j ] [ 1 ] == checked [ i ] ) {
origCont [ j ] . splice ( 3 , 1 ) ;
2010-08-04 08:49:20 +00:00
2011-03-17 03:39:05 +00:00
origCont [ j ] . push ( '<input type="checkbox" name="' + origCont [ j ] [ 1 ] + '" title="Click this checkbox will add/remove the app from the configure apps value." checked=true/>' ) ;
}
}
2010-08-04 08:49:20 +00:00
2011-03-17 03:39:05 +00:00
}
$ ( ":checkbox" ) . tooltip ( ) ;
/ *
$ ( ':checkbox' ) . hover (
function ( ) {
$ ( this ) . append ( $ ( "<span>***</span>" ) ) ;
} ,
function ( ) {
$ ( this ) . find ( "span:last" ) . remove ( ) ;
}
) ;
* /
//make the table editable
$ ( '#' + XcatmonTableId + ' td:not(td:nth-child(1),td:last-child)' ) . editable (
function ( value , settings ) {
var colPos = this . cellIndex ;
var rowPos = dTable . fnGetPosition ( this . parentNode ) ;
dTable . fnUpdate ( value , rowPos , colPos ) ;
return ( value ) ;
} , {
onblur : 'submit' ,
type : 'textarea' ,
placeholder : ' ' ,
height : '30px'
}
) ;
//save the datatable
dTable = $ ( '#' + XcatmonTableId ) . dataTable ( ) ;
// set the datatable to the global variables datatables
setDatatable ( XcatmonTableId , dTable ) ;
2010-08-04 08:49:20 +00:00
2011-03-17 03:39:05 +00:00
//create button bar
var addBar = $ ( '<div align="center"></div>' ) ;
$ ( '#xcatmon' ) . append ( addBar ) ;
// create the button add row
var addRowBtn = createButton ( 'Add row' ) ;
// add the button to the page
addBar . append ( addRowBtn ) ;
// create the button apply
var ApplyBtn = createButton ( 'Apply' ) ;
// add the apply button to the page
addBar . append ( ApplyBtn ) ;
// create the button Cancel
var CancelBtn = createButton ( 'Cancel' ) ;
// add the cancel to the page
addBar . append ( CancelBtn ) ;
// button click function
//create a empty row
addRowBtn . bind ( 'click' , function ( event ) {
// create the container of the new row
var row = new Array ( ) ;
// add the delete button to the row
row . push ( '<span class="ui-icon ui-icon-close" onclick="deleteRow1(this)"></span>' ) ;
// add the xcatmon
// add the contain of the setting
for ( var i = 0 ; i < header . length - 2 ; i ++ ) {
row . push ( '' ) ;
}
// add the checkbox
row . push ( '<input type="checkbox" name="' + row [ 2 ] + '" title="Click this checkbox will add/remove the app from the configure apps value."/>' ) ;
// get the datatable of the table
var dTable = getDatatable ( XcatmonTableId ) ;
// add the new row to the datatable
dTable . fnAddData ( row ) ;
// make the datatable editable
$ ( ":checkbox[title]" ) . tooltip ( ) ;
$ ( '#' + XcatmonTableId + ' td:not(td:nth-child(1),td:last-child)' ) . editable (
function ( value , settings ) {
var colPos = this . cellIndex ;
var rowPos = dTable . fnGetPosition ( this . parentNode ) ;
dTable . fnUpdate ( value , rowPos , colPos ) ;
return ( value ) ;
} , {
onblur : 'submit' ,
type : 'textarea' ,
placeholder : ' ' ,
height : '30px'
2010-08-04 08:49:20 +00:00
}
2011-03-17 03:39:05 +00:00
) ;
2010-08-04 08:49:20 +00:00
} ) ;
2011-03-17 03:39:05 +00:00
/ *
* apply button
*
*
*
* The Apply button is used to store the contain of the table in the page to the monsetting table
* on the MN .
*
* /
ApplyBtn . bind ( 'click' , function ( event ) {
// get the datatable of the page
var dTable = getDatatable ( XcatmonTableId ) ;
// get the rows of the datatable
var dRows = dTable . fnGetNodes ( ) ;
var count = 0 ;
// create the new container of the apps' value.
var appValue = "" ;
var tableName = "monsetting" ;
var tmp ;
var tmp1 ;
2011-03-22 11:49:27 +00:00
var closeBtn = createButton ( "close" ) ;
2011-03-17 03:39:05 +00:00
// get the contain of the rows
for ( var i = 0 ; i < dRows . length ; i ++ ) {
if ( dRows [ i ] ) {
// get the columns fo the row
var cols = dRows [ i ] . childNodes ;
// create the container of the new column
var vals = new Array ( ) ;
for ( var j = 1 ; j < cols . length - 1 ; j ++ ) {
// get the value of every column(except the first and the last.why ? .ni dong de)
var val = cols . item ( j ) . firstChild . nodeValue ;
if ( val == ' ' ) {
vals [ j - 1 ] = '' ;
} else {
vals [ j - 1 ] = val ;
}
}
// prepare another space for the array/
var vals _orig = new Array ( ) ;
// copy the data from vals to vals_orig
for ( var p = 0 ; p < 2 ; p ++ ) {
var val = vals [ p ] ;
vals _orig [ p ] = val ;
}
vals . push ( "" ) ;
vals . push ( "" ) ;
vals . unshift ( "xcatmon" ) ;
// stored the new column to the newCont
newCont [ i + 1 ] = vals ;
// check the checkbox of the row and add different checkbox to the orignCont
// for the cancle button
if ( cols . item ( cols . length - 1 ) . firstChild . checked ) {
vals _orig . push ( '<input type="checkbox" name="' + vals _orig [ 0 ] + '" title="Click this checkbox will add/remove the app from the configure apps value." checked=true/>' ) ;
} else {
vals _orig . push ( '<input type="checkbox" name="' + vals _orig [ 0 ] + '" title="Click this checkbox will add/remove the app from the configure apps value."/>' ) ;
}
// push the delete button to the row
vals _orig . unshift ( '<span class="ui-icon ui-icon-close" onclick="deleteRow1(this)"></span>' ) ;
// add the row to the orignCont
origCont [ i + 1 ] = vals _orig ;
//tmp1=origCont;
//tmp=newCont;
count = i + 1 ;
// check the checkbox fo everyrow for merging the appName to the apps values
if ( cols . item ( cols . length - 1 ) . firstChild . checked ) {
// the new value for the apps.get the name fo every app.
appValue = appValue . concat ( cols . item ( 2 ) . firstChild . nodeValue + "," ) ;
}
}
}
count ++ ;
// delete the last "," of the apps value
appValue = appValue . substring ( 0 , ( appValue . length - 1 ) ) ;
apps [ 2 ] = appValue ;
// tmp =apps;
// newCont add the apps row
newCont [ count ++ ] = apps ;
// newCont add the ping-interval row
newCont [ count ++ ] = ping ;
//tmp=otherCont;
// add the other monitor setting of the mosetting
for ( var j = 0 ; j < otherCont . length ; j ++ ) {
newCont [ count ++ ] = otherCont [ j ] ;
}
//tmp=otherCont.length;
//tmp1=newCont;
setDatatable ( XcatmonTableId , dTable ) ;
2011-03-22 11:49:27 +00:00
// create the save dialog
var dialogSave = $ ( '<div id="saveDialog" align="center">saving the configuration </div>' ) ;
dialogSave . append ( createLoader ( ) ) ;
addBar . append ( dialogSave ) ;
// open the dialog..modal is true
$ ( "#saveDialog" ) . dialog ( { modal : true } ) ;
// hide the cross...
$ ( '.ui-dialog-titlebar-close' ) . hide ( ) ;
2011-03-17 03:39:05 +00:00
// pot the table name and the contain to the tabRestore.php
2010-08-04 08:49:20 +00:00
$ . ajax ( {
2011-03-17 03:39:05 +00:00
type : 'POST' ,
url : 'lib/tabRestore.php' ,
2010-08-04 08:49:20 +00:00
dataType : 'json' ,
data : {
2011-03-17 03:39:05 +00:00
table : tableName ,
cont : newCont
2010-08-04 08:49:20 +00:00
} ,
2011-03-17 03:39:05 +00:00
success : function ( data ) {
2011-03-22 11:49:27 +00:00
// empty the dialog.add the close button
$ ( "#saveDialog" ) . empty ( ) . append ( '<p>The Configure has saved!</p>' ) ;
$ ( "#saveDialog" ) . append ( closeBtn ) ;
2010-08-04 08:49:20 +00:00
}
2011-03-17 03:39:05 +00:00
2010-08-04 08:49:20 +00:00
} ) ;
2011-03-22 11:49:27 +00:00
// close button function
closeBtn . bind ( 'click' , function ( event ) {
$ ( "#saveDialog" ) . dialog ( "distroy" ) ;
$ ( "#saveDialog" ) . remove ( ) ;
} ) ;
2010-08-04 08:49:20 +00:00
2011-03-17 03:39:05 +00:00
// clear the newCont
newCont = null ;
newCont = new Object ( ) ;
//just for tet tmp=newCont;
newCont [ 0 ] = rsp [ 0 ] . split ( "," ) ;
}
) ;
/ *
* undo button
*
* /
CancelBtn . bind ( 'click' , function ( event ) {
// get the datatable of the page
var dTable = getDatatable ( XcatmonTableId ) ;
// clear the datatable
dTable . fnClearTable ( ) ;
// add the contain of the origCont to the datatable
for ( var i = 1 ; i < origCont . length ; i ++ ) {
dTable . fnAddData ( origCont [ i ] , true ) ;
}
$ ( ":checkbox[title]" ) . tooltip ( ) ;
$ ( '#' + XcatmonTableId + ' td:not(td:nth-child(1),td:last-child)' ) . editable (
function ( value , settings ) {
var colPos = this . cellIndex ;
var rowPos = dTable . fnGetPosition ( this . parentNode ) ;
dTable . fnUpdate ( value , rowPos , colPos ) ;
return ( value ) ;
} , {
onblur : 'submit' ,
type : 'textarea' ,
placeholder : ' ' ,
height : '30px'
}
) ;
}
) ;
2010-08-04 08:49:20 +00:00
}
2011-03-17 03:39:05 +00:00
// delete a row from the table
function deleteRow1 ( obj ) {
//var tableid=$(obj).parent().parent().parent().parent().attr('id');
var dTable = getDatatable ( XcatmonTableId ) ;
var rows = dTable . fnGetNodes ( ) ;
var tgtRow = $ ( obj ) . parent ( ) . parent ( ) . get ( 0 ) ;
for ( var i in rows ) {
if ( rows [ i ] == tgtRow ) {
dTable . fnDeleteRow ( i , null , true ) ;
break ;
}
2010-08-04 08:49:20 +00:00
}
2011-03-17 03:39:05 +00:00
2010-08-04 08:49:20 +00:00
}