Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
73
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" onchange="crearRelaciona()" 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 nuevoDebil(id)
  199. {
  200.     var nuevaEntidadD = document.createElement("table");
  201.     nuevaEntidadD.setAttribute('border', '2');
  202.     var numero=Math.random();
  203.     nuevaEntidadD.setAttribute('id', ''+numero+'');
  204.     var espacio = document.createElement("br");
  205.     espacio.setAttribute('name',''+numero+'');
  206.     var nom=document.getElementById(id).tHead.rows[0].cells[0].getElementsByTagName("input")[0].value;
  207.     var nuevoHead = document.createElement("thead");
  208.     var nuevoBody = document.createElement("tbody");
  209.     var nuevoPie = document.createElement("tfoot");
  210.    
  211.     nuevoHead.insertRow(0);
  212.     nuevoHead.rows[0].insertCell(0);
  213.     nuevoHead.rows[0].cells[0].innerHTML = 'Entidad: <select name="debil"><option>'+nom+'</option></select>'
  214.     nuevoHead.rows[0].insertCell(1);
  215.     nuevoHead.rows[0].cells[1].innerHTML = 'Cardinalidad: <select><option>1</option><option>N</option></select>'
  216.     nuevoHead.rows[0].insertCell(2);
  217.     nuevoHead.rows[0].cells[2].innerHTML = 'Relacion: <input type"text" value="Pertenece a" onchange="crearRelaciona()" disabled=true>'
  218.     nuevoHead.rows[0].insertCell(3);
  219.     nuevoHead.rows[0].cells[3].innerHTML = 'Cardinalidad: <select><option>1</option><option>N</option></select>'
  220.     nuevoHead.rows[0].insertCell(4);
  221.     nuevoHead.rows[0].cells[4].innerHTML = 'Entidad: <select name="entidadesLista"></select>'  
  222.     nuevoPie.insertRow(0);
  223.     nuevoPie.rows[0].insertCell(0);
  224.     nuevoPie.rows[0].cells[0].innerHTML = '<input type="button" value="agregarAtributo" onclick="agregarAtributo(1,'+ numero + ')">'
  225.     nuevaEntidadD.appendChild(nuevoHead);  
  226.     nuevaEntidadD.appendChild(nuevoBody);
  227.     nuevaEntidadD.appendChild(nuevoPie);
  228.     zonaRelaciones.appendChild(nuevaEntidadD);
  229.     zonaRelaciones.appendChild(espacio);
  230.     actualizarEntidadesLista();
  231. }
  232. function actualizaDebil(id)
  233. {
  234.     if(zonaRelaciones.getElementsByTagName("table").length!=0){
  235.         var listas = document.getElementsByName("debil");
  236.         var atributosLlave = new Array();
  237.         var atributos = new Array();   
  238.         atributosLlave = echameLosAtributos(2,id);
  239.         atributos = echameLosAtributos(0,id);
  240.         if(atributosLlave!=0 && atributos!=0){
  241.             for(var i=0;i<listas.length;i++)
  242.             {
  243.                 if(listas[i].options[0].text==document.getElementById(id).tHead.rows[0].cells[0].getElementsByTagName("input")[0].value)
  244.                 {
  245.                     listas[i].options[0].value="";
  246.                     for(var k=0; k<atributosLlave.length; k++)
  247.                         if(atributosLlave[k]=="on")
  248.                         if(listas[i].options[0].value!="")
  249.                             listas[i].options[0].value += ","+atributos[k];
  250.                         else
  251.                             listas[i].options[0].value += atributos[k];
  252.                 }
  253.             }
  254.         }
  255.         else
  256.         {
  257.             if(atributosLlave==0)
  258.             alert("No hay atributo llave en "+document.getElementById(id).tHead.rows[0].cells[0].getElementsByTagName("input")[0].value);
  259.             else
  260.             alert("No hay atributos en "+entidadesNombres[j]);
  261.         }
  262.     }
  263. }
  264. function quitarRDebil(id)
  265. {
  266.     var relaciones=zonaRelaciones.getElementsByTagName("table");
  267.     var nombre=document.getElementById(id).tHead.rows[0].cells[0].getElementsByTagName("input")[0].value;
  268.     if(relaciones.length!=0)
  269.     {
  270.         for(var i=0;i<relaciones.length;i++)
  271.         {
  272.             var fila=relaciones[i].tHead.rows[0];
  273.             if(fila.cells[0].getElementsByTagName("select")[0].name=="debil" && fila.cells[0].getElementsByTagName("select")[0].getElementsByTagName("option")[0].text==nombre)
  274.             {
  275.                 eliminar(1,relaciones[i].id);
  276.             }
  277.         }
  278.    
  279.     }
  280. }
  281.  
  282.  
  283. function esDebil(aCual){
  284.     var tabla = document.getElementById(aCual);
  285.     if(tabla.tHead.rows[0].cells[0].getElementsByTagName("input")[1].checked==true)
  286.     {
  287.         nuevoDebil(aCual);
  288.         actualizaDebil(aCual);
  289.         document.getElementById(aCual).tHead.rows[0].cells[0].getElementsByTagName("input")[2].setAttribute('onClick','quitarRDebil('+aCual+');eliminar(0,'+ aCual + ')');
  290.     }
  291.     else
  292.         quitarRDebil(aCual);
  293. }
  294.  
  295.  
  296. function actualizarEntidadesLista(){
  297.     if(zonaRelaciones.getElementsByTagName("table").length!=0){
  298.         var listas = document.getElementsByName("entidadesLista");
  299.    
  300.         var entidadesNombres = echameLosNombres();
  301.         for(var i=0; i<listas.length; i++)
  302.                 listas[i].options.length =0;
  303.                
  304.         var entidadesIds = echameLosAydisDeEntidades();
  305.        
  306.        
  307.             var atributosLlave = new Array(entidadesIds.length);
  308.             var atributos = new Array(entidadesIds.length);
  309.             for(var j=0; j<entidadesNombres.length; j++){
  310.                 atributosLlave = echameLosAtributos(2,entidadesIds[j]);
  311.                 atributos = echameLosAtributos(0,entidadesIds[j]);
  312.                 if(atributosLlave!=0 && atributos!=0){
  313.                     for(i=0; i<listas.length; i++)
  314.                     {
  315.                         listas[i].options[j] = new Option(""+entidadesNombres[j]); 
  316.                         listas[i].options[j].value=entidadesIds[j];
  317.                         listas[i].options[j].value="";
  318.                         for(var k=0; k<atributosLlave.length; k++)
  319.                            
  320.                             if(atributosLlave[k]=="on")
  321.                             if(listas[i].options[j].value!="")
  322.                                 listas[i].options[j].value += ","+atributos[k];
  323.                             else
  324.                                 listas[i].options[j].value += atributos[k];
  325.                                 //alert(listas[i].value);
  326.                     }
  327.                 }
  328.                 else
  329.                 {
  330.                     if(atributosLlave==0)
  331.                     alert("No hay atributo llave en "+entidadesNombres[j]);
  332.                     else
  333.                     alert("No hay atributos en "+entidadesNombres[j]);
  334.                 }
  335.             }
  336.     }  
  337. }
  338. function eliminarAtributo(aCual, cualAt){
  339.     queTabla = document.getElementById(aCual);
  340.     var quitarCual = document.getElementById(cualAt);
  341.     if(quitarCual != 0){
  342.         queTabla.tBodies[0].rows[0].removeChild(quitarCual);           
  343.         if(queTabla.tBodies[0].rows[0].cells.length==0)
  344.             queTabla.tBodies[0].deleteRow(0);
  345.     }else
  346.         alert("No hay atributos que borrar");
  347.    
  348.     actualizarEntidadesLista()
  349. }
  350.  
  351. function crearRelaciona(){
  352.     zonaRelacional.innerHTML="";
  353.     var tablas = zonaEntidades.getElementsByTagName("table");
  354.     var nombre = echameLosNombres();
  355.     var i;
  356.     var j;
  357.     for (i=0; i<tablas.length; i++) {
  358.         var nomVal = nombre[i];
  359.         var attrs = echameLosAtributos(0,echameLosAydisDeEntidades()[i]);
  360.         var key = echameLosAtributos(2,echameLosAydisDeEntidades()[i]);
  361.         var mul = echameLosAtributos(1,echameLosAydisDeEntidades()[i]);
  362.         var nuevoEsquema = document.createElement("table");
  363.         nuevoEsquema.setAttribute('border','2');
  364.         var numero=Math.random();
  365.         nuevoEsquema.setAttribute('id', ''+numero+'');
  366.         var espacio = document.createElement("br");
  367.         espacio.setAttribute('name',''+numero+'');
  368.         var nuevoHead = document.createElement("thead");
  369.         var nuevoBody = document.createElement("tbody");
  370.         var nuevoPie = document.createElement("tfoot");
  371.         nuevoHead.insertRow(0);
  372.         nuevoHead.rows[0].insertCell(0);
  373.         nuevoHead.rows[0].cells[0].innerHTML = '<b>' + nomVal+'</b>';
  374.         nuevoBody.insertRow(0);
  375.         nuevoPie.insertRow(0);
  376.         for(j=0; j<attrs.length; j++){
  377.             nuevoBody.rows[0].insertCell(j);
  378.             if(mul[j]=="off"){
  379.             if(key[j]=="on"){
  380.                 nuevoBody.rows[0].cells[j].innerHTML = '<u>'+attrs[j]+'</u>';
  381.             } else
  382.             nuevoBody.rows[0].cells[j].innerHTML = attrs[j];
  383.             }
  384.             else{
  385.             nuevoBody.rows[0].cells[j].setAttribute('width', '0'); }
  386.             nuevoPie.rows[0].insertCell(j);
  387.         }
  388.         nuevoEsquema.appendChild(nuevoHead);   
  389.         nuevoEsquema.appendChild(nuevoBody);
  390.         nuevoEsquema.appendChild(nuevoPie);    
  391.         zonaRelacional.appendChild(nuevoEsquema);
  392.         zonaRelacional.appendChild(espacio);   
  393.     }
  394. }
  395. function echameLosAtributos(queCosa, aCualV){
  396.         var queTablaV = document.getElementById(aCualV);
  397.         var tamV= queTablaV.tBodies[0].rows.length;
  398.         if(tamV != 0 )
  399.         {
  400.             tamV= queTablaV.tBodies[0].rows[0].cells.length;
  401.             //alert(tamV);
  402.             var Val= new Array(tamV);
  403.             var Mul = new Array(tamV);
  404.             var Llave= new Array(tamV);
  405.             for(i=0;i<tamV;i++)
  406.             {
  407.                 Val[i] = queTablaV.tBodies[0].rows[0].cells[i].getElementsByTagName("input")[0].value;
  408.                 if(queTablaV.tBodies[0].rows[0].cells[i].getElementsByTagName("input")[1].checked==true)
  409.                     Mul[i] = "on";
  410.                 else
  411.                     Mul[i]="off";
  412.                    
  413.                 if(queTablaV.tBodies[0].rows[0].cells[i].getElementsByTagName("input")[2].checked==true)
  414.                     Llave[i] = "on";
  415.                 else
  416.                     Llave[i] = "off";
  417.                 //alert(Val[i]+Mul[i]+Llave[i]);
  418.             }  
  419.             switch(queCosa) {
  420.             case 0:
  421.                 return Val;
  422.                 break;
  423.             case 1:
  424.                 return Mul;
  425.                 break;
  426.             case 2:
  427.                 return Llave;
  428.                 break;
  429.             }
  430.         }else
  431.         {
  432.             //alert("hay entidades sin atributos");
  433.             return 0;
  434.         }  
  435. }
  436.  
  437. function echameLosNombres()
  438. {
  439.     var numEntidades=zonaEntidades.getElementsByTagName("table").length;
  440.     var arregloNombres=new Array(numEntidades);
  441.     if(numEntidades==0)
  442.     {
  443.         alert("No hay entidades");
  444.     }
  445.     else
  446.     {
  447.         for(var i=0;i<numEntidades;i++)
  448.         {
  449.             var nombre=zonaEntidades.getElementsByTagName("table")[i].tHead.rows[0].cells[0].getElementsByTagName("input")[0].value;
  450.             if(nombre=="")
  451.                 {
  452.                     arregloNombres[i]="Entidad sin nombre";
  453.                 }
  454.             else{
  455.                 arregloNombres[i]=nombre;
  456.             }
  457.         }
  458.         return arregloNombres;
  459.     }
  460. }
  461.  
  462. function agregarER()  {
  463.     var entidades = zonaEntidades.getElementsByTagName("table").length;
  464.     var relaciones = zonaRelaciones.getElementsByTagName("table").length;
  465.     var botonesAnadir = document.getElementsByTagName("form")[0].cual;
  466.     var anadirCual=-1;
  467.     for (var i=0; i<botonesAnadir.length; i++) {
  468.         if (botonesAnadir[i].checked) {
  469.             anadirCual = i;
  470.         }
  471.     }
  472.    
  473.     switch(anadirCual) {
  474.         case 0:
  475.             anadir(0);
  476.             //actualizarEntidadesLista()
  477.             break;
  478.         case 1:
  479.             if (entidades > 0) {
  480.                 anadir(1);
  481.                 actualizarEntidadesLista()
  482.                 break;
  483.             }
  484.         default:
  485.             alert("No ha elegido una acción válida");
  486.     }
  487.    
  488.     crearRelaciona();
  489.     return false;
  490. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement