Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. window.onload = initAll;
  2. var zonaEntidades;
  3. var zonaRelaciones;
  4. var zonaRelacional;
  5. var zonaMultivaluados;
  6.  
  7. function anadir(tipo){
  8.    
  9.     var nuevaEntidad = document.createElement("table");
  10.     nuevaEntidad.setAttribute('border', '2');
  11.     var numero=Math.random();
  12.     nuevaEntidad.setAttribute('id', ''+numero+'');
  13.     var espacio = document.createElement("br");
  14.     espacio.setAttribute('name',''+numero+'');
  15.    
  16.     var nuevoHead = document.createElement("thead");
  17.     var nuevoBody = document.createElement("tbody");
  18.     var nuevoPie = document.createElement("tfoot");
  19.    
  20.     if(tipo==0){
  21.         nuevoHead.insertRow(0);
  22.         nuevoHead.rows[0].insertCell(0);
  23.         nuevoHead.rows[0].cells[0].innerHTML = 'Entidad: <input type="text" name="'+numero+'" onchange="crearRelaciona();actualizarEntidadesLista()" onblur="actualizarEntidadesLista()"> Es Débil : <input type="checkbox" onchange="crearRelaciona();actualizarEntidadesLista();esDebil('+numero+')"/><input type="button" value="Eliminar Entidad" onclick="eliminar(0,'+ numero + ')">'
  24.         nuevoPie.insertRow(0);
  25.         nuevoPie.rows[0].insertCell(0);
  26.         nuevoPie.rows[0].cells[0].innerHTML = '<input type="button" value="agregarAtributo" onblur="actualizarEntidadesLista()" onclick="agregarAtributo(0,'+ numero + ')">'
  27.     }else{
  28.         nuevoHead.insertRow(0);
  29.         nuevoHead.rows[0].insertCell(0);
  30.         nuevoHead.rows[0].cells[0].innerHTML = 'Entidad: <select name="entidadesLista"></select>'
  31.         nuevoHead.rows[0].insertCell(1);
  32.         nuevoHead.rows[0].cells[1].innerHTML = 'Cardinalidad: <select><option>1</option><option>N</option></select>'
  33.         nuevoHead.rows[0].insertCell(2);
  34.         nuevoHead.rows[0].cells[2].innerHTML = 'Relacion: <input type"text" onchange="crearRelaciona()">'
  35.         nuevoHead.rows[0].insertCell(3);
  36.         nuevoHead.rows[0].cells[3].innerHTML = 'Cardinalidad: <select><option>1</option><option>N</option></select>'
  37.         nuevoHead.rows[0].insertCell(4);
  38.         nuevoHead.rows[0].cells[4].innerHTML = 'Entidad: <select name="entidadesLista"></select>'  
  39.         nuevoPie.insertRow(0);
  40.         nuevoPie.rows[0].insertCell(0);
  41.         nuevoPie.rows[0].cells[0].innerHTML = '<input type="button" value="agregarAtributo" onclick="agregarAtributo(1,'+ numero + ')"><input type="button" value="Eliminar Relación" onclick="eliminar(1,'+ numero + ')">'
  42.     }
  43.    
  44.     nuevaEntidad.appendChild(nuevoHead);   
  45.     nuevaEntidad.appendChild(nuevoBody);
  46.     nuevaEntidad.appendChild(nuevoPie);
  47.     if(tipo==0){
  48.         zonaEntidades.appendChild(nuevaEntidad);
  49.         zonaEntidades.appendChild(espacio);
  50.     }else{
  51.         zonaRelaciones.appendChild(nuevaEntidad);
  52.         zonaRelaciones.appendChild(espacio);
  53.     }
  54. }
  55.  
  56. function nuevoDebil(id)
  57. {
  58.     var nuevaEntidadD = document.createElement("table");
  59.     nuevaEntidadD.setAttribute('border', '2');
  60.     var id2=id+1;
  61.     nuevaEntidadD.setAttribute('id', ''+id2+'');
  62.     var espacio = document.createElement("br");
  63.     espacio.setAttribute('name',''+id2+'');
  64.     var nom=document.getElementById(id).tHead.rows[0].cells[0].getElementsByTagName("input")[0].value;
  65.     var nuevoHead = document.createElement("thead");
  66.     var nuevoBody = document.createElement("tbody");
  67.     var nuevoPie = document.createElement("tfoot");
  68.    
  69.     nuevoHead.insertRow(0);
  70.     nuevoHead.rows[0].insertCell(0);
  71.     nuevoHead.rows[0].cells[0].innerHTML = 'Entidad: <select name="debil"><option>'+nom+'</option></select>'
  72.     nuevoHead.rows[0].insertCell(1);
  73.     nuevoHead.rows[0].cells[1].innerHTML = 'Cardinalidad: <select><option>1</option><option>N</option></select>'
  74.     nuevoHead.rows[0].insertCell(2);
  75.     nuevoHead.rows[0].cells[2].innerHTML = 'Relacion: <input type"text" value="Pertenece a" onchange="crearRelaciona()" disabled=true>'
  76.     nuevoHead.rows[0].insertCell(3);
  77.     nuevoHead.rows[0].cells[3].innerHTML = 'Cardinalidad: <select><option>1</option><option>N</option></select>'
  78.     nuevoHead.rows[0].insertCell(4);
  79.     nuevoHead.rows[0].cells[4].innerHTML = 'Entidad: <select name="entidadesLista"></select>'  
  80.     nuevoPie.insertRow(0);
  81.     nuevoPie.rows[0].insertCell(0);
  82.     nuevoPie.rows[0].cells[0].innerHTML = '<input type="button" value="agregarAtributo" onClick="agregarAtributo(1,'+ id2 + ')">';
  83.     nuevaEntidadD.appendChild(nuevoHead);  
  84.     nuevaEntidadD.appendChild(nuevoBody);
  85.     nuevaEntidadD.appendChild(nuevoPie);
  86.     zonaRelaciones.appendChild(nuevaEntidadD);
  87.     zonaRelaciones.appendChild(espacio);
  88.     actualizarEntidadesLista();
  89. }
  90.  
  91. function actualizaDebil(id)
  92. {
  93.     var id2=id;
  94.     var id3=id2-1;
  95.     document.getElementById(id2).tHead.getElementsByTagName("select")[0].options[0].text=document.getElementById(id3).tHead.rows[0].cells[0].getElementsByTagName("input")[0].value;
  96.     //alert(d.length);
  97.     if(zonaRelaciones.getElementsByTagName("table").length!=0){
  98.         var listas = document.getElementsByName("debil");
  99.         var atributosLlave = new Array();
  100.         var atributos = new Array();   
  101.         atributosLlave = echameLosAtributos(2,id3);
  102.         atributos = echameLosAtributos(0,id3);
  103.         if(atributosLlave!=0 && atributos!=0){
  104.             for(var i=0;i<listas.length;i++)
  105.             {
  106.                 if(listas[i].options[0].text==document.getElementById(id3).tHead.rows[0].cells[0].getElementsByTagName("input")[0].value)
  107.                 {
  108.                     listas[i].options[0].value="";
  109.                     for(var k=0; k<atributosLlave.length; k++)
  110.                         if(atributosLlave[k]=="on")
  111.                         if(listas[i].options[0].value!="")
  112.                             listas[i].options[0].value += ","+atributos[k];
  113.                         else
  114.                             listas[i].options[0].value += atributos[k];
  115.                 }
  116.             }
  117.         }
  118.         else
  119.         {
  120.             if(atributosLlave==0)
  121.             alert("No hay atributo llave en "+document.getElementById(id3).tHead.rows[0].cells[0].getElementsByTagName("input")[0].value);
  122.             else
  123.             alert("No hay atributos en "+document.getElementById(id3).tHead.rows[0].cells[0].getElementsByTagName("input")[0].value);
  124.         }
  125.     }
  126. }
  127.  
  128. function quitarRDebil(id)
  129. {
  130.     var relaciones=zonaRelaciones.getElementsByTagName("table");
  131.     var nombre=document.getElementById(id).tHead.rows[0].cells[0].getElementsByTagName("input")[0].value;
  132.     if(relaciones.length!=0)
  133.     {
  134.         for(var i=0;i<relaciones.length;i++)
  135.         {
  136.             var fila=relaciones[i].tHead.rows[0];
  137.             if(fila.cells[0].getElementsByTagName("select")[0].name=="debil" && fila.cells[0].getElementsByTagName("select")[0].getElementsByTagName("option")[0].text==nombre)
  138.             {
  139.                 eliminar(1,relaciones[i].id);
  140.             }
  141.         }
  142.    
  143.     }
  144. }
  145.  
  146. function actualizarEntidadesLista(){
  147.     if(zonaRelaciones.getElementsByTagName("table").length!=0){
  148.         var listas = document.getElementsByName("entidadesLista");
  149.    
  150.         var entidadesNombres = echameLosNombres();
  151.         for(var i=0; i<listas.length; i++)
  152.                 listas[i].options.length =0;
  153.                
  154.         var entidadesIds = echameLosAydisDeEntidades();
  155.        
  156.        
  157.             var atributosLlave = new Array(entidadesIds.length);
  158.             var atributos = new Array(entidadesIds.length);
  159.             for(var j=0; j<entidadesNombres.length; j++){
  160.                 if(document.getElementById(entidadesIds[j]).tHead.rows[0].cells[0].getElementsByTagName("input")[1].checked==true)
  161.                 {
  162.                         var h=entidadesIds[j];
  163.                         h++;
  164.                         actualizaDebil(h);
  165.                 }
  166.                     atributosLlave = echameLosAtributos(2,entidadesIds[j]);
  167.                     atributos = echameLosAtributos(0,entidadesIds[j]);
  168.                     if(atributosLlave!=0 && atributos!=0){
  169.                         for(i=0; i<listas.length; i++)
  170.                         {
  171.                             listas[i].options[j] = new Option(""+entidadesNombres[j]); 
  172.                             listas[i].options[j].value=entidadesIds[j];
  173.                             listas[i].options[j].value="";
  174.                             for(var k=0; k<atributosLlave.length; k++)
  175.                                
  176.                                 if(atributosLlave[k]=="on")
  177.                                 if(listas[i].options[j].value!="")
  178.                                     listas[i].options[j].value += ","+atributos[k];
  179.                                 else
  180.                                     listas[i].options[j].value += atributos[k];
  181.                                     //alert(listas[i].value);
  182.                         }
  183.                     }
  184.                     else
  185.                     {
  186.                         if(atributosLlave==0)
  187.                         alert("No hay atributo llave en "+entidadesNombres[j]);
  188.                         else
  189.                         alert("No hay atributos en "+entidadesNombres[j]);
  190.                     }
  191.                
  192.             }
  193.     }  
  194. }
  195.  
  196. function initAll() {
  197.     document.getElementsByTagName("form")[0].onsubmit = function() {return agregarER();}
  198.  
  199.     zonaEntidades = document.getElementById("entidades");
  200.     zonaRelaciones = document.getElementById("relaciones");
  201.     zonaRelacional = document.getElementById("relacional");
  202.     zonaMultivaluados = document.getElementById("multivaluados");
  203. }
  204.  
  205.  
  206. function eliminar(tipo, cual) {
  207.     var cualBorrar = document.getElementById(cual);
  208.     if(tipo==0){       
  209.         zonaEntidades.removeChild(cualBorrar);
  210.         var cualBorrar = document.getElementsByName(cual);
  211.         zonaEntidades.removeChild(cualBorrar[0]);
  212.     }
  213.     else{
  214.         zonaRelaciones.removeChild(cualBorrar);
  215.         var cualBorrar = document.getElementsByName(cual);
  216.         zonaRelaciones.removeChild(cualBorrar[0]);
  217.     }
  218.     actualizarEntidadesLista()
  219.     crearRelaciona();
  220. }
  221.  
  222. function echameLosAydisDeEntidades()
  223. {
  224.     var numEntidades=zonaEntidades.getElementsByTagName("table").length;
  225.     var arregloId=new Array(numEntidades);
  226.     if(numEntidades==0)
  227.     {
  228.         alert("No hay entidades");
  229.     }
  230.     else
  231.     {
  232.         for(var i=0;i<numEntidades;i++)
  233.         {
  234.             var id=zonaEntidades.getElementsByTagName("table")[i].id;
  235.  
  236.             if(id=="")
  237.                 {
  238.                     arregloId[i]="Entidad sin id";
  239.                 }
  240.             else{
  241.                 arregloId[i]=id;
  242.             }
  243.         }
  244.         return arregloId;
  245.     }
  246. }
  247.  
  248. function agregarAtributo(tipo, aCual){ 
  249.    
  250.     numero = Math.random();
  251.     queTabla = document.getElementById(aCual);
  252.     queFila = queTabla.tBodies[0].rows.length;
  253.     if(queFila==0){
  254.         queTabla.tBodies[0].insertRow(queFila);
  255.         queColumna=0;          
  256.     }else
  257.         queColumna = queTabla.tBodies[0].rows[0].cells.length
  258.     queTabla.tBodies[0].rows[0].insertCell(queColumna);
  259.     queTabla.tBodies[0].rows[0].cells[queColumna].setAttribute('id', ''+numero+'');
  260.     if(tipo==0){       
  261.         queTabla.tBodies[0].rows[0].cells[queColumna].innerHTML = 'Atributo: <input type="text" onchange="crearRelaciona();actualizarEntidadesLista()"> Multivaluado: <input type="checkbox" onchange="crearRelaciona();actualizarEntidadesLista();esMulti('+aCual+','+numero+')"/> Llave <input type="checkbox" onchange="crearRelaciona();actualizarEntidadesLista();esLlave('+aCual+','+numero+')"/><input type="button"  value="Eliminar Atributo"  onclick="eliminarAtributo('+ aCual +','+numero+');actualizarEntidadesLista()">'
  262.     }else
  263.         queTabla.tBodies[0].rows[0].cells[queColumna].innerHTML = 'Atributo: <input type="text" onchange="crearRelaciona();actualizarEntidadesLista()" onblur="actualizarEntidadesLista()"><input type="button"  value="Eliminar Atributo"  onclick="eliminarAtributo('+ aCual +','+numero+');actualizarEntidadesLista()">'
  264.     actualizarEntidadesLista()
  265.    
  266. }
  267.  
  268. function agregarMultivaluado(aCual, queCelda){
  269.     var numero=Math.random();
  270.     var queTabla = document.getElementById(aCual);
  271.     var celda = document.getElementById(queCelda);
  272.    
  273. //  queTabla.tBodies[0].rows[0].cells[i].getElementsByTagName("input")[0].value;
  274.     var nuevoEsquema = document.createElement("table");
  275.     nuevoEsquema.setAttribute('border', '2');
  276.     nuevoEsquema.setAttribute('id', ''+numero+'');
  277.     nuevoEsquema.setAttribute('name',''+aCual+'');
  278.     var espacio = document.createElement("br");
  279.     espacio.setAttribute('name',''+numero+'');
  280.    
  281.     var nuevoHead = document.createElement("thead");
  282.     var nuevoBody = document.createElement("tbody");
  283.     var nuevoPie = document.createElement("tfoot");
  284.    
  285.     nuevoHead.insertRow(0);
  286.     nuevoHead.rows[0].insertCell(0);
  287.     nuevoHead.rows[0].cells[0].innerHTML = 'Multivaluado de: ' + queTabla.tHead.rows[0].cells[0].getElementsByTagName("input")[0].value + ' del atributo ' + queCelda.getElementsByTagName("input")[0].value;
  288.    
  289.     nuevoBody.insertRow(0);
  290.     nuevoBody.rows[0].insertCell(0);
  291.     nuevoBody.rows[0].cells[0].innerHTML = queCelda.getElementsByTagName("input")[0].value;
  292.  
  293.     nuevoBody.rows[1].insertCell(0);
  294.     nuevoBody.rows[1].cells[0].innerHTML = "Valores";
  295.    
  296.     nuevoEsquema.appendChild(nuevoHead);   
  297.     nuevoEsquema.appendChild(nuevoBody);
  298.     nuevoEsquema.appendChild(nuevoPie);
  299.     if(tipo==0){
  300.         zonaEntidades.appendChild(nuevoEsquema);
  301.         zonaEntidades.appendChild(espacio);
  302.     }else{
  303.         zonaRelaciones.appendChild(nuevoEsquema);
  304.         zonaRelaciones.appendChild(espacio);
  305.     }
  306. }
  307.  
  308. function eliminarMultivaluado(aCual, queCelda){
  309.    
  310. }
  311.  
  312. function esLlave(aCual, queCelda){
  313.     var tabla = document.getElementById(aCual);
  314.     var llave;
  315.     if(tabla.tBodies[0].rows[0].cells[queCelda].getElementsByTagName("input")[2].checked==true)
  316.         tabla.tBodies[0].rows[0].cells[queCelda].getElementsByTagName("input")[1].checked=false;
  317.        
  318. }
  319. function esMulti(aCual, queCelda){
  320.     var tabla = document.getElementById(aCual);
  321.     var multi;
  322.     if(tabla.tBodies[0].rows[0].cells[queCelda].getElementsByTagName("input")[1].checked==true){
  323.         tabla.tBodies[0].rows[0].cells[queCelda].getElementsByTagName("input")[2].checked=false;
  324.         multi = 0;
  325.     }
  326.     else
  327.         multi = 1;
  328.     switch(multi){
  329.         case 0:
  330.             agregarMultivaluado(aCual, queCelda);
  331.             break;
  332.         case 1:
  333.             eliminarMultivaluado(aCual, queCelda);
  334.             break;
  335.     }
  336.    
  337. }
  338.  
  339. function eliminarAtributo(aCual, cualAt){
  340.     queTabla = document.getElementById(aCual);
  341.     var quitarCual = document.getElementById(cualAt);
  342.     if(quitarCual != 0){
  343.         queTabla.tBodies[0].rows[0].removeChild(quitarCual);           
  344.         if(queTabla.tBodies[0].rows[0].cells.length==0)
  345.             queTabla.tBodies[0].deleteRow(0);
  346.     }else
  347.         alert("No hay atributos que borrar");
  348.    
  349.     actualizarEntidadesLista()
  350. }
  351.  
  352. function crearRelaciona(){
  353.     zonaRelacional.innerHTML="";
  354.     var tablas = zonaEntidades.getElementsByTagName("table");
  355.     var nombre = echameLosNombres();
  356.     var i;
  357.     var j;
  358.     for (i=0; i<tablas.length; i++) {
  359.         var nomVal = nombre[i];
  360.         var attrs = echameLosAtributos(0,echameLosAydisDeEntidades()[i]);
  361.         var key = echameLosAtributos(2,echameLosAydisDeEntidades()[i]);
  362.         var mul = echameLosAtributos(1,echameLosAydisDeEntidades()[i]);
  363.         var nuevoEsquema = document.createElement("table");
  364.         nuevoEsquema.setAttribute('border','2');
  365.         var numero=Math.random();
  366.         nuevoEsquema.setAttribute('id', ''+numero+'');
  367.         var espacio = document.createElement("br");
  368.         espacio.setAttribute('name',''+numero+'');
  369.         var nuevoHead = document.createElement("thead");
  370.         var nuevoBody = document.createElement("tbody");
  371.         var nuevoPie = document.createElement("tfoot");
  372.         nuevoHead.insertRow(0);
  373.         nuevoHead.rows[0].insertCell(0);
  374.         nuevoHead.rows[0].cells[0].innerHTML = '<b>' + nomVal+'</b>';
  375.         nuevoBody.insertRow(0);
  376.         nuevoPie.insertRow(0);
  377.         for(j=0; j<attrs.length; j++){
  378.             nuevoBody.rows[0].insertCell(j);
  379.             if(mul[j]=="off"){
  380.             if(key[j]=="on"){
  381.                 nuevoBody.rows[0].cells[j].innerHTML = '<u>'+attrs[j]+'</u>';
  382.             } else
  383.             nuevoBody.rows[0].cells[j].innerHTML = attrs[j];
  384.             }
  385.             else{
  386.             nuevoBody.rows[0].cells[j].setAttribute('width', '0'); }
  387.             nuevoPie.rows[0].insertCell(j);
  388.         }
  389.         nuevoEsquema.appendChild(nuevoHead);   
  390.         nuevoEsquema.appendChild(nuevoBody);
  391.         nuevoEsquema.appendChild(nuevoPie);    
  392.         zonaRelacional.appendChild(nuevoEsquema);
  393.         zonaRelacional.appendChild(espacio);   
  394.     }
  395. }
  396.  
  397. function echameLosAtributos(queCosa, aCualV){
  398.         var queTablaV = document.getElementById(aCualV);
  399.         var tamV= queTablaV.tBodies[0].rows.length;
  400.         if(tamV != 0 )
  401.         {
  402.             tamV= queTablaV.tBodies[0].rows[0].cells.length;
  403.             //alert(tamV);
  404.             var Val= new Array(tamV);
  405.             var Mul = new Array(tamV);
  406.             var Llave= new Array(tamV);
  407.             for(i=0;i<tamV;i++)
  408.             {
  409.                 Val[i] = queTablaV.tBodies[0].rows[0].cells[i].getElementsByTagName("input")[0].value;
  410.                 if(queTablaV.tBodies[0].rows[0].cells[i].getElementsByTagName("input")[1].checked==true)
  411.                     Mul[i] = "on";
  412.                 else
  413.                     Mul[i]="off";
  414.                    
  415.                 if(queTablaV.tBodies[0].rows[0].cells[i].getElementsByTagName("input")[2].checked==true)
  416.                     Llave[i] = "on";
  417.                 else
  418.                     Llave[i] = "off";
  419.                 //alert(Val[i]+Mul[i]+Llave[i]);
  420.             }  
  421.             switch(queCosa) {
  422.             case 0:
  423.                 return Val;
  424.                 break;
  425.             case 1:
  426.                 return Mul;
  427.                 break;
  428.             case 2:
  429.                 return Llave;
  430.                 break;
  431.             }
  432.         }else
  433.         {
  434.             //alert("hay entidades sin atributos");
  435.             return 0;
  436.         }  
  437. }
  438.  
  439. function echameLosNombres()
  440. {
  441.     var numEntidades=zonaEntidades.getElementsByTagName("table").length;
  442.     var arregloNombres=new Array(numEntidades);
  443.     if(numEntidades==0)
  444.     {
  445.         alert("No hay entidades");
  446.     }
  447.     else
  448.     {
  449.         for(var i=0;i<numEntidades;i++)
  450.         {
  451.             var nombre=zonaEntidades.getElementsByTagName("table")[i].tHead.rows[0].cells[0].getElementsByTagName("input")[0].value;
  452.             if(nombre=="")
  453.                 {
  454.                     arregloNombres[i]="Entidad sin nombre";
  455.                 }
  456.             else{
  457.                 arregloNombres[i]=nombre;
  458.             }
  459.         }
  460.         return arregloNombres;
  461.     }
  462. }
  463.  
  464. function esDebil(aCual){
  465.     var tabla = document.getElementById(aCual);
  466.     if(tabla.tHead.rows[0].cells[0].getElementsByTagName("input")[1].checked==true)
  467.     {
  468.         document.getElementById(aCual).tHead.rows[0].cells[0].getElementsByTagName("input")[2].setAttribute('onclick','quitarRDebil('+aCual+');eliminar(0,'+ aCual + ')');
  469.         nuevoDebil(aCual);     
  470.         actualizarEntidadesLista();
  471.     }
  472.     else
  473.         quitarRDebil(aCual);
  474. }
  475. function agregarER()  {
  476.     var entidades = zonaEntidades.getElementsByTagName("table").length;
  477.     var relaciones = zonaRelaciones.getElementsByTagName("table").length;
  478.     var botonesAnadir = document.getElementsByTagName("form")[0].cual;
  479.     var anadirCual=-1;
  480.     for (var i=0; i<botonesAnadir.length; i++) {
  481.         if (botonesAnadir[i].checked) {
  482.             anadirCual = i;
  483.         }
  484.     }
  485.    
  486.     switch(anadirCual) {
  487.         case 0:
  488.             anadir(0);
  489.             //actualizarEntidadesLista()
  490.             break;
  491.         case 1:
  492.             if (entidades > 0) {
  493.                 anadir(1);
  494.                 actualizarEntidadesLista()
  495.                 break;
  496.             }
  497.         default:
  498.             alert("No ha elegido una acción válida");
  499.     }
  500.    
  501.     crearRelaciona();
  502.     return false;
  503. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement