source: admin/WebConsole/comandos/jscripts/Configurar.js @ 5d05b06

Last change on this file since 5d05b06 was 5d05b06, checked in by OpenGnSys Support Team <soporte-og@…>, 4 years ago

#1008 Add support to work with GPT tables

WebConsole? needs to rely on /shell/run to work with GPT tables. Because
"Partition and Format"/"Particionar y Formatear" form always supposes
that the partition table is MBR/MSDOS.

"Setup"/"Configurar" script from "Cloning Engine" also supposes that the
partition table is MBR/MSDOS. But it uses "Boot.lib" library, that can
create MBR and GTP partitions.

This commit:

  • Adds WebConsole? support to work with GPT tables.
    • Adds input field where the user can select between MSDOS and GPT table types.
  • Adds "Setup" support to work with GPT tables.
    • Adds script parameter that expects a string with "MSDOS" or "GPT".
  • Property mode set to 100644
File size: 10.5 KB
Line 
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
11var atributos=""; // Variable global
12var swc=false; // Switch para detectar cache
13var 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//      Parámetros:
19//              icp: Identificador de la configuración-partición
20//              o: Objeto checkbox que invoca la función
21//________________________________________________________________________________________________________
22
23function 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
44function 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//      Parámetros:
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 
81function 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 
107function 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=[]; // Para control de particiones duplicadas
120        var tbparam=[]; // 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                // Comprobar tamaño negativo.
137                if (tama < 0) {
138                        alert(TbMsg[8]);
139                        trCfg.childNodes[ipar].childNodes[0].focus();
140                        return(false);
141                }
142
143                var par=tomavalorDesple(trCfg.childNodes[ipar].childNodes[0]); // Partición
144                npar=parseInt(par);
145                if(maxpar<npar) maxpar=npar; // Guarda partición de mayor orden
146
147                if (npar===4){
148                        swc=true; // Se especifica partición caché
149                        tch=tama;
150                }
151
152                if(npar===0){
153                        alert(TbMsg[1]);
154                        trCfg.childNodes[ipar].childNodes[0].focus();
155                        return(false);
156                }       
157
158                if(tbpar[npar]===1){ // Existe ya una partición con ese número
159                        alert(TbMsg[0]);
160                        trCfg.childNodes[ipar].childNodes[0].focus();
161                        return(false);
162                }
163
164                tbpar[npar]=1;
165                var codpar=tomavalorDesple(trCfg.childNodes[icodpar].childNodes[0]); // Tipo de partición
166                if(codpar===""){
167                        alert(TbMsg[2]);
168                        trCfg.childNodes[icodpar].childNodes[0].focus();
169                        return(false);
170                }       
171
172                if(codpar==="EXTENDED") {
173                        swe=true;
174                        extsize=tama;
175                } else {
176                        if (npar<=4){
177                                allpartsize+=parseInt(tama);
178                        } else {
179                                allextsize+=parseInt(tama);
180                        }
181                }
182
183                if(codpar==="CACHE" && npar!==4){
184                        alert(TbMsg[6]);
185                        trCfg.childNodes[icodpar].childNodes[0].focus();
186                        return(false);
187                }
188
189                var ope=tomavalorCheck(trCfg.childNodes[iope].childNodes[0]); // Formatar a realizar   
190
191                var sysfi=tomatextDesple(trCfg.childNodes[isysfi].childNodes[0]); // Sistema de ficheros
192                if(sysfi==="" || sysfi==="EMPTY" ){ // Si el sistema de fichero es vacio o empty...
193                                if(ope===1){ // Si se quiere formatear...
194                                        alert(TbMsg[5]);
195                                        trCfg.childNodes[isysfi].childNodes[0].focus();
196                                        return(false);
197                                }       
198                                else
199                                        sysfi="EMPTY";
200                }
201
202                if(tama===0 && codpar!=="EXTENDED") {
203                        alert(TbMsg[3]);
204                        trCfg.childNodes[itama].childNodes[0].focus();
205                        return(false);
206                }
207
208                trCfg=trCfg.nextSibling; // Siguiente fila de particiones
209                /* Compone formato del comando */
210                tbparam[npar]="par="+par+TB+"cpt="+codpar+TB+"sfi="+sysfi+TB+"tam="+tama+TB+"ope="+ope+SL;
211
212        }       
213       
214        //Controles finales de los paramtros a enviar
215
216        if(!swe){ // Si no se han especificado particiones extendidas ...
217                if(maxpar>4){ // La partición de mayor orden supera el número 4
218                        alert(TbMsg[7]);
219                        return(false);
220                }
221        }
222
223        // Alerta si las particiones lógicas son mayores que la extendida
224        if(swe){
225                if (allextsize>extsize) {
226                        alert(TbMsg["EXTSIZE"]);
227                        return(false);
228                }
229                allpartsize+=extsize;
230        }
231        // Alerta si tamaño del disco menor que las particiones
232        if (hdsize<allpartsize) {
233                alert(TbMsg["HDSIZE"]);
234                return(false);
235        }
236
237        /* Compone cadena de particiones (Deja fuera la cache,
238                 si se especificó) ya que va en parametro aparte
239        */
240
241        var RC="!";
242        var disco = document.disk.current_numdisk.value;
243        var table_type = document.getElementById("table_type").value;
244
245        atributos="ttp="+table_type+"@"+"dsk="+disco+"@"+"cfg="; // Inicializa variable global de parámetros del comando
246
247
248        if(swc){
249                atributos+="dis="+disco+TB+"che=1"+TB+"tch="+tch+RC; // Caché con su tamaño
250        }
251        else{
252                atributos+="dis="+disco+TB+"che=0"+TB+"tch=0"+RC; // No se especifica caché
253        }
254
255        for(var i=1;i<=maxpar;i++){
256                // Version 1.1: Se envian datos cuarta particion.
257                //if(i!=4){
258                        if(tbparam[i]!=undefined)
259                                atributos+=tbparam[i];
260                        else
261                                atributos+="par="+i+TB+"cpt=EMPTY"+TB+"sfi=EMPTY"+TB+"tam=0"+TB+"ope=0"+SL;
262                //}
263        }
264
265        // Completa con EMPTY si las particiones son menores a 4 y no hay cache
266        if(maxpar<4){
267                var up=4;
268                if(swc) up=3; 
269                for(i=maxpar+1;i<=up;i++)
270                        atributos+="par="+i+TB+"cpt=EMPTY"+TB+"sfi=EMPTY"+TB+"tam=0"+TB+"ope=0"+SL;
271        }
272                                                                                       
273        return(true);
274}
275//________________________________________________________________________________________________________
276//
277// Devuelve el valor seleccionado de un desplegable cualquiera
278//________________________________________________________________________________________________________
279
280function tomavalorDesple(desplegable)
281{
282        var idx=desplegable.selectedIndex; // Indice seleccionado en el desplegable
283        var val=desplegable.options[idx].value; // Valor seleccionado en el desplegable
284        return(val);
285}
286
287function tomavalorCheck(chk)
288{
289        if(chk.checked) // Valor seleccionado en el desplegable
290                return(1);
291        return(0);
292}
293//________________________________________________________________________________________________________
294//
295// Devuelve el valor seleccionado de un desplegable cualquiera
296//________________________________________________________________________________________________________
297
298function tomatextDesple(desplegable)
299{
300        var idx=desplegable.selectedIndex; // Indice seleccionado en el desplegable
301        var txt=desplegable.options[idx].text; // Valor seleccionado en el desplegable
302        return(txt);
303}
304
Note: See TracBrowser for help on using the repository browser.