Skip to content

Commit da7ef86

Browse files
authored
Merge pull request #3 from Federico-G/fede
V 1.0
2 parents 880f104 + 9942389 commit da7ef86

35 files changed

+11671
-353
lines changed

README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
Debuggear es una aplicación para ayudar a aquellas personas que estan entrando en el espectacular mundo de la programación y la algoritmia. Esta aplicación permite capturar un algoritmo generado a mano, interpretarlo, y permitir ejecutarlo paso a paso
44

55

6-
{acerca de}
7-
6+
## ¿Quiénes somos?
7+
Somos un equipo compuesto por cuatro estudiantes de ingeniería en informática. Debuggear nació como nuestro proyecto final de carrera
88

99

1010

@@ -33,4 +33,4 @@ Aunque la aplicación se pensó para soportar varios lenguajes, por ahora sólo
3333
## Próximos pasos
3434
- Mejorar forma de compartir (Ya que reconocer extensiones de archivos para la aplicación como PWA esta ["demorado"](https://github.com/w3c/manifest/issues/626)
3535
- Migrar a Bootstrap v5 y quitar Jquery
36-
- Agregar Arreglos
36+
- Mejorar cosas de TODO

TODO.md

+1-7
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,6 @@
22

33
## Current
44

5-
### Contenido
6-
- Usar el espacio de carga para mostrar datos curiosos (estatico, porque freezea js el procesamiento (la carga no))
7-
- Agregar contenido a informacion (nosotros) y a ayuda (en lo posible contenido multimedia)
8-
- Link a screen diagrama en screen info de alguna manera
9-
- Meta: description
10-
- Intentar nuevamente con Google Ads una vez finalizadas las tareas anteriores de **contenido** (https://www.google.com/adsense/)
11-
125
### Bugs
136
- AWAIT
147
- [low] Versión visible en barra en mobile
@@ -19,6 +12,7 @@
1912
- pushState para tomar atrás y adelante del history
2013

2114
## Request features
15+
- Más importancia a la tabla de simbolos: posibilidad de mantenerla siempre abierta, mostrar cambios que afectan a la misma en los paso a paso
2216
- Archivos
2317
- Vectores y matrices
2418
- Guardar online para compartir (ya que pwa no soporta abrir cierto tipo de extensiones aun)

package-lock.json

-51
This file was deleted.

public/css/main.css

+20-2
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ footer {
5050
text-align: center;
5151
}
5252

53-
footer > * {
53+
footer button,
54+
footer a {
5455
flex: 1;
5556
color: #FFF;
5657
text-decoration: none;
@@ -61,7 +62,7 @@ footer > * {
6162
padding-bottom: 8px;
6263
}
6364

64-
footer > .disabled, footer > :disabled {
65+
footer .disabled, footer :disabled {
6566
color: #777;
6667
}
6768

@@ -260,3 +261,20 @@ footer a:hover {
260261
/*background-color: rgba(255, 255, 255, 0.9375);*/
261262
background: #FAFAFA;
262263
}
264+
265+
266+
267+
268+
269+
270+
271+
/* ----- SQL ----- */
272+
#formGenerador {
273+
font-size: 20px;
274+
}
275+
276+
/* Jquery UI */
277+
.ui-sortable-handle {
278+
-ms-touch-action: none;
279+
touch-action: none
280+
}

public/group1-shard1of5.bin

5.56 KB
Binary file not shown.

public/group1-shard2of5.bin

5.56 KB
Binary file not shown.

public/group1-shard3of5.bin

5.56 KB
Binary file not shown.

public/group1-shard4of5.bin

5.56 KB
Binary file not shown.

public/group1-shard5of5.bin

621 KB
Binary file not shown.

public/image/algo1.jpg

17.1 KB
Loading

public/image/algo2.jpg

14.4 KB
Loading

public/image/der1.jpg

15.7 KB
Loading

public/image/der2.jpg

12.7 KB
Loading

public/image/diego.jpg

5.7 KB
Loading

public/image/fede.jpg

9.54 KB
Loading

public/image/flor.jpg

7.47 KB
Loading

public/image/lu.jpg

7.93 KB
Loading

public/index.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<link rel='shortcut icon' href='favicon.ico' />
88
<title>Debuggear web</title>
99
<meta name="title" content="Debuggear web">
10-
<meta name="description" content="Description">
10+
<meta name="description" content="Debuggear es una aplicación para ayudar a aquellas personas que estan entrando en el espectacular mundo de la programación y la algoritmia. Esta aplicación permite capturar un algoritmo generado a mano, interpretarlo, y permitir ejecutarlo paso a paso">
1111

1212
<link rel="manifest" href="/manifest.json" />
1313

@@ -26,7 +26,7 @@
2626
<meta property="og:type" content="website">
2727
<meta property="og:url" content="https://debuggear-web.web.app/">
2828
<meta property="og:title" content="Debuggear web">
29-
<meta property="og:description" content="Description">
29+
<meta property="og:description" content="Debuggear es una aplicación para ayudar a aquellas personas que estan entrando en el espectacular mundo de la programación y la algoritmia. Esta aplicación permite capturar un algoritmo generado a mano, interpretarlo, y permitir ejecutarlo paso a paso">
3030
<meta property="og:image" content="https://debuggear-web.web.app/android-chrome-512x512.png">
3131

3232
<!-- vendor -->

public/js/code/Node.js

+7-1
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,13 @@ dg.code.Node.prototype.run = async function(symbolTable, console) {
191191
case 'in':
192192
var expr = this.expression.split(" ");
193193
var name = expr.pop();
194-
var type = expr.join(" ");
194+
var type;
195+
if (symbolTable.table[name]) {
196+
type = symbolTable.table[name].type;
197+
} else {
198+
type = expr.join(" ");
199+
}
200+
195201
var data = prompt("Ingrese un valor de tipo " + type + " para: " + name);
196202
symbolTable.addSymbol(name, new dg.code.Symbol(type, data));
197203
break;

public/js/language/c/solver.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ dg.language.solve = function(type, expression, symbolTable) {
3737
}
3838
}
3939
} catch (e) {
40-
40+
4141
}
4242
code = expression + ";\n";
4343
} else if (type == 'expression') {
@@ -95,4 +95,4 @@ dg.language.solve = function(type, expression, symbolTable) {
9595
});
9696
});
9797
})
98-
}
98+
}

public/js/language/c/to-code.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ dg.language.CodeToLanguage = function(elements, functions) {
5252
if (content[0] === "\"") {
5353
aux_content = content.replaceAll("%", "%%");
5454
retornar += aux_content.substring(1, aux_content.length - 1);
55-
} else if(/^[a-zA-Z_]$/.test(content[0])) {
55+
} else if (/^[a-zA-Z_]$/.test(content[0])) {
5656
name = content;
5757
type = variables[name];
5858
retornar += dg.language.typeToFormat(type);
@@ -153,9 +153,9 @@ dg.language.CodeToLanguage = function(elements, functions) {
153153
code.push("#include <string.h>");
154154
code.push("#include <stdlib.h>");
155155
code.push("");
156-
156+
157157
var functions = JSON.parse(localStorage.getItem("functions"));
158-
for(var i in functions) {
158+
for (var i in functions) {
159159
code.push(functions[i].language);
160160
code.push("");
161161
}

public/js/main.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,21 @@ window.dg = {
1616
},
1717
set scale(x) {
1818
this._scale = x;
19-
document.getElementById("shape-container").style.transform = "scale(" + x + ")";
19+
var shapeContainer = document.getElementById("shape-container");
20+
if (shapeContainer) {
21+
shapeContainer.style.transform = "scale(" + x + ")";
22+
}
2023
},
2124
get scale() {
2225
return this._scale;
2326
}
2427
},
2528
code: {},
29+
sql: {},
2630
language: {}
2731
};
2832

29-
dg.config.fontSize = 50;
33+
dg.config.fontSize = 40;
3034

3135

3236
if ('serviceWorker' in navigator) {

public/js/menu.js

+78-19
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ dg.menu = {
6565
maxWidth: 1200,
6666
maxHeight: 1200,
6767
quality: 0.8,
68-
convertSize: 500000,
68+
convertSize: 1,
6969
success(result) {
7070
var fr = new FileReader();
7171
fr.onload = function() {
@@ -109,7 +109,7 @@ dg.menu = {
109109
maxWidth: 1200,
110110
maxHeight: 1200,
111111
quality: 0.8,
112-
convertSize: 500000,
112+
convertSize: 1,
113113
success(result) {
114114
var fr = new FileReader();
115115
fr.onload = function() {
@@ -179,7 +179,7 @@ dg.menu = {
179179
dg.step.generateCode();
180180
}
181181
}
182-
}, 0);
182+
}, 0);
183183
}
184184
});
185185

@@ -280,7 +280,7 @@ dg.menu = {
280280
"<div>" + dg.code.pg.currentConsole.getHTML() + "</div>";
281281
document.getElementById("console-container").firstChild.scrollIntoView(false);
282282
document.getElementById("footer_exe_prev").disabled = false;
283-
}, 2000);
283+
}, 1500);
284284

285285
});
286286

@@ -291,7 +291,7 @@ dg.menu = {
291291
var button = document.createElement('button');
292292
button.type = 'button';
293293
button.id = 'footer_exe_prev';
294-
button.innerHTML = "<i class='fa fa-step-backward'></i><br><span>Anteior</span>";
294+
button.innerHTML = "<i class='fa fa-step-backward'></i><br><span>Anterior</span>";
295295
button.addEventListener('click', function() {
296296
var node = dg.code.pg.prevStep();
297297
if (!node) {
@@ -383,26 +383,85 @@ dg.menu = {
383383
}
384384
},
385385

386-
/*
387-
generarConsole: function() {
388-
var divConsole = document.getElementById("console-container");
389-
// divConsole
390-
//
391-
},
392-
*/
393-
394-
395386
generarCrear: function() {
396387
document.getElementById('intro').innerHTML = '<h1>¡Nuevo!</h1><br>Elija una opción debajo para comenzar';
397388
},
398389

399-
400390
generarInfo: function() {
401-
document.getElementById('intro').innerHTML = '<h1>¡Holis!</h1><br>Proximamente aquí podrá encontrar información de los autores de la aplicación, y como poder contribuir para mejorarla';
391+
var html = "<h1 class='mb-3'>Información</h1>";
392+
393+
html += "<div style='font-size: 20px;'>";
394+
395+
html += "<p>Bienvenidos/as a Debuggear, una web para ayudarte en la resolución de ejercicios de diagramas de programación y bases de datos con una interfaz amigable, intuitiva y simple! </p>";
396+
html += "<p>Con Debuggear podrás validar, ejecutar y probar tus algoritmos y queries fácilmente paso a paso. Esto te permitirá aprender el funcionamiento de los algoritmos y sentencias fácilmente.</p>";
397+
html += "<p>La idea es poder brindar una alternativa interactiva para poder comprender aquellos conceptos que normalmente suelen ser complicados debido a su naturaleza abstracta.</p>";
398+
399+
html += "<h2 class='my-2'>¿Quiénes somos?</h2>";
400+
html += "<p>Somos un equipo compuesto por cuatro estudiantes de ingeniería en informática. Debuggear nació como nuestro proyecto final de carrera</p>";
401+
html += "<div class='row'>";
402+
html += "<div class='col-6 my-2'><img src='/image/fede.jpg' width='150' height='170' /><div>Federico Gasior</div></div>";
403+
html += "<div class='col-6 my-2'><img src='/image/flor.jpg' width='150' height='170' /><div>Florencia Kaucic</div></div>";
404+
html += "<div class='col-6 my-2'><img src='/image/lu.jpg' width='150' height='170' /><div>Lucia Corleto</div></div>";
405+
html += "<div class='col-6 my-2'><img src='/image/diego.jpg' width='150' height='170' /><div>Diego Porro</div></div>";
406+
html += "</div>";
407+
408+
html += "<p class='mt-3'>Para comenzar a escanear acceda a la sección <a href='#' onclick='dg.step.screenMain(); return false;'>Diagrama</a></p>"
409+
html += "</div>";
410+
411+
document.getElementById('intro').innerHTML = html;
402412
},
403413

404414
generarHelp: function() {
405-
document.getElementById('intro').innerHTML = '<h1>¡Holis!</h1><br>Proximamente aquí podrá encontrar información de como utilizar esta aplicación';
415+
var html = "<h1 class='mb-3'>Ayuda</h1>";
416+
417+
html += "<div style='font-size: 20px;'>";
418+
419+
html += "<h2 class='my-2'>¿Cómo funciona la web?</h2>";
420+
html += "<p>La web tiene dos módulos principales, uno para trabajar con diagramas de programación y otro para bases de datos.</p>";
421+
html += "<p>El módulo de diagramas permite sacar una foto de un diagrama realizado a mano, o bien seleccionar el archivo desde el dispositivo. Una vez seleccionado el diagrama, la web realiza un análisis del mismo identificando los elementos y el texto contenido en ellos, ambos editables manualmente. Luego se habilita un debug paso a paso del mismo en donde se visualizan los valores de cada variable hasta ver el resultado final del algoritmo. Por último, se puede descargar el código en lenguaje C para su ejecución.</p>";
422+
html += "<p>El módulo de bases de datos analiza un diagrama DER, reconoce tablas y atributos, crea las tablas y carga datos genéricos automáticamente. Luego permite subir una sentencia SQL y devuelve la tabla resultante junto con un interesante gráfico que da una ayuda visual para analizar las relaciones y filtros utilizados. También permite descargar las sentencias SQL de creación de las tablas, de carga de datos y almacenar los resultados de las sentencias para que puedan reutilizarse.</p>";
423+
424+
html += "<h2 class='my-2'>¿Qué tipo de diagramas puedo cargar?</h2>";
425+
html += "<p>Para algoritmos se pueden cargar los diagramas de programación de la materia elementos de programación. A continuación, algunos ejemplos:</p>";
426+
html += "<img src='/image/algo1.jpg' style='width: 100%; max-width: 300px;' /><br><br>";
427+
html += "<img src='/image/algo2.jpg' style='width: 100%; max-width: 300px;' /><br><br>";
428+
html += "<p>Para SQL deben subirse diagramas básicos DER con el formato: </p>";
429+
html += "<img src='/image/der1.jpg' style='width: 100%; max-width: 300px;' /><br><br>";
430+
html += "<img src='/image/der2.jpg' style='width: 100%; max-width: 300px;' /><br><br>";
431+
432+
html += "<h2 class='my-2'>¿Cómo puedo cargar mi diagrama?</h2>";
433+
html += "<p>Los diagramas, ya sean algoritmos o DER, pueden obtenerse tomando una foto o bien seleccionando un archivo en el dispositivo donde se esté ejecutando la web.</p>";
434+
html += "<p>Para ello, puedes tomar una foto seleccionando el botón “Capturar” o si quieres elegir una foto de tu galería, puedes seleccionar el botón “Seleccionar”.</p>";
435+
html += "<p>Si no tienes un diagrama previamente dibujado, puedes crear uno nuevo seleccionando el botón “Crear vacío”. Allí se te abrirá un lienzo en blanco sobre el que podrás agregar figuras en orden secuencial utilizando el botón “+” que encontrarás en la esquina inferior derecha de la pantalla. Luego solo tienes que acomodar las figuras y escribir las operaciones en su interior.</p>";
436+
437+
html += "<h2 class='my-2'>¿Puedo guardar diagramas ya analizados?</h2>";
438+
html += "<p>Sí, la web permite descargar los diagramas que se van utilizando para luego poder reutilizarlos sin necesidad de volver a escanearlos y editarlos manualmente cuando fuera necesario.</p>";
439+
html += "<p>El botón de descarga de diagramas es: <i class='fa fa-download'></i> Exportar Diagrama</p>";
440+
html += "<p>Si quieres seleccionar un diagrama exportado previamente, puedes hacerlo seleccionando el botón “Importar diagrama” dentro del menú <b>Nuevo</b>.</p>";
441+
442+
html += "<h2 class='my-2'>¿Cómo genero el código ejecutable de mi diagrama?</h2>";
443+
html += "<p>La web permite descargar el código SQL o C dependiendo del diagrama seleccionado para su ejecución automática sin la necesidad de codificarlo manualmente.</p>";
444+
html += "<p>El botón de generación de código es: <i class='fa fa-file-code-o'></i> Exportar código</p>";
445+
446+
html += "<h2 class='my-2'>¿Qué consideraciones debo tener en cuenta a la hora de subir un diagrama?</h2>";
447+
html += "<p>Los diagramas deben realizarse sobre una hoja en blanco, con birome negra o azul, en imprenta, el texto no puede superponerse con la figura y letra imprenta lo más prolija posible. En el caso de los DER debe utilizarse letra mayúscula para las tablas y minúscula para los campos o atributos de las tablas.</p>";
448+
449+
html += "<h2 class='my-2'>¿Cómo interactúo con mi diagrama?</h2>";
450+
html += "<p>Una vez que tengas cargada la foto de tu diagrama, puedes editar todo lo que la aplicación haya reconocido. Solo tienes que seleccionar la forma reconocida y podrás editar el texto que contiene. También puedes agregar las formas que desees si es que no se reconoció alguna que dibujaste o te olvidaste de incluirla en tu dibujo. Para agregar formas utiliza el botón “+” que se encuentra en la esquina inferior derecha de la pantalla. </p>";
451+
html += "<p>Si ya estás conforme con el diagrama, toca el botón “validar” para detectar si hay algún error. Si se encuentra alguna falla la aplicación lo informará y, sino, avanzará a la siguiente fase: la depuración.</p>";
452+
html += "<p>En la fase de depuración, podrás ejecutar cada paso de tu algoritmo e ir consultando la tabla de símbolos para ver cómo cambian los valores de tus variables. Y lo mejor es que si no te quedó claro un paso, podrás volver atrás sin necesidad de volver a comenzar toda la ejecución.</p>";
453+
html += "<p>Si deseas modificar el algoritmo puedes utilizar el botón “Editar”. </p>";
454+
html += "<p>Si deseas descargar el código fuente C de tu algoritmo, puedes utilizar el botón “Exportar código”. </p>";
455+
html += "<p>Con el botón “Símbolos” puedes consultar la tabla de símbolos en cualquier momento.</p>";
456+
html += "<p>Y con los botones “Anterior” y “Siguiente” puedes navegar en la ejecución del algoritmo, avanzando (Siguiente) o retrocediendo (Anterior) en cada operación o sentencia.</p>";
457+
458+
html += "<h2 class='my-2'>Comentarios, sugerencias, mejoras</h2>";
459+
html += "<p><a href='https://github.com/Federico-G/debuggear'><i class='fa fa-github'></i> debuggear</a></p>";
460+
html += "<p><a href='https://www.instagram.com/debuggearApp/'><i class='fa fa-instagram'></i> debuggearApp</a></p>";
461+
462+
html += "</div>";
463+
464+
document.getElementById('intro').innerHTML = html;
406465
},
407466

408467
generarFunctions: function() {
@@ -419,8 +478,8 @@ dg.menu = {
419478
table += "<td>" + fn.name + "</td>";
420479
table += "<td>" + fn.parameters.map(x => x.dataType + " " + x.identifier).reverse().join(", ") + "</td>";
421480
table += "<td>" +
422-
"<button type='button' class='btn btn-sm m-1 btn-secondary' onclick='dg.menu.editarFunction(\"" + fn.name + "\");'>Editar</button>" +
423-
"<button type='button' class='btn btn-sm m-1 btn-danger'onclick='dg.menu.borrarFunction(\"" + fn.name + "\");'>Borrar</button>" +
481+
"<button type='button' class='btn btn-sm m-1 btn-secondary' onclick='dg.menu.editarFunction(\"" + fn.name + "\");' title='Editar'><i class='fa fa-pencil'></i></button>" +
482+
"<button type='button' class='btn btn-sm m-1 btn-danger'onclick='dg.menu.borrarFunction(\"" + fn.name + "\");' title='Borrar'><i class='fa fa-trash'></i></button>" +
424483
"</td>";
425484
}
426485
table += "</tbody></table>";

public/js/shape.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ dg.shape = {
305305
placement: 'bottom',
306306
trigger: 'manual'
307307
});
308-
if(shape.classList.contains("shape-selected")) {
308+
if (shape.classList.contains("shape-selected")) {
309309
$(shape).popover("show");
310310
}
311311
// TODO

public/model.json

+1-1
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)