Advertisement
Guest User

Untitled

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