Skip to content

Commit

Permalink
Minor changes
Browse files Browse the repository at this point in the history
  • Loading branch information
agordillo committed Feb 14, 2016
1 parent 49f23ce commit 22d16eb
Show file tree
Hide file tree
Showing 10 changed files with 69 additions and 1 deletion.
1 change: 1 addition & 0 deletions examples/HTML Reloj/reloj_example.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"type":"exercise","title":"Reloj","description":"Ejemplo de Reloj con JavaScript\nTrate de conseguir el mismo resultado empleando JQuery.\nPuede importar la librería de un CDN mediante la siguiente etiqueta: <code><script src=\"http://code.jquery.com/jquery-1.11.2.min.js\"></script></code>.","editorMode":"HTML","content":"<!DOCTYPE html>\n<html>\n<head>\n <title>Reloj</title>\n <meta charset=\"UTF-8\">\n <script type=\"text/javascript\">\n function mostrar_fecha(){\n var cl = document.getElementById(\"fecha\");\n cl.innerHTML = new Date();\n }\n </script>\n</head>\n<body>\n <h2>Reloj</h2>\n <div id=\"fecha\"></div>\n <script type=\"text/javascript\">\n mostrar_fecha(); //muestra fecha al cargar\n // actualiza cada segundo\n setInterval(mostrar_fecha, 1000);\n </script>\n</body>\n</html>"}
1 change: 1 addition & 0 deletions examples/JQuery Intro/jquery_intro.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"type":"exercise","title":"JQuery Intro","description":"Empleando JQuery realice los siguiente cambios en la página web:\n-> Añada el título \"JQuery\" a la página web.\n-> Centre la cabecera <code><header></code>.\n-> Cambie a 20px el tamaño de fuente de los <code><p></code> con clase \"title\".\n-> Ponga fondo negro y letra blanca a los <code><div></code> que estén dentro del elemento con id \"news\".\n-> Incluya un manejador de eventos a todos los <code><li></code> cuyo atributo \"alert\" sea igual a \"yes\", de modo que si se pulsa sobre alguno de ellos su contenido se escriba en el <code><footer></code> de la página.\n","editorMode":"HTML","content":"<!DOCTYPE html>\n<html>\n <head>\n <meta charset=\"UTF-8\">\n <script src=\"http://code.jquery.com/jquery-1.11.2.min.js\"></script>\n <script type=\"text/javascript\">\n $(document).ready(function(){\n //Escribe tu solución aquí\n \n });\n </script>\n </head>\n <body>\n <header>Aprendiendo a utilizar los selectores de JQuery</header>\n <article>\n <div>\n <p class=\"title\">Características de JQuery</p>\n <ul>\n <li>Rápido</li>\n <li alert=\"yes\">Ligero</li>\n <li>Multi-navegador</li>\n </ul>\n </div>\n </article>\n <article id=\"news\">\n <div class=\"title\">\n <a target=\"_blank\" href=\"http://jquery.com/\">JQuery website</a>\n </div>\n </article>\n <footer></footer>\n </body>\n</html>","score_function":"var score = function (document){\n\t\tvar grade = {};\n\t\tgrade.successes = [];\n\t\tgrade.errors = [];\n\t\tgrade.feedback = [];\n\t\tgrade.score = 0;\n\n\t\t// Añada el título \"JQuery\" a la página web.\n\t\tvar title = $(document).find(\"head\").find(\"title\").html();\n\t\tif((typeof title === \"string\")&&(title.trim().toLowerCase()===\"jquery\")){\n\t\t\tgrade.successes.push(\"Cambiaste el título de la página web correctamente.\");\n\t\t\tgrade.score += 2;\n\t\t} else {\n\t\t\tgrade.errors.push(\"No cambiaste correctamente el título de la página web.\");\n\t\t}\n\n\t\tif(grade.errors.length > 0){\n\t\t\treturn grade;\n\t\t}\n\n\t\t//Centre la cabecera <header>.\n\t\tvar header = $(document).find(\"header\");\n\t\tif($(header).css(\"text-align\")===\"center\"){\n\t\t\tgrade.successes.push(\"Centraste el <header> correctamente.\");\n\t\t\tgrade.score += 1;\n\t\t} else {\n\t\t\tgrade.errors.push(\"El <header> no está centrado.\");\n\t\t}\n\n\t\tif(grade.errors.length > 0){\n\t\t\treturn grade;\n\t\t}\n\n\t\t//Cambie a 20px el tamaño de fuente de los <p> con clase \"title\".\n\t\tvar ps = $(document).find(\"p.title\");\n\t\tif($(ps).css(\"font-size\")===\"20px\"){\n\t\t\tgrade.successes.push(\"Cambiaste el tamaño de los <p> con clase title correctamente.\");\n\t\t\tgrade.score += 1;\n\t\t} else {\n\t\t\tgrade.errors.push(\"Los elementos p con clase title no tienen el tamaño de fuente correcto.\");\n\t\t}\n\n\t\tif(grade.errors.length > 0){\n\t\t\treturn grade;\n\t\t}\n\n\n\t\t//Ponga fondo negro y letra blanca a los <div> que estén dentro del elemento con id \"news\".\n\t\tvar divs = $(document).find(\"#news div\");\n\t\tvar _background = false;\n\t\tvar _color = false;\n\n\t\tif($(divs).css(\"background-color\")===\"rgb(0, 0, 0)\"){\n\t\t\t_background = true;\n\t\t} else {\n\t\t\t_background = false;\n\t\t}\n\n\t\tif($(divs).css(\"color\")===\"rgb(255, 255, 255)\"){\n\t\t\t_color = true;\n\t\t} else {\n\t\t\t_color = false;\n\t\t}\n\n\t\tif(_background&&_color){\n\t\t\tgrade.successes.push(\"Los <div> dentro del elemento con id news tienen el estilo adecuado.\");\n\t\t\tgrade.score += 2;\n\t\t} else {\n\t\t\tif(!_background){\n\t\t\t\tgrade.errors.push(\"Los <div> dentro del elemento con id news no tienen el fondo adecuado.\");\n\t\t\t}\n\t\t\tif(!_color){\n\t\t\t\tgrade.errors.push(\"Los <div> dentro del elemento con id news no tienen el color adecuado.\");\n\t\t\t}\n\t\t}\n\n\t\tif(grade.errors.length > 0){\n\t\t\treturn grade;\n\t\t}\n\n\n\t\t// Incluya un manejador de eventos a todos los <li> cuyo atributo \"alert\" sea igual a \"yes\", de modo que si se pulsa sobre alguno de ellos su contenido se escriba en el <footer> de la página.\n\t\tvar triggerElement = $(document).find(\"[alert='yes']\")[0];\n\t\tif(typeof triggerElement == \"undefined\"){\n\t\t\tgrade.errors.push(\"No se encontró ningún elemento escuchando al evento.\");\n\t\t\treturn grade;\n\t\t}\n\n\t\tvar footer = $(document).find(\"footer\");\n\t\tvar oldFooterVal = $(footer).html();\n\t\tvar triggerElementVal = $(triggerElement).html();\n\n\t\t$(footer).html(\"\");\n\t\t$(triggerElement).trigger(\"click\");\n\t\tif($(footer).html()===triggerElementVal){\n\t\t\t//Success\n\t\t\tgrade.score += 4;\n\t\t\tgrade.successes.push(\"El manejador de eventos funciona acorde a lo esperado.\");\n\t\t} else {\n\t\t\t//Fail\n\t\t\tgrade.errors.push(\"El manejador de eventos no funciona acorde a lo esperado.\");\n\t\t}\n\n\t\t$(footer).html(oldFooterVal);\n\n\t\t//Passed threshold: 8\n\t\tif(grade.score < 8){\n\t\t\tgrade.score = 4;\n\t\t}\n\n\t\tif(grade.score===10){\n\t\t\tgrade.feedback.push(\"¡Enhorabuena, tu solución es perfecta!\");\n\t\t}\n\n\t\treturn grade;\n\t}"}
39 changes: 39 additions & 0 deletions examples/JQuery Intro/solucion_jquery_intro.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
//Escribe tu solución aquí
$("head").append("<title>JQuery</title>");
$("header").css("text-align","center");
$("p.title").css("font-size","20px");
$("#news div").css("background","black");
$("#news div").css("color","white");
$("li[alert='yes']").click(function(e){
$("footer").html($(this).html());
});
});
</script>
</head>
<body>
<header>Aprendiendo a utilizar los selectores de JQuery</header>
<article>
<div>
<p class="title">Características de JQuery</p>
<ul>
<li>Rápido</li>
<li alert="yes">Ligero</li>
<li>Multi-navegador</li>
</ul>
</div>
</article>
<article id="news">
<div class="title">
<a target="_blank" href="http://jquery.com/">JQuery website</a>
</div>
</article>
<footer></footer>
</body>
</html>
1 change: 1 addition & 0 deletions examples/JS Elipse/JS_elipse.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"type":"exercise","title":"Área de una elipse","description":"Devuelva en la variable <b>'elipse'</b> una función que calcule el área de una elipse de acuerdo a la fórmula <code>Área = &#928;·a·b</code>, siendo a y b el radio de los semiejes de la elipse. La función podrá ser invocada de dos formas diferentes:\n a) mediante dos parámetros numéricos '<b>a</b>' y '<b>b</b>'.\n b) mediante un solo parámetro de tipo array que contenga los valores de a y b.\n-&gt; Si la función recibe como parámetro un objeto que no sea un array devolverá <b>-1</b>.\n-&gt; Si la función recibe como parámetro un array que no contenga los valores adecuados devolverá <b>-2</b>.\n-&gt; En cualquier otro caso en que la función reciba parámetros erroneos deberá devolver el valor <b>-3</b>.\n-&gt; Si los parámetros son correctos, la función devolverá el valor del área de la elipse.\n","editorMode":"JavaScript","content":"/*\n * Devuelva en la variable 'elipse' una función que calcule el área de una elipse de acuerdo a la fórmula 'Área = Π·a·b'\n */\n\nvar elipse = function(a,b){\n\n};\n","score_function":"var score = function (result,variablesHash){\n\t\tvar grade = {};\n\t\tgrade.successes = [];\n\t\tgrade.errors = [];\n\t\tgrade.feedback = [];\n\t\tgrade.score = 0;\n\n\t\tvar elipse = variablesHash[\"elipse\"];\n\n\t\tif(typeof elipse !== \"function\"){\n\t\t\tgrade.errors.push(\"El valor devuelto en la variable 'elipse' no es una función.\");\n\t\t\treturn grade;\n\t\t}\n\t\tgrade.score += 1;\n\n\t\t//Testear la función.\n\n\t\tvar _feedbackPI = false;\n\n\t\t//Case: a,b numbers\n\t\ttry {\n\t\t\tvar testA = elipse(0,0);\n\t\t\tvar testB = elipse(1,1);\n\t\t\tvar testC = elipse(2,5);\n\t\t\tif((testA===0)&&(testB===Math.PI)&&(testC===10*Math.PI)){\n\t\t\t\tgrade.score += 2;\n\t\t\t\tgrade.successes.push(\"La función 'elipse' funciona correctamente cuando 'a' y 'b' son números.\");\n\t\t\t} else {\n\t\t\t\tgrade.errors.push(\"La función 'elipse' no calcula correctamente el valor esperado cuando 'a' y 'b' son números.\");\n\t\t\t\tif(Math.abs(testB-Math.PI) < 0.1){\n\t\t\t\t\tgrade.score += 1;\n\t\t\t\t\tgrade.feedback.push(\"Algunos valores calculados se acercan bastante al esperado sin llegar a ser exactos. Recuerda que el valor de PI puede ser obtenido empleando el módulo Math de JavaScript de la siguiente forma \\\"Math.PI\\\".\");\n\t\t\t\t\t_feedbackPI = true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e1){\n\t\t\tgrade.errors.push(\"La función 'elipse' presenta errores de ejecución cuando 'a' y 'b' son números.\");\n\t\t}\n\n\t\tif(grade.errors.length > 0){\n\t\t\treturn grade;\n\t\t}\n\n\t\t//Case: a, array\n\t\ttry {\n\t\t\tvar testD = elipse([0,0]);\n\t\t\tvar testE = elipse([1,1]);\n\t\t\tvar testF = elipse([2,5]);\n\t\t\tif((testD===0)&&(testE===Math.PI)&&(testF===10*Math.PI)){\n\t\t\t\tgrade.score += 2;\n\t\t\t\tgrade.successes.push(\"La función 'elipse' funciona correctamente cuando 'a' es un array.\");\n\t\t\t} else {\n\t\t\t\tgrade.errors.push(\"La función 'elipse' no calcula correctamente el valor esperado cuando 'a' es un array.\");\n\t\t\t\tif(Math.abs(testE-Math.PI) < 0.1){\n\t\t\t\t\tgrade.score += 1;\n\t\t\t\t\tif(!_feedbackPI){\n\t\t\t\t\t\tgrade.feedback.push(\"Algunos valores calculados se acercan bastante al esperado sin llegar a ser exactos. Recuerda que el valor de PI puede ser obtenido empleando el módulo Math de JavaScript de la siguiente forma \\\"Math.PI\\\".\");\n\t\t\t\t\t\t_feedbackPI= true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e2){\n\t\t\tgrade.errors.push(\"La función 'elipse' presenta errores de ejecución cuando 'a' es un array.\");\n\t\t}\n\n\t\tif(grade.errors.length > 0){\n\t\t\treturn grade;\n\t\t}\n\n\n\t\t//Si la función recibe como parámetro un objeto que no sea un array devolverá -1.\n\t\ttry {\n\t\t\tif((elipse({})===-1)&&(elipse(new Date())===-1)){\n\t\t\t\tgrade.score += 2;\n\t\t\t\tgrade.successes.push(\"La función 'elipse' funciona correctamente cuando 'a' es un objeto diferente de un array.\");\n\t\t\t} else {\n\t\t\t\tgrade.errors.push(\"La función 'elipse' no funciona correctamente cuando 'a' es un objeto diferente de un array.\");\n\t\t\t}\n\t\t} catch (e2){\n\t\t\tgrade.errors.push(\"La función 'elipse' presenta errores de ejecución cuando 'a' es un objeto diferente de un array.\");\n\t\t}\n\n\t\t//Si la función recibe como parámetro un array que no contenga los valores adecuados devolverá -2.\n\t\ttry {\n\t\t\tif((elipse([])===-2)&&(elipse([5,\"test\"])===-2)&&(elipse([undefined,5])===-2)){\n\t\t\t\tgrade.score += 1;\n\t\t\t\tgrade.successes.push(\"La función 'elipse' funciona correctamente cuando 'a' es un array inválido.\");\n\t\t\t} else {\n\t\t\t\tgrade.errors.push(\"La función 'elipse' no funciona correctamente cuando 'a' es un array inválido.\");\n\t\t\t}\n\n\t\t\tif(elipse([-1,-1])===-2){\n\t\t\t\tgrade.score += 1;\n\t\t\t} else {\n\t\t\t\tgrade.feedback.push(\"Un array que contenga números negativos también se considera un array inválido.\");\n\t\t\t}\n\n\t\t} catch (e2){\n\t\t\tgrade.errors.push(\"La función 'elipse' presenta errores de ejecución cuando 'a' es un array inválido.\");\n\t\t}\n\n\t\t// En cualquier otro caso en que la función reciba parámetros erroneos deberá devolver el valor -3.\n\t\ttry {\n\t\t\tif((elipse()===-3)&&(elipse(5)===-3)&&(elipse(5,null)===-3)&&(elipse(undefined,5)===-3)&&(elipse(\"perro\",10)===-3)){\n\t\t\t\tgrade.score += 1;\n\t\t\t\tgrade.successes.push(\"La función 'elipse' funciona correctamente cuando recibe parámetros inválidos.\");\n\t\t\t} else {\n\t\t\t\tgrade.errors.push(\"La función 'elipse' no funciona correctamente cuando recibe parámetros inválidos.\");\n\t\t\t}\n\n\t\t\tif(elipse(-1,-1)===-3){\n\t\t\t\tgrade.score += 1;\n\t\t\t} else {\n\t\t\t\tgrade.feedback.push(\"Los valores a y b deberían ser siempre positivos. De lo contrario se deberían considerarse parámetros inválidos.\");\n\t\t\t}\n\n\t\t} catch (e2){\n\t\t\tgrade.errors.push(\"La función 'elipse' presenta errores de ejecución cuando recibe parámetros inválidos.\");\n\t\t}\n\n\t\t//Scale grade\n\t\tgrade.score = Math.min(10,Math.max(0,grade.score));\n\n\t\t//Passed threshold: 8\n\t\tif(grade.score < 8){\n\t\t\tgrade.score = 4;\n\t\t}\n\n\t\tif(grade.score===10){\n\t\t\tgrade.feedback.push(\"¡Enhorabuena, tu solución es perfecta!\");\n\t\t}\n\n\t\treturn grade;\n\t}","score_function_vars":["elipse"]}
25 changes: 25 additions & 0 deletions examples/JS Elipse/solucion_elipse.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/*
* Devuelva en la variable 'elipse' una función que calcule el área de una elipse de acuerdo a la fórmula 'Área = Π·a·b'
*/

var elipse = function(a,b){
if(typeof a == "object"){
if(a instanceof Array){
if((typeof a[0] == "number")||(typeof a[1] == "number")){
if((a[0]>=0)&&(a[1]>=0)){
return a[0]*a[1]*Math.PI;
}
}
return -2;
} else {
return -1;
}
} else {
if((typeof a == "number")&&(typeof b == "number")){
if((a>=0)&&(b>=0)){
return a*b*Math.PI;
}
}
return -3;
}
};

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion js/CODEditor.CORE.js
Original file line number Diff line number Diff line change
Expand Up @@ -1113,7 +1113,7 @@ CODEditor.CORE = (function(C,$,undefined){
});

//Extra images
var extraImages = ["img/error_icon.png","img/success_icon.png","img/fullscreen_on.png","img/fullscreen_off.png","img/maximize_console.png","img/minimize_console.png"];
var extraImages = ["img/error_icon.png","img/success_icon.png","img/fullscreen_on.png","img/fullscreen_off.png","img/close_console.png","img/maximize_console.png","img/minimize_console.png"];
for(var ii=0; ii<extraImages.length; ii++){
filesSources.push(extraImages[ii]);
}
Expand Down
Binary file added releases/CodeEditorAppViewer_v2.0.zip
Binary file not shown.
Binary file added releases/CodeEditorApp_v0.0.1.zip
Binary file not shown.
Binary file added releases/CodeEditorApp_v2.0.zip
Binary file not shown.

0 comments on commit 22d16eb

Please sign in to comment.