source: admin/WebConsole/asistentes/jscripts/asistentes.js @ f8dfa27

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 f8dfa27 was 4a7bf32, checked in by Ramón M. Gómez <ramongomez@…>, 6 years ago

#834: Fixing more code cleanup: CSS units, HTML tags, and Javascript variables and comparisons.

  • Property mode set to 100644
File size: 25.5 KB
Line 
1// ***********************************************************************************************************
2// Libreria de scripts de Javascript
3// Autor:
4// Fecha Creación: 2011
5// Fecha Última modificación: enero-2011
6// Nombre del fichero: asistentes.js
7// Descripción :
8//              Este fichero implementa las funciones javascript del fichero AsistentesEjecutarScripts.php (Comandos)
9// version 1.1: cliente con varios repositorios - Imagenes de todos los repositorios de la UO.
10// autor: Irina Gomez, Universidad de Sevilla
11// fecha 2015-06-17
12// version 1.1: showPartitionForm: Se incluye aviso para particiones GTP.
13// autor: Irina Gomez, ETSII Universidad de Sevilla
14// fecha: 2016-06-21
15// version 1.1: codeDeployImage: Compone atributo para el comando restaurar imagen (ticket #757)
16// autor: Irina Gomez, ETSII Universidad de Sevilla
17// fecha: 2016-10-27
18// ***********************************************************************************************************
19
20function codeCloneRemotePartition(form){
21var protocol;
22switch (form.idmetodo.value)
23{
24        case "MULTICAST":
25                protocol="MULTICAST " + form.mcastpuerto.value  + ":" + form.mcastmodo.value + ":" + form.mcastdireccion.value + ":" + form.mcastvelocidad.value + "M:" + form.mcastnclien.value + ":" + form.mcastseg.value + " ";
26                break;
27        case "UNICAST":
28                protocol="UNICAST " +  form.ucastport.value + ":" + form.ucastclient.value + " ";
29                break;
30}
31//form.codigo.value="cloneRemoteFromMaster " + form.ipMaster.value + " 1 " + form.PartOrigen.value + "  " + form.mcastpuerto.value  + ":" + form.mcastmodo.value + ":" + form.mcastdireccion.value + ":" + form.mcastvelocidad.value + "M:" + form.mcastnclien.value + ":" + form.mcastseg.value + " 1 " + form.PartOrigen.value + " " + form.tool.value + " " + form.compresor.value;
32var command="cloneRemoteFromMaster " + form.ipMaster.value + " " + form.source.value + "  " + protocol  + " " + form.targetpart.value + " " + form.tool.value + " " + form.compresor.value;
33form.codigo.value="\
34ogEcho log session \"[0] $MSG_SCRIPTS_TASK_START " + command + "\"\n \
35ogExecAndLog command " + command + " \n ";
36}
37
38// disableDirect(form): En Deploy de imagenes si se elige updateCache se impide elegir multicast-direct o unicast-direct
39function disableDirect(form){
40        // MULTICAST-DIRECT
41        form.idmetodo.options[2].disabled=true;
42        // UNICAST-DIRECT
43        form.idmetodo.options[4].disabled=true;
44}
45// enableDirect(form): En Deploy de imagenes si se elige deployCache se permite elegir multicast-direct o unicast-direct
46function enableDirect(form){
47        // MULTICAST-DIRECT
48        form.idmetodo.options[2].disabled=false;
49        // UNICAST-DIRECT
50        form.idmetodo.options[4].disabled=false;
51}
52
53
54function codeDeployImage(form){
55var diskPart;
56var imagen;
57var command;
58
59switch (form.idmetodo.value)
60{
61        case "MULTICAST":
62                protocol="MULTICAST " + form.mcastpuerto.value  + ":" + form.mcastmodo.value + ":" + form.mcastdireccion.value + ":" + form.mcastvelocidad.value + "M:" + form.mcastnclien.value + ":" + form.mcastseg.value + " ";
63                break;
64        case "MULTICAST-DIRECT":
65                protocol="MULTICAST-DIRECT " + form.mcastpuerto.value  + ":" + form.mcastmodo.value + ":" + form.mcastdireccion.value + ":" + form.mcastvelocidad.value + "M:" + form.mcastnclien.value + ":" + form.mcastseg.value + " ";
66                break;
67        case "TORRENT":
68                protocol="TORRENT " +  form.modp2p.value + ":" + form.timep2p.value;
69                break;
70        case "UNICAST":
71                protocol="UNICAST";
72                break;
73        case "UNICAST-DIRECT":
74                protocol="UNICAST-DIRECT";
75                break;
76}
77
78// Datos imagen
79imagen = form.idimagen.value.split("_");
80
81//form.codigo.value="deployImage REPO /";
82if (form.modo[0].checked)
83{
84        // UHU - Distinguimos entre disco y particion, el valor de idparticion sera disco;particion. eje. 1;1
85        diskPart = form.idparticion.value.split(";");
86        imagen = form.idimagen.value.split("_");
87        command="deployImage " + imagen[0] + " /" + imagen[1] + " "+diskPart[0]+" " + diskPart[1] + " " + protocol  ;
88        form.codigo.value="\
89ogEcho log session \"[0] $MSG_SCRIPTS_TASK_START " + command + "\"\n \ " +
90command + " \n";
91
92        // Atributos para comando RestaurarImagen
93        form.atrib_restore.value = "dsk=" + diskPart[0] + "@par="+ diskPart[1] +"@idi=" +imagen[2] +
94                                   "@nci="+imagen[1] + "@ipr="+ imagen[0] +"@ifs=" +imagen[3] +
95                                   "@ptc="+protocol +"@";
96}
97else
98{
99        command="updateCache REPO /" + imagen[1] + ".img" + " " + protocol  ;
100        form.codigo.value="\
101ogEcho log session \"[0] $MSG_SCRIPTS_TASK_START " + command +"\"\n \ " +
102command + " \n";
103        //form.codigo.value="updateCache REPO /" + form.idimagen.value + ".img" + " " + protocol  ;
104}
105
106}
107
108// Activa el área de texto del código, permitiendo modificarlo.
109function modificarCodigo() {
110        document.getElementById("codigo").disabled = false;
111}
112
113function codeParticionado(form){
114        var n_disk = form.n_disk.value;
115        var tipo_part_table = form.tipo_part_table.value;
116        var freedisk;
117        var freediskGPT;
118        // Comprobamos si la opcion elejida es GPT o MSDOS para llamar a una funcion u otra
119        if(tipo_part_table === "GPT"){
120                freediskGPT = parseInt(document.getElementById("freediskGPT").value);
121                // Comprobamos que el espacio libre en el disco no sea negativo, si lo es, dar aviso
122                if(freediskGPT < 0){
123                        alert(TbMsg['NODISKSIZE']);
124                }
125                else if (!validaCache(freediskGPT)) {
126                        alert(TbMsg['NOCACHESIZE']);
127                }
128                else{
129                        codeParticionadoGPT(form);
130                }
131        }
132        else{
133                freedisk = parseInt(document.getElementById("freedisk").value);
134                // Comprobamos que el espacio libre en el disco no sea negativo, si lo es, dar aviso
135                if(freedisk < 0){
136                        alert(TbMsg['NODISKSIZE']);
137                }
138                else if (!validaCache(freedisk)) {
139                        alert(TbMsg['NOCACHESIZE']);
140                }
141                else{
142                        codeParticionadoMSDOS(form);
143                }
144        }
145}
146
147
148function codeParticionadoMSDOS (form) {
149        var partCode="";
150        var logicalCode="";
151        var sizecacheCode="";
152        var cacheCode="";
153        var cacheSize;
154        var extended=false;
155        var n_disk = form.n_disk.value;
156        var tipo_part_table = form.tipo_part_table.value;
157        var maxParts = 4;
158        var swapPart = [];
159        var swapCode = "";
160        var partCheck;
161        var partType;
162        var partTypeCustom;
163        var partSize;
164        var partSizeCustom;
165        // Comprobamos si esta seleccionada la cuarta particion y no es CACHE
166        if(form.check4.checked && form.part4.value !== "CACHE")
167                maxParts = 5;
168
169        for (var nPart=1; nPart<maxParts; nPart++) {
170                partCheck=eval("form.check"+nPart);
171                if (partCheck.checked) {
172                        partType=eval("form.part"+nPart);
173                        if (partType.value === "CUSTOM" ) {
174                                partTypeCustom=eval("form.part"+nPart+"custom");
175                                partCode += " " + partTypeCustom.value;
176                                switch(partTypeCustom.value) {
177                                    case "EXTENDED":
178                                        extended=true;
179                                        break;
180                                    case "LINUX-SWAP":
181                                        swapPart.push(nPart);
182                                        break;
183                                }
184       
185                        } else {
186                                partCode += " " + partType.value;
187                                switch(partType.value) {
188                                    case "EXTENDED":
189                                        extended=true;
190                                        break;
191                                    case "LINUX-SWAP":
192                                        swapPart.push(nPart);
193                                        break;
194                                }
195                        }
196                        partSize=eval("form.size"+nPart);
197                        if (partSize.value === "CUSTOM" ) {
198                                partSizeCustom=eval("form.size"+nPart+"custom");
199                                partCode += ":" + partSizeCustom.value;
200                        } else {
201                                partCode += ":" + partSize.value;
202                        }
203                } else {
204                        partCode += " EMPTY:0";
205                }
206        }
207
208        // Si se selecciono la particion 4 y es CACHE
209        if(form.part4.value === "CACHE"){
210                if (form.check4.checked) {
211                        if (form.size4.value === "0") {
212                                sizecacheCode="\
213ogEcho session \"[20] $MSG_HELP_ogGetCacheSize\"\n \
214sizecache=`ogGetCacheSize` \n ";
215                                cacheCode="\
216initCache "+n_disk+" $sizecache NOMOUNT  &>/dev/null \n ";             
217                        } else {
218                                if (form.size4.value === "CUSTOM") {
219                                        cacheSize = form.size4custom.value;
220                                } else {
221                                        cacheSize = form.size4.value;
222                                }
223                                cacheCode="\
224initCache " + n_disk + " " + cacheSize + " NOMOUNT &>/dev/null \n ";
225                        }
226                        cacheCode += "ogEcho session \"[60] $MSG_HELP_ogListPartitions "+n_disk+"\" \n ";
227                        cacheCode += "ogExecAndLog command session ogListPartitions "+n_disk+" \n ";
228                } else {
229                        partCode += " EMPTY:0";
230                }
231        }
232
233        if (extended) {
234                var lastLogical=5;
235                for (nPart=9; nPart>5; nPart--) {
236                        if (eval ("form.check"+nPart+".checked")) {
237                                lastLogical = nPart;
238                                break;
239                        }
240                }
241                for (nPart=5; nPart<=lastLogical; nPart++) {
242                        partCheck=eval("form.check"+nPart);
243                        if (partCheck.checked) {
244                                partType=eval("form.part"+nPart);
245                                if (partType.value === "CUSTOM" ) {
246                                        partTypeCustom=eval("form.part"+nPart+"custom");
247                                        logicalCode += " " + partTypeCustom.value;
248                                        // Partición swap
249                                        if (partTypeCustom.value === "LINUX-SWAP")
250                                                swapPart.push(nPart);
251                                } else {
252                                        logicalCode += " " + partType.value;
253                                        // Partición swap
254                                        if (partType.value === "LINUX-SWAP")
255                                                swapPart.push(nPart);
256                                }
257                                partSize=eval("form.size"+nPart);
258                                if (partSize.value === "CUSTOM" ) {
259                                        partSizeCustom=eval("form.size"+nPart+"custom");
260                                        logicalCode += ":" + partSizeCustom.value;
261                                } else {
262                                        logicalCode += ":" + partSize.value;
263                                }
264                        } else {
265                                logicalCode += " EMPTY:0";
266                        }
267                }
268                partCode += logicalCode;
269        }
270
271        // Formateo de la partición swap
272        if (swapPart.length > 0) {
273            for (var i=0; i < swapPart.length; i++) {
274                swapCode += " ogEcho session log \"[95] $MSG_HELP_ogFormat "+n_disk+" "+swapPart[i]+" LINUX-SWAP \"\n  " ;
275                swapCode += " ogExecAndLog command ogFormat "+n_disk+" "+swapPart[i]+" LINUX-SWAP \n ";
276            }
277
278        }
279
280        form.codigo.value="\
281ogEcho log session \"[0]  $MSG_HELP_ogCreatePartitions "+n_disk+"\"\n \
282ogEcho session \"[10] $MSG_HELP_ogUnmountAll "+n_disk+"\"\n \
283ogUnmountAll "+n_disk+" 2>/dev/null \n \
284ogUnmountCache \n \
285" + sizecacheCode + "\
286ogEcho session \"[30] $MSG_HELP_ogUpdatePartitionTable "+n_disk+"\"\n \
287ogCreatePartitionTable "+n_disk+" "+tipo_part_table +" \n \
288ogDeletePartitionTable "+n_disk+" \n \
289ogUpdatePartitionTable "+n_disk+" \n \
290" + cacheCode + "\
291ogEcho session \"[70] $MSG_HELP_ogCreatePartitions  " + partCode + "\"\n \
292ogExecAndLog command ogCreatePartitions "+n_disk+" " + partCode + " \n \
293EVAL=$? \n \
294if [ $EVAL -eq 0 ]; then \n \
295  ogEcho session \"[80] $MSG_HELP_ogSetPartitionActive "+n_disk+" 1\"\n \
296  ogSetPartitionActive "+n_disk+" 1 \n \
297  ogEcho log session \"[90] $MSG_HELP_ogListPartitions  "+n_disk+"\"\n \
298  ogUpdatePartitionTable "+n_disk+" \n \
299  ms-sys /dev/sda | grep unknow && ms-sys /dev/sda \n \
300  ogExecAndLog command session log ogListPartitions "+n_disk+" \n\
301  "+ swapCode +"\
302else \n \
303  ogEcho session log \"[100] ERROR: $MSG_HELP_ogCreatePartitions\" \n \
304  return $EVAL \n \
305fi";
306}
307
308
309function codeParticionadoGPT (form) {
310        var partCode="";
311        var logicalCode="";
312        var sizecacheCode="";
313        var cacheCode="";
314        var cacheSize;
315        var extended=false;
316        var n_disk = form.n_disk.value;
317        var tipo_part_table = form.tipo_part_table.value;
318        var swapPart = [];
319        var swapCode = "";
320                var numParts=document.getElementById("numGPTpartitions").value;
321               
322        for (var nPart=1; nPart <= numParts; nPart++) {
323                var partCheck=eval("form.checkGPT"+nPart);
324                if (partCheck.checked) {
325                        // Distinguimos entre cache y el resto de particiones
326                        // Solo tratamos la particion 4 como cache, si se selecciono este tipo
327                        if(nPart === 4 && form.partGPT4.value === "CACHE") {
328                                if (form.sizeGPT4.value === "0") {
329                                        sizecacheCode="\
330ogEcho session \"[20] $MSG_HELP_ogGetCacheSize\" \n \
331sizecache=`ogGetCacheSize` \n ";
332                                        cacheCode="\
333ogEcho session \"[50] $MSG_HELP_ogCreateCache\"\n \
334initCache "+ n_disk +" $sizecache NOMOUNT &>/dev/null \n ";
335                                } else {
336                                        if (form.sizeGPT4.value === "CUSTOM") {
337                                                cacheSize = form.sizeGPT4custom.value;
338                                        } else {
339                                                cacheSize = form.sizeGPT4.value;
340                                        }
341                                        cacheCode="\
342ogEcho session \"[50] $MSG_HELP_ogCreateCache\"\n \
343initCache "  + n_disk +" "+ cacheSize + " NOMOUNT &>/dev/null \n ";
344                                }
345                                cacheCode += "ogEcho session \"[60] $MSG_HELP_ogListPartitions "+n_disk+"\"\n ";
346                                cacheCode += "ogExecAndLog command session ogListPartitions "+n_disk+" \n ";
347                        } else{
348                                var partType=eval("form.partGPT"+nPart);
349                                if (partType.value === "CUSTOM" ) {
350                                        var partTypeCustom=eval("form.partGPT"+nPart+"custom");
351                                        partCode += " " + partTypeCustom.value;
352                                        // Partición swap
353                                        if (partTypeCustom.value === "LINUX-SWAP")
354                                                swapPart.push(nPart);
355                                } else {
356                                        partCode += " " + partType.value;
357                                        // Partición swap
358                                        if (partType.value === "LINUX-SWAP")
359                                                swapPart.push(nPart);
360                                }
361                                var partSize=eval("form.sizeGPT"+nPart);
362                                if (partSize.value === "CUSTOM" ) {
363                                        var partSizeCustom=eval("form.sizeGPT"+nPart+"custom");
364                                        partCode += ":" + partSizeCustom.value;
365                                } else {
366                                        partCode += ":" + partSize.value;
367                                }
368                        }
369                } else {
370                        partCode += " EMPTY:0";
371                }
372        }
373        // Formateo de la partición swap
374        if (swapPart.length > 0) {
375            for (var i=0; i < swapPart.length; i++) {
376                swapCode += " ogEcho session log \"[95] $MSG_HELP_ogFormat "+n_disk+" "+swapPart[i]+" LINUX-SWAP \" \n" ;
377                swapCode += " ogExecAndLog command ogFormat "+n_disk+" "+swapPart[i]+" LINUX-SWAP \n";
378            }
379        }
380           
381        form.codigo.value="\
382ogEcho log session \"[0]  $MSG_HELP_ogCreatePartitions "+n_disk+"\"\n \
383ogEcho session \"[10] $MSG_HELP_ogUnmountAll "+n_disk+"\"\n \
384ogUnmountAll "+n_disk+" \n \
385ogUnmountCache \n \
386" + sizecacheCode + "\
387ogEcho session \"[30] $MSG_HELP_ogUpdatePartitionTable "+n_disk+"\"\n \
388ogCreatePartitionTable "+n_disk+" "+tipo_part_table +" \n \
389ogDeletePartitionTable "+n_disk+" \n \
390ogUpdatePartitionTable "+n_disk+" \n \
391" + cacheCode + "\
392ogEcho session \"[70] $MSG_HELP_ogCreatePartitions " + partCode + "\"\n \
393ogExecAndLog command ogCreatePartitions "+n_disk+" " + partCode + "\n \
394EVAL=$? \n \
395if [ $EVAL -eq 0 ]; then \n \
396    ogEcho session \"[80] $MSG_HELP_ogSetPartitionActive "+n_disk+" 1\"\n \
397    ogSetPartitionActive "+n_disk+" 1 \n \
398    ogEcho log session \"[90] $MSG_HELP_ogListPartitions "+n_disk+"\"\n \
399    ogUpdatePartitionTable "+n_disk+" \n \
400    ms-sys /dev/sda | grep unknow && ms-sys /dev/sda \n \
401    ogExecAndLog command session log ogListPartitions "+n_disk+" \n \
402else \n \
403    ogEcho session log \"[100] ERROR: $MSG_HELP_ogCreatePartitions\" \n \
404    return $EVAL \n \
405fi \n ";
406
407// Formateo de la swap
408form.codigo.value += swapCode;
409}
410
411
412function showPartitionForm (tipo_table_part) {
413        document.getElementById("form"+tipo_table_part).style.display="inline";
414        if(tipo_table_part === "MSDOS"){
415                // De los dos tipos, se oculta el otro
416                document.getElementById("formGPT").style.display="none";
417                document.getElementById("warngpt").style.display="none";
418        } else{
419                document.getElementById("formMSDOS").style.display="none";
420                // Para GPT obliga que primera partición sea EFI
421                document.getElementById("checkGPT1").checked=true;
422                document.getElementById("checkGPT1").disabled=true;
423                document.getElementById("partGPT1").value="CUSTOM";
424                document.getElementById("partGPT1custom").value="EFI";
425                document.getElementById("sizeGPT1").value="CUSTOM";
426                document.getElementById("sizeGPT1").disabled=false;
427                document.getElementById("sizeGPT1custom").value="512000";
428                document.getElementById("sizeGPT1custom").disabled=false;
429                document.getElementById("warngpt").style.display="table-row";
430        }
431}
432
433
434// Código de pulsación de selección de partición.
435function clickPartitionCheckbox (form, npart, isGPT) {
436        // Si el parametro no esta definido, se toma como false
437        isGPT = (isGPT)?isGPT:"false";
438        var prefix="";
439        if(isGPT === true){
440                prefix="GPT";
441        }
442        var partCheck=eval("form.check"+prefix+npart);
443        var partType=eval("form.part"+prefix+npart);
444        var partSize=eval("form.size"+prefix+npart);
445        var partTypeCustom=eval("form.part"+prefix+npart+"custom");
446        var partSizeCustom=eval("form.size"+prefix+npart+"custom");
447        var freeDisk=document.getElementById("freedisk"+prefix);
448        //var logical=document.getElementById("logicas"+prefix);
449        if (partCheck.checked) {
450                partType.disabled=false;
451                partSize.disabled=false;
452                if(npart !== 4){
453                        if (partType.options[partType.selectedIndex].value === "CUSTOM") {
454                                partTypeCustom.disabled=false;
455                        }
456                }
457                partSizeCustom.disabled = partSize.options[partSize.selectedIndex].value !== "CUSTOM";
458        } else {
459                partType.disabled=true;
460                partSize.disabled=true;
461                // El campo TypeCustom no existe para la particion 4
462                if(npart !== 4)
463                        partTypeCustom.disabled=true;
464                partSizeCustom.disabled=true;
465        }
466        if (npart <= 4) {
467                // Si el formulario es GPT no hay extendidas
468                if(isGPT !== true){
469                        checkExtendedPartition(form);
470                }
471                calculateFreeDisk(form);
472        }
473}
474
475/**
476 * Dado un numero de disco, recorre todos los input hidden con nombre disksize_"disco"
477 * y devuelve el de menor valor
478 */
479function getMinDiskSize(disk){
480        var diskSizeArray = document.getElementsByName("disksize_"+disk);
481        var minSize = diskSizeArray[0].value;
482        for(var i= 1; i < diskSizeArray.length; i++){
483                if(diskSizeArray[i].value < minSize)
484                        minSize = diskSizeArray[i].value;
485        }
486        // Restar sectores iniciales del disco al tamaño total (1 MB).
487        return (minSize > 1024 ? minSize - 1024 : minSize)
488}
489
490// Calcula el tamaño de la mayor cache y lo guarda en un campo oculto
491function getMaxCacheSize() {
492        var cacheSizeArray = document.getElementsByName("cachesize");
493        // Si no existe cache el valor es cero.
494        if (cacheSizeArray[0]) {
495            var maxSize = cacheSizeArray[0].value;
496            for(var i= 1; i < cacheSizeArray.length; i++){
497                if(maxSize < cacheSizeArray[i].value)
498                        maxSize = cacheSizeArray[i].value;
499            }
500            document.getElementById("maxcachesize").value = maxSize;
501        } else {
502            document.getElementById("maxcachesize").value = 0;
503        }
504}
505
506
507// Comprueba que la cache quepa en el espacio libre del disco
508function validaCache (freedisk) {
509        var form = document.fdatos;
510        var maxcachesize = parseInt(document.getElementById("maxcachesize").value);
511        if(form.part4.value === "CACHE" && form.check4.checked && form.size4.value === 0 ){
512            return ((freedisk - maxcachesize) > 0);
513        }
514        return true;
515}
516
517// Código para calcular el espacio libre del disco.
518function calculateFreeDisk(form) {
519        // Si esta seleccionada la opcion GPT, se llama a la funcion correspondiente
520        if(document.getElementById("tipo_part_table").value === "GPT"){
521                calculateFreeGPTDisk(form);
522        }
523        // Capturamos el disco seleccionado
524        var disk = document.getElementById("n_disk").value;
525        // Buscamos por nombre todos los campos disksize_"disk" y nos quedamos con el de menor valor
526        var diskSize = getMinDiskSize(disk);
527       
528               
529        var freeDisk=document.getElementById("freedisk");
530        freeDisk.value=diskSize;
531        for (var npart=1; npart<=4; npart++) {
532                var partCheck=eval("form.check"+npart);
533                var partSize=eval("form.size"+npart);
534                var partSizeCustom=eval("form.size"+npart+"custom");
535                if (partCheck.checked) {
536                        if (partSize.options[partSize.selectedIndex].value === "CUSTOM") {
537                                freeDisk.value -= parseInt(partSizeCustom.value);
538                        } else {
539                                freeDisk.value -= parseInt(partSize.options[partSize.selectedIndex].value);
540                        }
541                }
542        }
543        if (parseInt(freeDisk.value) < 0) {
544                freeDisk.style.fontWeight = "bold";
545                freeDisk.style.fontStyle = "italic";
546        } else {
547                freeDisk.style.fontWeight = "normal";
548                freeDisk.style.fontStyle = "normal";
549        }
550        if (form.size4.value === 0) {
551                freeDisk.value += " (- cache)";         // Aviso de caché sin modificar.
552        }
553}
554
555// Código para calcular el espacio libre del disco. en el formulario GPT
556function calculateFreeGPTDisk(form) {
557        // Si esta seleccionada la opcion MSDOS, se llama a la funcion correspondiente
558        if(document.getElementById("tipo_part_table").value === "MSDOS"){
559                calculateFreeDisk(form);
560        }
561        // Capturamos el disco seleccionado
562        var disk = document.getElementById("n_disk").value;
563        // Buscamos el input hidden para el disco seleccionado
564        document.getElementById('freediskGPT').value=getMinDiskSize(disk);
565       
566        var freeDisk=document.getElementById("freediskGPT");
567        // Capturamos el numero de particiones que hay hechas
568        var numParts=document.getElementById("numGPTpartitions").value;
569        for (var npart=1; npart<=numParts; npart++) {
570            var partCheck=eval("form.checkGPT"+npart);
571            var partSize=eval("form.sizeGPT"+npart);
572            var partSizeCustom=eval("form.sizeGPT"+npart+"custom");
573            if (partCheck.checked) {
574                    if (partSize.options[partSize.selectedIndex].value === "CUSTOM") {
575                            freeDisk.value -= parseInt(partSizeCustom.value);
576                    } else {
577                            freeDisk.value -= parseInt(partSize.options[partSize.selectedIndex].value);
578                    }
579            }
580    }
581    if (parseInt(freeDisk.value) < 0) {
582            freeDisk.style.fontWeight = "bold";
583            freeDisk.style.fontStyle = "italic";
584    } else {
585            freeDisk.style.fontWeight = "normal";
586            freeDisk.style.fontStyle = "normal";
587    }
588    if (form.size4.value === 0) {
589            freeDisk.value += " (- cache)";         // Aviso de caché sin modificar.
590    }
591}
592
593// Agrega una nueva fila a la tabla de particiones con una nueva particion
594function addGPTPartition(){
595        var partitionTypes = "";
596        partitionTypes+='<OPTION value="WINDOWS"> Windows </OPTION>';
597        partitionTypes+='<OPTION value="WIN-RESERV"> Windows Reserved </OPTION>';
598        partitionTypes+='<OPTION value="LINUX"> Linux </OTION>';
599        partitionTypes+='<OPTION value="LINUX-RESERV"> Linux Reserved </OPTION>';
600        partitionTypes+='<OPTION value="LINUX-SWAP"> Linux Swap </OPTION>';
601        partitionTypes+='<OPTION value="LINUX-RAID"> Linux RAID </OPTION>';
602        partitionTypes+='<OPTION value="LINUX-LVM"> Linux LVM </OPTION>';
603        partitionTypes+='<OPTION value="CHROMEOS"> ChromeOS </OTION>';
604        partitionTypes+='<OPTION value="CHROMEOS-KRN"> ChromeOS Kernel </OPTION>';
605        partitionTypes+='<OPTION value="CHROMEOS-RESERV"> ChromeOS Reserved </OPTION>';
606        partitionTypes+='<OPTION value="HFS"> MacOS HFS </OPTION>';
607        partitionTypes+='<OPTION value="HFS-BOOT"> MacOS HFS Boot </OPTION>';
608        partitionTypes+='<OPTION value="HFS-RAID"> MacOS HFS RAID </OPTION>';
609        partitionTypes+='<OPTION value="FREEBSD"> FreeBSD </OPTION>';
610        partitionTypes+='<OPTION value="FREEBSD-DISK"> FreeBSD Disk </OPTION>';
611        partitionTypes+='<OPTION value="FREEBSD-BOOT"> FreeBSD Boot </OPTION>';
612        partitionTypes+='<OPTION value="FREEBSD-SWAP"> FreeBSD Swap </OPTION>';
613        partitionTypes+='<OPTION value="SOLARIS"> Solaris </OPTION>';
614        partitionTypes+='<OPTION value="SOLARIS-DISK"> Solaris Disk </OPTION>';
615        partitionTypes+='<OPTION value="SOLARIS-BOOT"> Solaris Boot </OPTION>';
616        partitionTypes+='<OPTION value="SOLARIS-SWAP"> Solaris Swap </OPTION>';
617        partitionTypes+='<OPTION value="EFI"> EFI </OPTION>';
618        partitionTypes+='<OPTION value="MBR"> MBR </OPTION>';
619        partitionTypes+='<OPTION value="BIOS-BOOT"> BIOS Boot </OPTION>';
620
621
622        var table = document.getElementById("particionesGPT");
623        // Capturamos el numero de particiones, antes incrementamos
624        document.getElementById("numGPTpartitions").value = parseInt(document.getElementById("numGPTpartitions").value)+1;
625        var numPart=document.getElementById("numGPTpartitions").value;
626        var partitionRow = table.insertRow(-1);
627        partitionRow.id = "trPartition"+numPart;
628        partitionRow.innerHTML="<td> \
629<input type='checkbox' name='checkGPT"+numPart+"' value='checkGPT"+numPart+"' onclick='clickPartitionCheckbox(this.form, "+numPart+",true);' /> Partici&oacute;n "+numPart+"</td> \
630<td>\
631<select name='partGPT"+numPart+"' id='partGPT"+numPart+"' style='width:220' disabled='true' onclick=' \
632        if (this.options[this.selectedIndex].value === \"CUSTOM\") { \
633                this.form.partGPT"+numPart+"custom.disabled=false; \
634        } else { \
635                this.form.partGPT"+numPart+"custom.disabled=true; \
636        }'><option value='CUSTOM'> Personalizar </option> \
637</select> \
638<br> \
639<select name='partGPT"+numPart+"custom' id='partGPT"+numPart+"custom' style='width:220px' disabled='true' >"+partitionTypes+"</select> \
640</td> \
641<td> \
642<select name='sizeGPT"+numPart+"' id='sizeGPT"+numPart+"' style='width:220px' disabled='true' onclick=' \
643        if (this.form.size"+numPart+".options[this.form.size"+numPart+".selectedIndex].value === \"CUSTOM\") { \
644                this.form.sizeGPT"+numPart+"custom.disabled=false; \
645        } else { \
646                this.form.sizeGPT"+numPart+"custom.disabled=true; \
647        } \
648' onchange='calculateFreeGPTDisk(this.form);'>0<option value='CUSTOM'> Personalizar </option> \
649</select> \
650<br /> \
651<input type='text' style='width:100px' name='sizeGPT"+numPart+"custom' value='0' disabled='true' onchange='calculateFreeDisk(this.form);' /> \
652</td>"
653
654}
655
656// Agrega una nueva fila a la tabla de particiones con una nueva particion
657function deleteGPTPartition(){
658        var table = document.getElementById("particionesGPT");
659        // Capturamos el numero de particiones
660        var numPart=document.getElementById("numGPTpartitions").value;
661        // Si ya solo quedan 4 particiones, no se elimina ni se decrementa el contador
662        if(numPart > 4){
663                var partitionRow = document.getElementById("trPartition"+numPart);
664                table.deleteRow(partitionRow.rowIndex);
665                // Decrementamos el numero de particiones
666                document.getElementById("numGPTpartitions").value = parseInt(document.getElementById("numGPTpartitions").value)-1;
667        }
668}
669
670// Código para comprobar si hay partición extendida activa para mostrar las lógicas.
671function checkExtendedPartition(form) {
672        var logical=document.getElementById("logicas");
673        var visible=false;
674        for (var npart=1; npart<=4; npart++) {
675                var partCheck=eval("form.check"+npart);
676                var partType=eval("form.part"+npart);
677                var partTypeCustom=eval("form.part"+npart+"custom");
678                if (partCheck.checked) {
679                        partType.style.fontWeight = "normal";
680
681                        if (partType.value === "EXTENDED") {
682                                visible=true;
683                                partType.style.fontWeight = "bold";
684                        }
685                        // La particion 4 no tiene partTypeCustom
686                        if(npart !== 4){
687                                partTypeCustom.style.fontWeight = "normal";
688                                if (partType.value === "CUSTOM" && partTypeCustom.value === "EXTENDED") {
689                                        visible=true;
690                                        partTypeCustom.style.fontWeight = "bold";
691                                }
692                        }
693                }
694        }
695        if (visible) {
696                logical.style.visibility="visible";
697        } else {
698                logical.style.visibility="hidden";
699        }
700}
Note: See TracBrowser for help on using the repository browser.