Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- window.onload = initAll;
- var zonaEntidades;
- var zonaRelaciones;
- var zonaRelacional;
- var zonaMultivaluados;
- function anadir(tipo){
- var nuevaEntidad = document.createElement("table");
- nuevaEntidad.setAttribute('border', '2');
- var numero=Math.random();
- nuevaEntidad.setAttribute('id', ''+numero+'');
- var espacio = document.createElement("br");
- espacio.setAttribute('name',''+numero+'');
- var nuevoHead = document.createElement("thead");
- var nuevoBody = document.createElement("tbody");
- var nuevoPie = document.createElement("tfoot");
- if(tipo==0){
- nuevoHead.insertRow(0);
- nuevoHead.rows[0].insertCell(0);
- 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 + ')">'
- nuevoPie.insertRow(0);
- nuevoPie.rows[0].insertCell(0);
- nuevoPie.rows[0].cells[0].innerHTML = '<input type="button" value="agregarAtributo" onblur="actualizarEntidadesLista()" onclick="agregarAtributo(0,'+ numero + ')">'
- }else{
- nuevoHead.insertRow(0);
- nuevoHead.rows[0].insertCell(0);
- nuevoHead.rows[0].cells[0].innerHTML = 'Entidad: <select name="entidadesLista"></select>'
- nuevoHead.rows[0].insertCell(1);
- nuevoHead.rows[0].cells[1].innerHTML = 'Cardinalidad: <select><option>1</option><option>N</option></select>'
- nuevoHead.rows[0].insertCell(2);
- nuevoHead.rows[0].cells[2].innerHTML = 'Relacion: <input type"text" onchange="crearRelaciona()">'
- nuevoHead.rows[0].insertCell(3);
- nuevoHead.rows[0].cells[3].innerHTML = 'Cardinalidad: <select><option>1</option><option>N</option></select>'
- nuevoHead.rows[0].insertCell(4);
- nuevoHead.rows[0].cells[4].innerHTML = 'Entidad: <select name="entidadesLista"></select>'
- nuevoPie.insertRow(0);
- nuevoPie.rows[0].insertCell(0);
- 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 + ')">'
- }
- nuevaEntidad.appendChild(nuevoHead);
- nuevaEntidad.appendChild(nuevoBody);
- nuevaEntidad.appendChild(nuevoPie);
- if(tipo==0){
- zonaEntidades.appendChild(nuevaEntidad);
- zonaEntidades.appendChild(espacio);
- }else{
- zonaRelaciones.appendChild(nuevaEntidad);
- zonaRelaciones.appendChild(espacio);
- }
- }
- function nuevoDebil(id)
- {
- var nuevaEntidadD = document.createElement("table");
- nuevaEntidadD.setAttribute('border', '2');
- var id2=id+1;
- nuevaEntidadD.setAttribute('id', ''+id2+'');
- var espacio = document.createElement("br");
- espacio.setAttribute('name',''+id2+'');
- var nom=document.getElementById(id).tHead.rows[0].cells[0].getElementsByTagName("input")[0].value;
- var nuevoHead = document.createElement("thead");
- var nuevoBody = document.createElement("tbody");
- var nuevoPie = document.createElement("tfoot");
- nuevoHead.insertRow(0);
- nuevoHead.rows[0].insertCell(0);
- nuevoHead.rows[0].cells[0].innerHTML = 'Entidad: <select name="debil"><option>'+nom+'</option></select>'
- nuevoHead.rows[0].insertCell(1);
- nuevoHead.rows[0].cells[1].innerHTML = 'Cardinalidad: <select><option>1</option><option>N</option></select>'
- nuevoHead.rows[0].insertCell(2);
- nuevoHead.rows[0].cells[2].innerHTML = 'Relacion: <input type"text" value="Pertenece a" onchange="crearRelaciona()" disabled=true>'
- nuevoHead.rows[0].insertCell(3);
- nuevoHead.rows[0].cells[3].innerHTML = 'Cardinalidad: <select><option>1</option><option>N</option></select>'
- nuevoHead.rows[0].insertCell(4);
- nuevoHead.rows[0].cells[4].innerHTML = 'Entidad: <select name="entidadesLista"></select>'
- nuevoPie.insertRow(0);
- nuevoPie.rows[0].insertCell(0);
- nuevoPie.rows[0].cells[0].innerHTML = '<input type="button" value="agregarAtributo" onClick="agregarAtributo(1,'+ id2 + ')">';
- nuevaEntidadD.appendChild(nuevoHead);
- nuevaEntidadD.appendChild(nuevoBody);
- nuevaEntidadD.appendChild(nuevoPie);
- zonaRelaciones.appendChild(nuevaEntidadD);
- zonaRelaciones.appendChild(espacio);
- actualizarEntidadesLista();
- }
- function actualizaDebil(id)
- {
- var id2=id;
- var id3=id2-1;
- document.getElementById(id2).tHead.getElementsByTagName("select")[0].options[0].text=document.getElementById(id3).tHead.rows[0].cells[0].getElementsByTagName("input")[0].value;
- //alert(d.length);
- if(zonaRelaciones.getElementsByTagName("table").length!=0){
- var listas = document.getElementsByName("debil");
- var atributosLlave = new Array();
- var atributos = new Array();
- atributosLlave = echameLosAtributos(2,id3);
- atributos = echameLosAtributos(0,id3);
- if(atributosLlave!=0 && atributos!=0){
- for(var i=0;i<listas.length;i++)
- {
- if(listas[i].options[0].text==document.getElementById(id3).tHead.rows[0].cells[0].getElementsByTagName("input")[0].value)
- {
- listas[i].options[0].value="";
- for(var k=0; k<atributosLlave.length; k++)
- if(atributosLlave[k]=="on")
- if(listas[i].options[0].value!="")
- listas[i].options[0].value += ","+atributos[k];
- else
- listas[i].options[0].value += atributos[k];
- }
- }
- }
- else
- {
- if(atributosLlave==0)
- alert("No hay atributo llave en "+document.getElementById(id3).tHead.rows[0].cells[0].getElementsByTagName("input")[0].value);
- else
- alert("No hay atributos en "+document.getElementById(id3).tHead.rows[0].cells[0].getElementsByTagName("input")[0].value);
- }
- }
- }
- function quitarRDebil(id)
- {
- var relaciones=zonaRelaciones.getElementsByTagName("table");
- var nombre=document.getElementById(id).tHead.rows[0].cells[0].getElementsByTagName("input")[0].value;
- if(relaciones.length!=0)
- {
- for(var i=0;i<relaciones.length;i++)
- {
- var fila=relaciones[i].tHead.rows[0];
- if(fila.cells[0].getElementsByTagName("select")[0].name=="debil" && fila.cells[0].getElementsByTagName("select")[0].getElementsByTagName("option")[0].text==nombre)
- {
- eliminar(1,relaciones[i].id);
- }
- }
- }
- }
- function actualizarEntidadesLista(){
- if(zonaRelaciones.getElementsByTagName("table").length!=0){
- var listas = document.getElementsByName("entidadesLista");
- var entidadesNombres = echameLosNombres();
- for(var i=0; i<listas.length; i++)
- listas[i].options.length =0;
- var entidadesIds = echameLosAydisDeEntidades();
- var atributosLlave = new Array(entidadesIds.length);
- var atributos = new Array(entidadesIds.length);
- for(var j=0; j<entidadesNombres.length; j++){
- if(document.getElementById(entidadesIds[j]).tHead.rows[0].cells[0].getElementsByTagName("input")[1].checked==true)
- {
- var h=entidadesIds[j];
- h++;
- actualizaDebil(h);
- }
- atributosLlave = echameLosAtributos(2,entidadesIds[j]);
- atributos = echameLosAtributos(0,entidadesIds[j]);
- if(atributosLlave!=0 && atributos!=0){
- for(i=0; i<listas.length; i++)
- {
- listas[i].options[j] = new Option(""+entidadesNombres[j]);
- listas[i].options[j].value=entidadesIds[j];
- listas[i].options[j].value="";
- for(var k=0; k<atributosLlave.length; k++)
- if(atributosLlave[k]=="on")
- if(listas[i].options[j].value!="")
- listas[i].options[j].value += ","+atributos[k];
- else
- listas[i].options[j].value += atributos[k];
- //alert(listas[i].value);
- }
- }
- else
- {
- if(atributosLlave==0)
- alert("No hay atributo llave en "+entidadesNombres[j]);
- else
- alert("No hay atributos en "+entidadesNombres[j]);
- }
- }
- }
- }
- function initAll() {
- document.getElementsByTagName("form")[0].onsubmit = function() {return agregarER();}
- zonaEntidades = document.getElementById("entidades");
- zonaRelaciones = document.getElementById("relaciones");
- zonaRelacional = document.getElementById("relacional");
- zonaMultivaluados = document.getElementById("multivaluados");
- }
- function eliminar(tipo, cual) {
- var cualBorrar = document.getElementById(cual);
- if(tipo==0){
- zonaEntidades.removeChild(cualBorrar);
- var cualBorrar = document.getElementsByName(cual);
- zonaEntidades.removeChild(cualBorrar[0]);
- }
- else{
- zonaRelaciones.removeChild(cualBorrar);
- var cualBorrar = document.getElementsByName(cual);
- zonaRelaciones.removeChild(cualBorrar[0]);
- }
- actualizarEntidadesLista()
- crearRelaciona();
- }
- function echameLosAydisDeEntidades()
- {
- var numEntidades=zonaEntidades.getElementsByTagName("table").length;
- var arregloId=new Array(numEntidades);
- if(numEntidades==0)
- {
- alert("No hay entidades");
- }
- else
- {
- for(var i=0;i<numEntidades;i++)
- {
- var id=zonaEntidades.getElementsByTagName("table")[i].id;
- if(id=="")
- {
- arregloId[i]="Entidad sin id";
- }
- else{
- arregloId[i]=id;
- }
- }
- return arregloId;
- }
- }
- function agregarAtributo(tipo, aCual){
- numero = Math.random();
- queTabla = document.getElementById(aCual);
- queFila = queTabla.tBodies[0].rows.length;
- if(queFila==0){
- queTabla.tBodies[0].insertRow(queFila);
- queColumna=0;
- }else
- queColumna = queTabla.tBodies[0].rows[0].cells.length
- queTabla.tBodies[0].rows[0].insertCell(queColumna);
- queTabla.tBodies[0].rows[0].cells[queColumna].setAttribute('id', ''+numero+'');
- if(tipo==0){
- 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()">'
- }else
- 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()">'
- actualizarEntidadesLista()
- }
- function agregarMultivaluado(aCual, queCelda){
- var numero=Math.random();
- var queTabla = document.getElementById(aCual);
- var celda = document.getElementById(queCelda);
- // queTabla.tBodies[0].rows[0].cells[i].getElementsByTagName("input")[0].value;
- var nuevoEsquema = document.createElement("table");
- nuevoEsquema.setAttribute('border', '2');
- nuevoEsquema.setAttribute('id', ''+numero+'');
- nuevoEsquema.setAttribute('name',''+aCual+'');
- var espacio = document.createElement("br");
- espacio.setAttribute('name',''+numero+'');
- var nuevoHead = document.createElement("thead");
- var nuevoBody = document.createElement("tbody");
- var nuevoPie = document.createElement("tfoot");
- nuevoHead.insertRow(0);
- nuevoHead.rows[0].insertCell(0);
- 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;
- nuevoBody.insertRow(0);
- nuevoBody.rows[0].insertCell(0);
- nuevoBody.rows[0].cells[0].innerHTML = queCelda.getElementsByTagName("input")[0].value;
- nuevoBody.rows[1].insertCell(0);
- nuevoBody.rows[1].cells[0].innerHTML = "Valores";
- nuevoEsquema.appendChild(nuevoHead);
- nuevoEsquema.appendChild(nuevoBody);
- nuevoEsquema.appendChild(nuevoPie);
- if(tipo==0){
- zonaEntidades.appendChild(nuevoEsquema);
- zonaEntidades.appendChild(espacio);
- }else{
- zonaRelaciones.appendChild(nuevoEsquema);
- zonaRelaciones.appendChild(espacio);
- }
- }
- function eliminarMultivaluado(aCual, queCelda){
- }
- function esLlave(aCual, queCelda){
- var tabla = document.getElementById(aCual);
- var llave;
- if(tabla.tBodies[0].rows[0].cells[queCelda].getElementsByTagName("input")[2].checked==true)
- tabla.tBodies[0].rows[0].cells[queCelda].getElementsByTagName("input")[1].checked=false;
- }
- function esMulti(aCual, queCelda){
- var tabla = document.getElementById(aCual);
- var multi;
- if(tabla.tBodies[0].rows[0].cells[queCelda].getElementsByTagName("input")[1].checked==true){
- tabla.tBodies[0].rows[0].cells[queCelda].getElementsByTagName("input")[2].checked=false;
- multi = 0;
- }
- else
- multi = 1;
- switch(multi){
- case 0:
- agregarMultivaluado(aCual, queCelda);
- break;
- case 1:
- eliminarMultivaluado(aCual, queCelda);
- break;
- }
- }
- function eliminarAtributo(aCual, cualAt){
- queTabla = document.getElementById(aCual);
- var quitarCual = document.getElementById(cualAt);
- if(quitarCual != 0){
- queTabla.tBodies[0].rows[0].removeChild(quitarCual);
- if(queTabla.tBodies[0].rows[0].cells.length==0)
- queTabla.tBodies[0].deleteRow(0);
- }else
- alert("No hay atributos que borrar");
- actualizarEntidadesLista()
- }
- function crearRelaciona(){
- zonaRelacional.innerHTML="";
- var tablas = zonaEntidades.getElementsByTagName("table");
- var nombre = echameLosNombres();
- var i;
- var j;
- for (i=0; i<tablas.length; i++) {
- var nomVal = nombre[i];
- var attrs = echameLosAtributos(0,echameLosAydisDeEntidades()[i]);
- var key = echameLosAtributos(2,echameLosAydisDeEntidades()[i]);
- var mul = echameLosAtributos(1,echameLosAydisDeEntidades()[i]);
- var nuevoEsquema = document.createElement("table");
- nuevoEsquema.setAttribute('border','2');
- var numero=Math.random();
- nuevoEsquema.setAttribute('id', ''+numero+'');
- var espacio = document.createElement("br");
- espacio.setAttribute('name',''+numero+'');
- var nuevoHead = document.createElement("thead");
- var nuevoBody = document.createElement("tbody");
- var nuevoPie = document.createElement("tfoot");
- nuevoHead.insertRow(0);
- nuevoHead.rows[0].insertCell(0);
- nuevoHead.rows[0].cells[0].innerHTML = '<b>' + nomVal+'</b>';
- nuevoBody.insertRow(0);
- nuevoPie.insertRow(0);
- for(j=0; j<attrs.length; j++){
- nuevoBody.rows[0].insertCell(j);
- if(mul[j]=="off"){
- if(key[j]=="on"){
- nuevoBody.rows[0].cells[j].innerHTML = '<u>'+attrs[j]+'</u>';
- } else
- nuevoBody.rows[0].cells[j].innerHTML = attrs[j];
- }
- else{
- nuevoBody.rows[0].cells[j].setAttribute('width', '0'); }
- nuevoPie.rows[0].insertCell(j);
- }
- nuevoEsquema.appendChild(nuevoHead);
- nuevoEsquema.appendChild(nuevoBody);
- nuevoEsquema.appendChild(nuevoPie);
- zonaRelacional.appendChild(nuevoEsquema);
- zonaRelacional.appendChild(espacio);
- }
- }
- function echameLosAtributos(queCosa, aCualV){
- var queTablaV = document.getElementById(aCualV);
- var tamV= queTablaV.tBodies[0].rows.length;
- if(tamV != 0 )
- {
- tamV= queTablaV.tBodies[0].rows[0].cells.length;
- //alert(tamV);
- var Val= new Array(tamV);
- var Mul = new Array(tamV);
- var Llave= new Array(tamV);
- for(i=0;i<tamV;i++)
- {
- Val[i] = queTablaV.tBodies[0].rows[0].cells[i].getElementsByTagName("input")[0].value;
- if(queTablaV.tBodies[0].rows[0].cells[i].getElementsByTagName("input")[1].checked==true)
- Mul[i] = "on";
- else
- Mul[i]="off";
- if(queTablaV.tBodies[0].rows[0].cells[i].getElementsByTagName("input")[2].checked==true)
- Llave[i] = "on";
- else
- Llave[i] = "off";
- //alert(Val[i]+Mul[i]+Llave[i]);
- }
- switch(queCosa) {
- case 0:
- return Val;
- break;
- case 1:
- return Mul;
- break;
- case 2:
- return Llave;
- break;
- }
- }else
- {
- //alert("hay entidades sin atributos");
- return 0;
- }
- }
- function echameLosNombres()
- {
- var numEntidades=zonaEntidades.getElementsByTagName("table").length;
- var arregloNombres=new Array(numEntidades);
- if(numEntidades==0)
- {
- alert("No hay entidades");
- }
- else
- {
- for(var i=0;i<numEntidades;i++)
- {
- var nombre=zonaEntidades.getElementsByTagName("table")[i].tHead.rows[0].cells[0].getElementsByTagName("input")[0].value;
- if(nombre=="")
- {
- arregloNombres[i]="Entidad sin nombre";
- }
- else{
- arregloNombres[i]=nombre;
- }
- }
- return arregloNombres;
- }
- }
- function esDebil(aCual){
- var tabla = document.getElementById(aCual);
- if(tabla.tHead.rows[0].cells[0].getElementsByTagName("input")[1].checked==true)
- {
- document.getElementById(aCual).tHead.rows[0].cells[0].getElementsByTagName("input")[2].setAttribute('onclick','quitarRDebil('+aCual+');eliminar(0,'+ aCual + ')');
- nuevoDebil(aCual);
- actualizarEntidadesLista();
- }
- else
- quitarRDebil(aCual);
- }
- function agregarER() {
- var entidades = zonaEntidades.getElementsByTagName("table").length;
- var relaciones = zonaRelaciones.getElementsByTagName("table").length;
- var botonesAnadir = document.getElementsByTagName("form")[0].cual;
- var anadirCual=-1;
- for (var i=0; i<botonesAnadir.length; i++) {
- if (botonesAnadir[i].checked) {
- anadirCual = i;
- }
- }
- switch(anadirCual) {
- case 0:
- anadir(0);
- //actualizarEntidadesLista()
- break;
- case 1:
- if (entidades > 0) {
- anadir(1);
- actualizarEntidadesLista()
- break;
- }
- default:
- alert("No ha elegido una acción válida");
- }
- crearRelaciona();
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement