source: admin/WebConsole/comandos/jscripts/Configurar.js @ 7d8c134

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacionwebconsole3
Last change on this file since 7d8c134 was 0c15976, checked in by ramon <ramongomez@…>, 7 years ago

#821: Cambios en el comando Particionar y Formatear:

  • Soportar varios grupos de configuraciones en ámbito de aulas.
  • Nuevas cabeceras más descriptivas y con traducción al inglés.
  • Avisar si un grupo de ordenadores tiene discos con distinto tamaño e indicar que debe desagruparse para poder aplicar los cambios.

En el formulario de configuración de aula, indicar que hay grupos de ordenadores con distinto tamaño de disco.

git-svn-id: https://opengnsys.es/svn/branches/version1.1@5559 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100644
File size: 10.3 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//      Parametros:
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//      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 
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=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
274function 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
281function 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
292function 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
Note: See TracBrowser for help on using the repository browser.