| 1 | // ************************************************************************************************************************************************* | 
|---|
| 2 | // Libreria de scripts de Javascript | 
|---|
| 3 | // Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla | 
|---|
| 4 | // Fecha Creación: 2009-2010 | 
|---|
| 5 | // Fecha Última modificación: Agosto-2010 | 
|---|
| 6 | // Nombre del fichero: Configurar.js | 
|---|
| 7 | // Descripción : | 
|---|
| 8 | //              Este fichero implementa las funciones javascript del fichero Configurar.php (Comandos) | 
|---|
| 9 | // ************************************************************************************************************************************************* | 
|---|
| 10 |  | 
|---|
| 11 | var atributos=""; // Variable global | 
|---|
| 12 | var swc=false; // Switch para detectar cache | 
|---|
| 13 | var swe=false; // Switch para detectar partición extendida | 
|---|
| 14 |  | 
|---|
| 15 | //________________________________________________________________________________________________________ | 
|---|
| 16 | // | 
|---|
| 17 | //      Elimina una fila de una tabla de configuraciones perteneciente a las propiedades de una partición | 
|---|
| 18 | //      Parametros: | 
|---|
| 19 | //              icp: Identificador de la configuración-partición | 
|---|
| 20 | //              o: Objeto checkbox que invoca la función | 
|---|
| 21 | //________________________________________________________________________________________________________ | 
|---|
| 22 |  | 
|---|
| 23 | function eliminaParticion(o,icp) | 
|---|
| 24 | { | 
|---|
| 25 | var res=confirm(TbMsg[4]); // Pide confirmación | 
|---|
| 26 | if(!res){ | 
|---|
| 27 | o.checked=false; | 
|---|
| 28 | return; | 
|---|
| 29 | } | 
|---|
| 30 |  | 
|---|
| 31 | // Toma desplegable de tipo de partición | 
|---|
| 32 | var desplepar=o.parentNode.nextSibling.nextSibling.childNodes[0]; | 
|---|
| 33 | var tipar=tomavalorDesple(desplepar); // Partición | 
|---|
| 34 | if(tipar=="CACHE") swc=false; // Si es la caché se pone a false su switch | 
|---|
| 35 | if(tipar=="EXTENDED") swe=false; // Si es la EXTENDED se pone a false su switch | 
|---|
| 36 |  | 
|---|
| 37 | var tbCfg = document.getElementById("tabla_conf"); // Recupera objeto <TABLE> | 
|---|
| 38 | var trCfg = document.getElementById("TR_"+icp); // Recupera <TR> de la fila a eliminar | 
|---|
| 39 | var tbodyObj=tbCfg.firstChild; // Recupera hijo <TBODY> del objeto <TABLE> | 
|---|
| 40 | tbodyObj.removeChild(trCfg); // Elimina nodo <TR> completo | 
|---|
| 41 | } | 
|---|
| 42 | //________________________________________________________________________________________________________ | 
|---|
| 43 |  | 
|---|
| 44 | function addParticion(objImg,cc) | 
|---|
| 45 | { | 
|---|
| 46 | var tbCfg = document.getElementById("tabla_conf"); // Recupera objeto <TABLE> | 
|---|
| 47 | var tbodyObj=tbCfg.firstChild; // Recupera hijo <TBODY> del objeto <TABLE> | 
|---|
| 48 |  | 
|---|
| 49 | var trImg=document.getElementById("TRIMG_"+cc); // Recupera <TR> de los botones para insertar antes | 
|---|
| 50 |  | 
|---|
| 51 | var k=objImg.getAttribute('value'); // Toma siguiente identificador de nodo | 
|---|
| 52 | var icp=cc+"_"+k; // Identificador de la configuración-partición | 
|---|
| 53 |  | 
|---|
| 54 | /* Crea objeto TR y lo añade al TBODY de la tabla*/ | 
|---|
| 55 | var nwTR = document.createElement('TR'); | 
|---|
| 56 | nwTR.setAttribute("id","TR_"+icp); | 
|---|
| 57 | tbodyObj.insertBefore(nwTR,trImg); // Inserta nodo <TR> completo | 
|---|
| 58 | var patron = document.getElementById("TR_patron"); // Recupera <TR> patron | 
|---|
| 59 | nwTR.innerHTML=patron.innerHTML; | 
|---|
| 60 | /* Actualiza objeto checkbox nuevo para que actue como los demás */ | 
|---|
| 61 | var nwCHK = document.getElementById("CHK_patron"); // Recupera reciente chekcbox | 
|---|
| 62 | var fclbk="eliminaParticion(this,'"+icp+"');"; | 
|---|
| 63 | nwCHK.setAttribute("onclick",fclbk); | 
|---|
| 64 | nwCHK.removeAttribute("id"); | 
|---|
| 65 | /* Incrementa para siguiente identificador de nodo */ | 
|---|
| 66 | k++; | 
|---|
| 67 | objImg.setAttribute('value',k); | 
|---|
| 68 | } | 
|---|
| 69 | //________________________________________________________________________________________________________ | 
|---|
| 70 | // | 
|---|
| 71 | //      Confirma un bloque de configuración de particiones | 
|---|
| 72 | //      Parametros: | 
|---|
| 73 | //              idordenadores: Identificadores de los ordenadores a los que se aplicará el comando | 
|---|
| 74 | //              cc: Identificador de la configuración (bloque de particiones) | 
|---|
| 75 | //      Especificaciones: | 
|---|
| 76 | //              Cuando un comando se va a aplicar a un conjunto aleatorio de ordenaores, el código del | 
|---|
| 77 | //              ámbito será cero y la variable idambito contendrá la cadena con los identificadores de | 
|---|
| 78 | //              los oordenadores separados por coma (este dato aparece en esta función como promer parámetro) | 
|---|
| 79 | //________________________________________________________________________________________________________ | 
|---|
| 80 |  | 
|---|
| 81 | function Confirmar(cc) | 
|---|
| 82 | { | 
|---|
| 83 | if(comprobarDatos(cc)){ | 
|---|
| 84 | if(document.fdatosejecucion.ambito.value!=AMBITO_ORDENADORES){ | 
|---|
| 85 | var tbOrd= document.getElementById("tbOrd_"+cc); // Recupera tabla de ordenadores de la configuración | 
|---|
| 86 | var idordenadores=tbOrd.getAttribute('value'); // Toma identificadores de los ordenadores | 
|---|
| 87 | var cadenaid=document.fdatos.cadenaid.value; // Cadena de identificadores de todos los ordenadores del ámbito | 
|---|
| 88 | if(idordenadores!=cadenaid){ // Si no son iguales es que el ámbito de aplicación es restringido | 
|---|
| 89 | document.fdatosejecucion.ambito.value=0; // Ambito de aplicación restringido | 
|---|
| 90 | document.fdatosejecucion.idambito.value=idordenadores; | 
|---|
| 91 | } | 
|---|
| 92 | } | 
|---|
| 93 | document.fdatosejecucion.atributos.value=atributos; | 
|---|
| 94 | //alert(atributos) | 
|---|
| 95 | //filtrado(); | 
|---|
| 96 | document.fdatosejecucion.submit(); | 
|---|
| 97 | } | 
|---|
| 98 | } | 
|---|
| 99 | //________________________________________________________________________________________________________ | 
|---|
| 100 | // | 
|---|
| 101 | //      Confirma un bloque de configuración de particiones | 
|---|
| 102 | //      Parametros: | 
|---|
| 103 | //              cc: Identificador de la configuración (bloque de particiones) | 
|---|
| 104 | //      Version 1.1: 2015-02-25. Irina Gomez ETSII US. Se envian datos de cuarta particion. | 
|---|
| 105 | //________________________________________________________________________________________________________ | 
|---|
| 106 |  | 
|---|
| 107 | function comprobarDatos(cc) | 
|---|
| 108 | { | 
|---|
| 109 | // Indices de campos a recuperar | 
|---|
| 110 | var ipar=1; | 
|---|
| 111 | var icodpar=2; | 
|---|
| 112 | var isysfi=3; | 
|---|
| 113 | var itama=4; | 
|---|
| 114 | var iope=6; | 
|---|
| 115 |  | 
|---|
| 116 | var SL="%"; | 
|---|
| 117 | var TB="*"; | 
|---|
| 118 | var maxpar=0; | 
|---|
| 119 | var tbpar=new Array(); // Para control de particiones duplicadas | 
|---|
| 120 | var tbparam=new Array(); // Para control de configuración | 
|---|
| 121 | var npar; // Partición en formato integer | 
|---|
| 122 | var tch=0; // Tamaño de la caché | 
|---|
| 123 |  | 
|---|
| 124 | var allpartsize=0; // Tamaño total de todas las particiones. | 
|---|
| 125 | var extsize=0; // Tamaño partición "EXTENDED" | 
|---|
| 126 | var allextsize=0; // Tamaño total de las particiones extendidas. | 
|---|
| 127 |  | 
|---|
| 128 | var hdsize = document.getElementById("hdsize"+cc).value; | 
|---|
| 129 |  | 
|---|
| 130 | var trCfg = document.getElementById("TR_"+cc); // Recupera primer <TR> de la configuración | 
|---|
| 131 | trCfg=trCfg.nextSibling; // Primera fila de particiones | 
|---|
| 132 | while(trCfg.id!="TRIMG_"+cc){ | 
|---|
| 133 |  | 
|---|
| 134 | var tama=trCfg.childNodes[itama].childNodes[0].value; // Tamaño de partición | 
|---|
| 135 |  | 
|---|
| 136 |  | 
|---|
| 137 | var par=tomavalorDesple(trCfg.childNodes[ipar].childNodes[0]); // Partición | 
|---|
| 138 | npar=parseInt(par); | 
|---|
| 139 | if(maxpar<npar) maxpar=npar; // Guarda partición de mayor orden | 
|---|
| 140 |  | 
|---|
| 141 | if (npar==4){ | 
|---|
| 142 | swc=true; // Se especifica partición caché | 
|---|
| 143 | tch=tama; | 
|---|
| 144 | } | 
|---|
| 145 |  | 
|---|
| 146 | if(npar==0){ | 
|---|
| 147 | alert(TbMsg[1]); | 
|---|
| 148 | trCfg.childNodes[ipar].childNodes[0].focus(); | 
|---|
| 149 | return(false); | 
|---|
| 150 | } | 
|---|
| 151 |  | 
|---|
| 152 | if(tbpar[npar]==1){ // Existe ya una partición con ese número | 
|---|
| 153 | alert(TbMsg[0]); | 
|---|
| 154 | trCfg.childNodes[ipar].childNodes[0].focus(); | 
|---|
| 155 | return(false); | 
|---|
| 156 | } | 
|---|
| 157 |  | 
|---|
| 158 | tbpar[npar]=1; | 
|---|
| 159 | var codpar=tomavalorDesple(trCfg.childNodes[icodpar].childNodes[0]); // Tipo de partición | 
|---|
| 160 | if(codpar==""){ | 
|---|
| 161 | alert(TbMsg[2]); | 
|---|
| 162 | trCfg.childNodes[icodpar].childNodes[0].focus(); | 
|---|
| 163 | return(false); | 
|---|
| 164 | } | 
|---|
| 165 |  | 
|---|
| 166 | if(codpar=="EXTENDED") { | 
|---|
| 167 | swe=true; | 
|---|
| 168 | extsize=tama; | 
|---|
| 169 | } else { | 
|---|
| 170 | if (npar<=4){ | 
|---|
| 171 | allpartsize+=parseInt(tama); | 
|---|
| 172 | } else { | 
|---|
| 173 | allextsize+=parseInt(tama); | 
|---|
| 174 | } | 
|---|
| 175 | } | 
|---|
| 176 |  | 
|---|
| 177 | if(codpar=="CACHE" && npar!=4){ | 
|---|
| 178 | alert(TbMsg[6]); | 
|---|
| 179 | trCfg.childNodes[icodpar].childNodes[0].focus(); | 
|---|
| 180 | return(false); | 
|---|
| 181 | } | 
|---|
| 182 |  | 
|---|
| 183 | var ope=tomavalorCheck(trCfg.childNodes[iope].childNodes[0]); // Formatar a realizar | 
|---|
| 184 |  | 
|---|
| 185 | var sysfi=tomatextDesple(trCfg.childNodes[isysfi].childNodes[0]); // Sistema de ficheros | 
|---|
| 186 | if(sysfi=="" || sysfi=="EMPTY" ){ // Si el sistema de fichero es vacio o empty... | 
|---|
| 187 | if(ope==1){ // Si se quiere formatear... | 
|---|
| 188 | alert(TbMsg[5]); | 
|---|
| 189 | trCfg.childNodes[isysfi].childNodes[0].focus(); | 
|---|
| 190 | return(false); | 
|---|
| 191 | } | 
|---|
| 192 | else | 
|---|
| 193 | sysfi="EMPTY"; | 
|---|
| 194 | } | 
|---|
| 195 |  | 
|---|
| 196 | if(tama==0 && codpar!="EXTENDED") { | 
|---|
| 197 | alert(TbMsg[3]); | 
|---|
| 198 | trCfg.childNodes[itama].childNodes[0].focus(); | 
|---|
| 199 | return(false); | 
|---|
| 200 | } | 
|---|
| 201 |  | 
|---|
| 202 | trCfg=trCfg.nextSibling; // Siguiente fila de particiones | 
|---|
| 203 | /* Compone formato del comando */ | 
|---|
| 204 | tbparam[npar]="par="+par+TB+"cpt="+codpar+TB+"sfi="+sysfi+TB+"tam="+tama+TB+"ope="+ope+SL; | 
|---|
| 205 |  | 
|---|
| 206 | } | 
|---|
| 207 |  | 
|---|
| 208 | //Controles finales de los paramtros a enviar | 
|---|
| 209 |  | 
|---|
| 210 | if(!swe){ // Si no se han especificado particiones extendidas ... | 
|---|
| 211 | if(maxpar>4){ // La partición de mayor orden supera el número 4 | 
|---|
| 212 | alert(TbMsg[7]); | 
|---|
| 213 | return(false); | 
|---|
| 214 | } | 
|---|
| 215 | } | 
|---|
| 216 |  | 
|---|
| 217 | // Alerta si las particiones lógicas son mayores que la extendida | 
|---|
| 218 | if(swe){ | 
|---|
| 219 | if (allextsize>extsize) { | 
|---|
| 220 | alert(TbMsg["EXTSIZE"]); | 
|---|
| 221 | return(false); | 
|---|
| 222 | } | 
|---|
| 223 | allpartsize+=parseInt(extsize); | 
|---|
| 224 | } | 
|---|
| 225 | // Alerta si tamaño del disco menor que las particiones | 
|---|
| 226 | if (hdsize<allpartsize) { | 
|---|
| 227 | alert(TbMsg["HDSIZE"]); | 
|---|
| 228 | return(false); | 
|---|
| 229 |  | 
|---|
| 230 | } | 
|---|
| 231 |  | 
|---|
| 232 | /* Compone cadena de particiones (Deja fuera la cache, | 
|---|
| 233 | si se especificó) ya que va en parametro aparte | 
|---|
| 234 | */ | 
|---|
| 235 |  | 
|---|
| 236 | var RC="!"; | 
|---|
| 237 | var disco=1; // Siempre disco 1 | 
|---|
| 238 |  | 
|---|
| 239 | atributos="dsk="+disco+"@"+"cfg="; // Inicializa variable global de parámetros del comando | 
|---|
| 240 |  | 
|---|
| 241 |  | 
|---|
| 242 | if(swc){ | 
|---|
| 243 | atributos+="dis="+disco+TB+"che=1"+TB+"tch="+tch+RC; // Caché con su tamaño | 
|---|
| 244 | } | 
|---|
| 245 | else{ | 
|---|
| 246 | atributos+="dis="+disco+TB+"che=0"+TB+"tch=0"+RC; // No se especifica caché | 
|---|
| 247 | } | 
|---|
| 248 |  | 
|---|
| 249 | for(var i=1;i<=maxpar;i++){ | 
|---|
| 250 | // Version 1.1: Se envian datos cuarta particion. | 
|---|
| 251 | //if(i!=4){ | 
|---|
| 252 | if(tbparam[i]!=undefined) | 
|---|
| 253 | atributos+=tbparam[i]; | 
|---|
| 254 | else | 
|---|
| 255 | atributos+="par="+i+TB+"cpt=EMPTY"+TB+"sfi=EMPTY"+TB+"tam=0"+TB+"ope=0"+SL; | 
|---|
| 256 | //} | 
|---|
| 257 | } | 
|---|
| 258 |  | 
|---|
| 259 | // Completa con EMPTY si las particiones son menores a 4 y no hay cache | 
|---|
| 260 | if(maxpar<4){ | 
|---|
| 261 | var up=4; | 
|---|
| 262 | if(swc) up=3; | 
|---|
| 263 | for(var i=maxpar+1;i<=up;i++) | 
|---|
| 264 | atributos+="par="+i+TB+"cpt=EMPTY"+TB+"sfi=EMPTY"+TB+"tam=0"+TB+"ope=0"+SL; | 
|---|
| 265 | } | 
|---|
| 266 |  | 
|---|
| 267 | return(true); | 
|---|
| 268 | } | 
|---|
| 269 | //________________________________________________________________________________________________________ | 
|---|
| 270 | // | 
|---|
| 271 | // Devuelve el valor seleccionado de un desplegable cualquiera | 
|---|
| 272 | //________________________________________________________________________________________________________ | 
|---|
| 273 |  | 
|---|
| 274 | function tomavalorDesple(desplegable) | 
|---|
| 275 | { | 
|---|
| 276 | var idx=desplegable.selectedIndex; // Indice seleccionado en el desplegable | 
|---|
| 277 | var val=desplegable.options[idx].value; // Valor seleccionado en el desplegable | 
|---|
| 278 | return(val); | 
|---|
| 279 | } | 
|---|
| 280 |  | 
|---|
| 281 | function tomavalorCheck(chk) | 
|---|
| 282 | { | 
|---|
| 283 | if(chk.checked) // Valor seleccionado en el desplegable | 
|---|
| 284 | return(1); | 
|---|
| 285 | return(0); | 
|---|
| 286 | } | 
|---|
| 287 | //________________________________________________________________________________________________________ | 
|---|
| 288 | // | 
|---|
| 289 | // Devuelve el valor seleccionado de un desplegable cualquiera | 
|---|
| 290 | //________________________________________________________________________________________________________ | 
|---|
| 291 |  | 
|---|
| 292 | function tomatextDesple(desplegable) | 
|---|
| 293 | { | 
|---|
| 294 | var idx=desplegable.selectedIndex; // Indice seleccionado en el desplegable | 
|---|
| 295 | var txt=desplegable.options[idx].text; // Valor seleccionado en el desplegable | 
|---|
| 296 | return(txt); | 
|---|
| 297 | } | 
|---|
| 298 |  | 
|---|