// *************************************************************************************************************************************************
// Libreria de scripts de Javascript
// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
// Fecha Creación: 2009-2010
// Fecha Última modificación: Agosto-2010
// Nombre del fichero: Configurar.js
// Descripción :
// Este fichero implementa las funciones javascript del fichero Configurar.php (Comandos)
// *************************************************************************************************************************************************
var atributos=""; // Variable global
var swc=false; // Switch para detectar cache
var swe=false; // Switch para detectar partición extendida
//________________________________________________________________________________________________________
//
// Elimina una fila de una tabla de configuraciones perteneciente a las propiedades de una partición
// Parametros:
// icp: Identificador de la configuración-partición
// o: Objeto checkbox que invoca la función
//________________________________________________________________________________________________________
function eliminaParticion(o,icp)
{
var res=confirm(TbMsg[4]); // Pide confirmación
if(!res){
o.checked=false;
return;
}
// Toma desplegable de tipo de partición
var desplepar=o.parentNode.nextSibling.nextSibling.childNodes[0];
var tipar=tomavalorDesple(desplepar); // Partición
if(tipar=="CACHE") swc=false; // Si es la caché se pone a false su switch
if(tipar=="EXTENDED") swe=false; // Si es la EXTENDED se pone a false su switch
var tbCfg = document.getElementById("tabla_conf"); // Recupera objeto
var trCfg = document.getElementById("TR_"+icp); // Recupera de la fila a eliminar
var tbodyObj=tbCfg.firstChild; // Recupera hijo
del objeto
tbodyObj.removeChild(trCfg); // Elimina nodo completo
}
//________________________________________________________________________________________________________
function addParticion(objImg,cc)
{
var tbCfg = document.getElementById("tabla_conf"); // Recupera objeto
var tbodyObj=tbCfg.firstChild; // Recupera hijo del objeto
var trImg=document.getElementById("TRIMG_"+cc); // Recupera de los botones para insertar antes
var k=objImg.getAttribute('value'); // Toma siguiente identificador de nodo
var icp=cc+"_"+k; // Identificador de la configuración-partición
/* Crea objeto TR y lo añade al TBODY de la tabla*/
var nwTR = document.createElement('TR');
nwTR.setAttribute("id","TR_"+icp);
tbodyObj.insertBefore(nwTR,trImg); // Inserta nodo
completo
var patron = document.getElementById("TR_patron"); // Recupera
patron
nwTR.innerHTML=patron.innerHTML;
/* Actualiza objeto checkbox nuevo para que actue como los demás */
var nwCHK = document.getElementById("CHK_patron"); // Recupera reciente chekcbox
var fclbk="eliminaParticion(this,'"+icp+"');";
nwCHK.setAttribute("onclick",fclbk);
nwCHK.removeAttribute("id");
/* Incrementa para siguiente identificador de nodo */
k++;
objImg.setAttribute('value',k);
}
//________________________________________________________________________________________________________
//
// Confirma un bloque de configuración de particiones
// Parametros:
// idordenadores: Identificadores de los ordenadores a los que se aplicará el comando
// cc: Identificador de la configuración (bloque de particiones)
// Especificaciones:
// Cuando un comando se va a aplicar a un conjunto aleatorio de ordenaores, el código del
// ámbito será cero y la variable idambito contendrá la cadena con los identificadores de
// los oordenadores separados por coma (este dato aparece en esta función como promer parámetro)
//________________________________________________________________________________________________________
function Confirmar(cc)
{
if(comprobarDatos(cc)){
if(document.fdatosejecucion.ambito.value!=AMBITO_ORDENADORES){
var tbOrd= document.getElementById("tbOrd_"+cc); // Recupera tabla de ordenadores de la configuración
var idordenadores=tbOrd.getAttribute('value'); // Toma identificadores de los ordenadores
var cadenaid=document.fdatos.cadenaid.value; // Cadena de identificadores de todos los ordenadores del ámbito
if(idordenadores!=cadenaid){ // Si no son iguales es que el ámbito de aplicación es restringido
document.fdatosejecucion.ambito.value=0; // Ambito de aplicación restringido
document.fdatosejecucion.idambito.value=idordenadores;
}
}
document.fdatosejecucion.atributos.value=atributos;
//alert(atributos)
//filtrado();
document.fdatosejecucion.submit();
}
}
//________________________________________________________________________________________________________
//
// Confirma un bloque de configuración de particiones
// Parametros:
// cc: Identificador de la configuración (bloque de particiones)
//________________________________________________________________________________________________________
function comprobarDatos(cc)
{
// Indices de campos a recuperar
var ipar=1;
var icodpar=2;
var isysfi=3;
var itama=4;
var iope=6;
var SL="%";
var TB="*";
var maxpar=0;
var tbpar=new Array(); // Para control de particiones duplicadas
var tbparam=new Array(); // Para control de configuración
var npar; // Partición en formato integer
var tch=0; // Tamaño de la caché
var trCfg = document.getElementById("TR_"+cc); // Recupera primer
de la configuración
trCfg=trCfg.nextSibling; // Primera fila de particiones
while(trCfg.id!="TRIMG_"+cc){
var tama=trCfg.childNodes[itama].childNodes[0].value; // Tamaño de partición
var par=tomavalorDesple(trCfg.childNodes[ipar].childNodes[0]); // Partición
npar=parseInt(par);
if(maxpar4){ // La partición de mayor orden supera el número 4
alert(TbMsg[7]);
return(false);
}
}
/* Compone cadena de particiones (Deja fuera la cache,
si se especificó) ya que va en parametro aparte
*/
var RC="!";
var disco=1; // Siempre disco 1
atributos="dsk="+disco+"@"+"cfg="; // Inicializa variable global de parámetros del comando
if(swc){
atributos+="dis="+disco+TB+"che=1"+TB+"tch="+tch+RC; // Caché con su tamaño
}
else{
atributos+="dis="+disco+TB+"che=0"+TB+"tch=0"+RC; // No se especifica caché
}
for(var i=1;i<=maxpar;i++){
if(i!=4){
if(tbparam[i]!=undefined)
atributos+=tbparam[i];
else
atributos+="par="+i+TB+"cpt=EMPTY"+TB+"sfi=EMPTY"+TB+"tam=0"+TB+"ope=0"+SL;
}
}
// Completa con EMPTY si las particiones son menores a 4 y no hay cache
if(maxpar<4){
var up=4;
if(swc) up=3;
for(var i=maxpar+1;i<=up;i++)
atributos+="par="+i+TB+"cpt=EMPTY"+TB+"sfi=EMPTY"+TB+"tam=0"+TB+"ope=0"+SL;
}
return(true);
}
//________________________________________________________________________________________________________
//
// Devuelve el valor seleccionado de un desplegable cualquiera
//________________________________________________________________________________________________________
function tomavalorDesple(desplegable)
{
var idx=desplegable.selectedIndex; // Indice seleccionado en el desplegable
var val=desplegable.options[idx].value; // Valor seleccionado en el desplegable
return(val);
}
function tomavalorCheck(chk)
{
if(chk.checked) // Valor seleccionado en el desplegable
return(1);
return(0);
}
//________________________________________________________________________________________________________
//
// Devuelve el valor seleccionado de un desplegable cualquiera
//________________________________________________________________________________________________________
function tomatextDesple(desplegable)
{
var idx=desplegable.selectedIndex; // Indice seleccionado en el desplegable
var txt=desplegable.options[idx].text; // Valor seleccionado en el desplegable
return(txt);
}