#wip(ecma): Iniciado el proyecto ECMA.
This commit is contained in:
parent
bda3b199a7
commit
5412700a9d
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,3 +2,4 @@
|
|||||||
Data
|
Data
|
||||||
CaritasSantaCruz.Mapeate.apache2.conf
|
CaritasSantaCruz.Mapeate.apache2.conf
|
||||||
Public/data
|
Public/data
|
||||||
|
*[Ss]ecret*s*
|
23
Public/app.html
Normal file
23
Public/app.html
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="es">
|
||||||
|
<head>
|
||||||
|
<title data-i18n="mapeate">Mapéate</title>
|
||||||
|
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
|
||||||
|
<meta name="xdoc:author" content="leinosa,Yilber,KyMAN" />
|
||||||
|
<meta name="xdoc:since" content="20240213" />
|
||||||
|
<meta name="xdoc:version" content="20240312" />
|
||||||
|
<meta name="xdoc:access" content="public" />
|
||||||
|
|
||||||
|
<script data-type="text/javascript" data-language="ECMAScript 2015" src="ecma/Mapeate.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||||
|
|
||||||
|
<script data-type="text/javascript" data-language="ECMAScript 2015" charset="utf-8">
|
||||||
|
|
||||||
|
mapeate = new Mapeate();
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body></body>
|
||||||
|
</html>
|
405
Public/ecma/Mapeate.ecma.js
Normal file
405
Public/ecma/Mapeate.ecma.js
Normal file
@ -0,0 +1,405 @@
|
|||||||
|
Mapeate = function(entradas){
|
||||||
|
|
||||||
|
const self = this,
|
||||||
|
configuracion_por_defecto = {
|
||||||
|
nulos : false,
|
||||||
|
valor_por_defecto : null,
|
||||||
|
autoiniciar : true,
|
||||||
|
archivos_de_configuracion_por_defecto : [
|
||||||
|
"/json/Mapeate.configuracion.json",
|
||||||
|
"/json/Mapeate.configuracion.secretos.json"
|
||||||
|
],
|
||||||
|
texto_por_defecto : "",
|
||||||
|
configuracion_sobreescribir : false,
|
||||||
|
i18n_sobreescribir : false,
|
||||||
|
formato_terminal : "[{tipo}] {yyyy}{mm}{dd} {hh}{ii}{ss}: {mensaje}",
|
||||||
|
terminal_tipos_por_defecto : [
|
||||||
|
["unkn", "unknown", "desconocido"],
|
||||||
|
[" ok ", "ok", "si", "correcto"],
|
||||||
|
["warn", "warning", "aviso", "advertencia"],
|
||||||
|
["erro", "error", "incrrecto"],
|
||||||
|
["fail", "failure", "fallo"],
|
||||||
|
["exce", "excepcion"]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
configuracion = {},
|
||||||
|
textos = {},
|
||||||
|
terminal_tipos = [];
|
||||||
|
let iniciado = false,
|
||||||
|
configuracion_sobreescribir = false,
|
||||||
|
idioma_por_defecto = null,
|
||||||
|
idioma = null,
|
||||||
|
formato_terminal = "[{tipo}] {yyyy}{mm}{dd} {hh}{ii}{ss}: {mensaje}";
|
||||||
|
|
||||||
|
const constructor = () => {
|
||||||
|
|
||||||
|
configuracion_por_defecto.terminal_tipos_por_defecto.forEach(entrada => terminal_tipos.push(entrada));
|
||||||
|
|
||||||
|
self.configuracion("autoiniciar") && self.iniciar();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
const establecer_variables_comunes = () => {
|
||||||
|
|
||||||
|
configuracion_sobreescribir = self.configuracion(["configuracion_sobreescribir", "sobreescribir"]);
|
||||||
|
formato_terminal = self.configuracion("formato_terminal");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
this.iniciar = callback => {
|
||||||
|
|
||||||
|
const terminar = estado => typeof callback == "function" && terminar(estado);
|
||||||
|
|
||||||
|
if(iniciado){
|
||||||
|
terminar(false);
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
iniciado = true;
|
||||||
|
|
||||||
|
establecer_variables_comunes();
|
||||||
|
|
||||||
|
self.configuracion_anadir(self.configuracion("archivos_de_configuracion_por_defecto"), null, () => {
|
||||||
|
establecer_variables_comunes();
|
||||||
|
self.configuracion_anadir(self.configuracion("archivos_de_configuracion"), null, () => {
|
||||||
|
establecer_variables_comunes();
|
||||||
|
self.terminal_tipos_anadir(self.configuracion("terminal_tipos_por_defecto"), () => {
|
||||||
|
self.terminal_tipos_anadir(self.configuracion("terminal_tipos"), () => {
|
||||||
|
|
||||||
|
i18n_sobreescribir = self.configuracion(["i18n_sobreescribir", "sobreescribir"]);
|
||||||
|
idioma_por_defecto = self.configuracion(["idioma_por_defecto", "idioma"]);
|
||||||
|
idioma = self.configuracion(["idioma", "idioma_por_defecto"]);
|
||||||
|
|
||||||
|
self.i18n_anadir(self.configuracion("archivos_de_i18n_por_defecto"), null, () => {
|
||||||
|
self.i18n_anadir(self.configuracion("archivos_de_i18n"), null,() => {
|
||||||
|
|
||||||
|
terminar(true);
|
||||||
|
console.log("PASA");
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.nulos = nulos => typeof nulos != "boolean" ? self.configuracion("nulos", null, false, false) : nulos;
|
||||||
|
|
||||||
|
this.valor_por_defecto = (valor_por_defecto, nulos) => (
|
||||||
|
valor_por_defecto !== undefined && (self.nulos(nulos) || valor_por_defecto !== null) ? valor_por_defecto :
|
||||||
|
self.configuracion("valor_por_defecto", null, null, true)
|
||||||
|
);
|
||||||
|
|
||||||
|
this.coger_array_de_diccionarios = valor => valor && typeof valor == "object" ? valor instanceof Array ? valor : [valor] : [];
|
||||||
|
|
||||||
|
this.coger_array_de_strings = valor => (
|
||||||
|
valor && typeof valor == "object" && valor instanceof Array ? valor : [valor]
|
||||||
|
).filter(elemento => typeof elemento == "string" && elemento.trim()).map(elemento => elemento.trim());
|
||||||
|
|
||||||
|
this.configuracion = (claves, entradas, valor_por_defecto, nulos) => {
|
||||||
|
|
||||||
|
const m = (claves = self.coger_array_de_strings(claves)).length;
|
||||||
|
|
||||||
|
if(m){
|
||||||
|
|
||||||
|
const l = (entradas = [].concat(
|
||||||
|
self.coger_array_de_diccionarios(entradas),
|
||||||
|
[entradas, configuracion, configuracion_por_defecto]
|
||||||
|
)).length;
|
||||||
|
|
||||||
|
nulos = self.nulos(nulos);
|
||||||
|
|
||||||
|
for(let i = 0; i < l; i ++)
|
||||||
|
if(entradas[i] && typeof entradas[i] == "object")
|
||||||
|
for(let j = 0; j < m; j ++)
|
||||||
|
if(entradas[i][claves[j]] !== undefined && (nulos || entradas[i][claves[j]] !== null))
|
||||||
|
return entradas[i][claves[j]];
|
||||||
|
};
|
||||||
|
return self.valor_por_defecto(valor_por_defecto, nulos);
|
||||||
|
};
|
||||||
|
|
||||||
|
this.leer_archivo = (url, entradas) => {
|
||||||
|
|
||||||
|
let terminado = false;
|
||||||
|
const ajax = new XMLHttpRequest(),
|
||||||
|
callback = self.configuracion("callback",
|
||||||
|
typeof entradas == "function" ? (entradas = {callback : entradas}) :
|
||||||
|
entradas && typeof entradas == "object" ? entradas :
|
||||||
|
{}),
|
||||||
|
timeout = self.configuracion(["ajax_timeout", "timeout"], entradas),
|
||||||
|
terminar = codigo => (
|
||||||
|
!terminado &&
|
||||||
|
(terminado = true) &&
|
||||||
|
typeof callback == "function" &&
|
||||||
|
callback(ajax.responseText, ajax.status, ajax.readyState, codigo)
|
||||||
|
),
|
||||||
|
fecha = Date.now();
|
||||||
|
|
||||||
|
ajax.open("get", url, true);
|
||||||
|
ajax.timeout = timeout;
|
||||||
|
ajax.onreadystatechange = () => {
|
||||||
|
if(terminado)
|
||||||
|
return;
|
||||||
|
if(ajax.readyState == 4)
|
||||||
|
terminar(
|
||||||
|
(ajax.status >= 200 && ajax.status < 300) || [301, 302, 304].includes(ajax.status) ? "OK" :
|
||||||
|
"HTTP_ERROR");
|
||||||
|
else if(Date.now() - fecha > timeout)
|
||||||
|
terminar("TIMEOUT_FORZADO");
|
||||||
|
};
|
||||||
|
ajax.send(null);
|
||||||
|
|
||||||
|
ajax.onabort = () => terminar("ABORTADO");
|
||||||
|
ajax.onerror = () => terminar("ERROR");
|
||||||
|
ajax.ontimeout = () => terminar("TIMEOUT");
|
||||||
|
|
||||||
|
return ajax;
|
||||||
|
};
|
||||||
|
|
||||||
|
const configuracion_anadir = (entradas, sobreescribir, callback, i) => {
|
||||||
|
|
||||||
|
if(i >= entradas.length){
|
||||||
|
callback();
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
const terminar = () => configuracion_anadir(entradas, sobreescribir, callback, i + 1);
|
||||||
|
|
||||||
|
if(!entradas[i]){
|
||||||
|
terminar();
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
if(typeof entradas[i] == "object"){
|
||||||
|
if(entradas[i] instanceof Array)
|
||||||
|
configuracion_anadir(entradas[i], sobreescribir, terminar, 0);
|
||||||
|
else{
|
||||||
|
for(const clave in entradas[i])
|
||||||
|
if(sobreescribir || configuracion[clave] === undefined)
|
||||||
|
configuracion[clave] = entradas[i][clave];
|
||||||
|
terminar();
|
||||||
|
};
|
||||||
|
}else if(typeof entradas[i] == "string"){
|
||||||
|
if(!(entradas[i] = entradas[i].trim())){
|
||||||
|
terminar();
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
let json;
|
||||||
|
|
||||||
|
if(entradas[i].match(/^(\{(.|[\r\n])+\}|\[(.|[\r\n])+\])$/)){
|
||||||
|
try{
|
||||||
|
json = JSON.parse(entradas[i]);
|
||||||
|
}catch(excepcion){};
|
||||||
|
if(json)
|
||||||
|
configuracion_anadir(json instanceof Array ? json : [json], sobreescribir, terminar, 0);
|
||||||
|
else
|
||||||
|
terminar();
|
||||||
|
}else
|
||||||
|
self.leer_archivo(entradas[i], salida => {
|
||||||
|
try{
|
||||||
|
json = JSON.parse(salida);
|
||||||
|
}catch(excepcion){};
|
||||||
|
if(json)
|
||||||
|
configuracion_anadir(json instanceof Array ? json : [json], sobreescribir, terminar, 0);
|
||||||
|
else
|
||||||
|
terminar();
|
||||||
|
});
|
||||||
|
}else
|
||||||
|
terminar();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
this.configuracion_anadir = (entradas, sobreescribir, callback) => configuracion_anadir(
|
||||||
|
entradas && typeof entradas == "object" && entradas instanceof Array ? entradas : [entradas],
|
||||||
|
typeof sobreescribir == "boolean" ? sobreescribir : configuracion_sobreescribir,
|
||||||
|
callback,
|
||||||
|
0
|
||||||
|
);
|
||||||
|
|
||||||
|
this.string_variables = (string, variables, por_defecto) => {
|
||||||
|
|
||||||
|
const l = (variables = self.coger_array_de_diccionarios(variables)).length;
|
||||||
|
|
||||||
|
return (string || "" + string).replace(/\{([^\{\}]+)\}/g, (crudo, clave) => {
|
||||||
|
for(let i = 0; i < l; i ++)
|
||||||
|
if(variables[i][clave] !== undefined)
|
||||||
|
return variables[i][clave];
|
||||||
|
return por_defecto === undefined ? crudo : por_defecto;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const i18n = (claves, por_defecto) => {
|
||||||
|
|
||||||
|
const m = (claves = self.coger_array_de_strings(claves)).length,
|
||||||
|
idiomas = [idioma_por_defecto, idioma].concat(Object.keys(textos)),
|
||||||
|
l = idiomas.length;
|
||||||
|
|
||||||
|
for(let i = 0; i < l; i ++)
|
||||||
|
if(typeof idiomas[i] == "string" && textos[idiomas[i]])
|
||||||
|
for(let j = 0; j < m; j ++)
|
||||||
|
if(idiomas[i][claves[j]] !== undefined)
|
||||||
|
return idiomas[i][claves[j]];
|
||||||
|
return (
|
||||||
|
por_defecto !== undefined ? por_defecto :
|
||||||
|
m ? claves[0] :
|
||||||
|
self.configuracion("texto_por_defecto"));
|
||||||
|
};
|
||||||
|
|
||||||
|
this.i18n = (claves, variables, por_defecto) => self.string_variables(i18n(claves, por_defecto), variables);
|
||||||
|
|
||||||
|
const i18n_anadir = (entradas, sobreescribir, callback, i) => {
|
||||||
|
|
||||||
|
if(i >= entradas.length){
|
||||||
|
typeof callback == "function" && callback();
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
const terminar = () => i18n_anadir(entradas, sobreescribir, callback, i + 1);
|
||||||
|
|
||||||
|
if(!entradas[i]){
|
||||||
|
terminar();
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
if(typeof entradas[i] == "object"){
|
||||||
|
if(entradas[i] instanceof Array)
|
||||||
|
i18n_anadir(entradas[i], sobreescribir, terminar, 0);
|
||||||
|
else{
|
||||||
|
for(const lenguage in entradas[i]){
|
||||||
|
textos[lenguage] === undefined && (textos[lenguage] = {});
|
||||||
|
if(entradas[i][lenguage] && typeof entradas[i][lenguage] == "object")
|
||||||
|
for(const clave in entradas[i][lenguage])
|
||||||
|
if(sobreescribir || textos[lenguage][clave] !== undefined)
|
||||||
|
textos[lenguage][clave] = entradas[i][lenguage][clave];
|
||||||
|
};
|
||||||
|
terminar();
|
||||||
|
};
|
||||||
|
}else if(typeof entradas[i] == "string"){
|
||||||
|
if(!(entradas[i] = entradas[i].trim())){
|
||||||
|
terminar();
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
let json;
|
||||||
|
|
||||||
|
if(entradas[i].match(/^(\{(.|[\r\n])+\}|\[(.|[\r\n])+\])$/)){
|
||||||
|
try{
|
||||||
|
json = JSON.parse(entradas[i]);
|
||||||
|
}catch(excepcion){};
|
||||||
|
if(json)
|
||||||
|
i18n_anadir(json instanceof Array ? json : [json], sobreescribir, terminar, 0);
|
||||||
|
else
|
||||||
|
terminar();
|
||||||
|
}else
|
||||||
|
self.leer_archivo(entradas[i], salida => {
|
||||||
|
try{
|
||||||
|
json = JSON.parse(salida);
|
||||||
|
}catch(excepcion){};
|
||||||
|
if(json)
|
||||||
|
i18n_anadir(json instanceof Array ? json : [json], sobreescribir, terminar, 0);
|
||||||
|
else
|
||||||
|
terminar();
|
||||||
|
});
|
||||||
|
}else
|
||||||
|
terminar();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
this.i18n_anadir = (entradas, sobreescribir, callback) => i18n_anadir(
|
||||||
|
entradas && typeof entradas == "object" && entradas instanceof Array ? entradas : [entradas],
|
||||||
|
typeof sobreescribir == "boolean" ? sobreescribir : i18n_sobreescribir,
|
||||||
|
callback,
|
||||||
|
0
|
||||||
|
);
|
||||||
|
|
||||||
|
const terminal_tipos_anadir = (entradas, callback, i, clave) => {
|
||||||
|
if(i > 10)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(!entradas || i >= entradas.length){
|
||||||
|
typeof callback == "function" && callback();
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
const terminar = () => terminal_tipos_anadir(entradas, callback, i + 1, clave);
|
||||||
|
|
||||||
|
if(!entradas[i]){
|
||||||
|
terminar();
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
if(typeof entradas[i] == "string"){
|
||||||
|
if(/^[a-z0-9]+$/i.test(entradas[i])){
|
||||||
|
if(clave === undefined && !terminal_tipos.some((tipos, j) => tipos.includes(entradas[i]) && !isNaN(clave = j))){
|
||||||
|
clave = terminal_tipos.length;
|
||||||
|
terminal_tipos.push([entradas[i]]);
|
||||||
|
}else
|
||||||
|
!terminal_tipos[clave].includes(entradas[i]) && terminal_tipos[clave].push(entradas[i]);
|
||||||
|
terminar();
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
let json;
|
||||||
|
|
||||||
|
if(/^(\[(.|[\r\n])+\])$/.test(entradas[i])){
|
||||||
|
try{
|
||||||
|
json = JSON.parse(entradas[i]);
|
||||||
|
}catch(excepcion){};
|
||||||
|
if(json)
|
||||||
|
terminal_tipos_anadir(json, terminar, 0, clave);
|
||||||
|
else
|
||||||
|
terminar();
|
||||||
|
}else
|
||||||
|
self.leer_archivo(entradas[i], salida => {
|
||||||
|
try{
|
||||||
|
json = JSON.parse(salida);
|
||||||
|
}catch(excepcion){};
|
||||||
|
if(json)
|
||||||
|
terminal_tipos_anadir(json, terminar, 0, clave);
|
||||||
|
else
|
||||||
|
terminar();
|
||||||
|
});
|
||||||
|
}else if(typeof entradas[i] == "object" && entradas[i] instanceof Array)
|
||||||
|
terminal_tipos_anadir(entradas[i], terminar, 0);
|
||||||
|
else
|
||||||
|
terminar();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
this.terminal_tipos_anadir = (entradas, callback) => terminal_tipos_anadir(entradas, callback, 0);
|
||||||
|
|
||||||
|
this.print = (tipo, mensaje, variables) => {
|
||||||
|
|
||||||
|
const fecha = new Date(),
|
||||||
|
conjunto = {
|
||||||
|
tipo_crudo : tipo,
|
||||||
|
tipo : tipo.upperCase().substring(0, 4),
|
||||||
|
i18n : mensaje,
|
||||||
|
...(typeof variables == "object" ? variables : {})
|
||||||
|
};
|
||||||
|
|
||||||
|
["year", "month", "date", "hours", "minutes", "seconds"].forEach(clave => {
|
||||||
|
|
||||||
|
const k = clave.substring(0, 1),
|
||||||
|
valor = fecha["get" + (clave == "year" ? "FullYear" : k.toUpperCase() + clave.substring(1))]();
|
||||||
|
|
||||||
|
conjunto[clave == "date" ? "day" : clave] = valor;
|
||||||
|
conjunto[k] = valor;
|
||||||
|
conjunto[k + k] = ("00" + valor).slice(-2);
|
||||||
|
|
||||||
|
});
|
||||||
|
conjunto["yyyy"] = conjunto["year"];
|
||||||
|
|
||||||
|
conjunto.mensaje = self.i18n(mensaje, conjunto);
|
||||||
|
|
||||||
|
console.log(self.string_variables(formato_terminal, conjunto));
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
constructor();
|
||||||
|
|
||||||
|
};
|
@ -112,6 +112,10 @@
|
|||||||
<span data-icon="mapeate"></span>
|
<span data-icon="mapeate"></span>
|
||||||
<span data-i18n="mapeate">Mapeate</span>
|
<span data-i18n="mapeate">Mapeate</span>
|
||||||
</a></li>
|
</a></li>
|
||||||
|
<li data-i18n="web_app_oficial" title="Mapeate - Aplicación Web oficial" data-i18n-without="true"><a href="https://mapeate.k3y.pw/app.html" target="_self">
|
||||||
|
<span data-icon="mapeate"></span>
|
||||||
|
<span data-i18n="mapeate">Mapeate</span>
|
||||||
|
</a></li>
|
||||||
<li data-i18n="mapeate_git" title="Mapeate - Git" data-i18n-without="true"><a href="https://git.k3y.pw/CaritasSantaCruz/Mapeate" target="_blank">
|
<li data-i18n="mapeate_git" title="Mapeate - Git" data-i18n-without="true"><a href="https://git.k3y.pw/CaritasSantaCruz/Mapeate" target="_blank">
|
||||||
<span data-icon="git"></span>
|
<span data-icon="git"></span>
|
||||||
<span data-i18n="git">Git</span>
|
<span data-i18n="git">Git</span>
|
||||||
@ -139,6 +143,7 @@
|
|||||||
<h2 data-i18n="en_construccion">En construcción...</h2>
|
<h2 data-i18n="en_construccion">En construcción...</h2>
|
||||||
<p data-i18n="en_construcion_text">Actualmente, este proyecto se encuentra en construcción. Os invitamos a seguir el desarrollo de dicho proyecto mediante los siguientes Links:</p>
|
<p data-i18n="en_construcion_text">Actualmente, este proyecto se encuentra en construcción. Os invitamos a seguir el desarrollo de dicho proyecto mediante los siguientes Links:</p>
|
||||||
<ul>
|
<ul>
|
||||||
|
<li data-i18n="web_app" title="Aplicación Web" data-i18n-without="true"><a href="app.html" target="_self">https://mapeate.k3y.pw/app.html (Aplicación Web)</a></li>
|
||||||
<li data-i18n="git" title="Git" data-i18n-without="true"><a href="https://mapeate.k3y.pw/" target="_blank">https://mapeate.k3y.pw/</a><ul>
|
<li data-i18n="git" title="Git" data-i18n-without="true"><a href="https://mapeate.k3y.pw/" target="_blank">https://mapeate.k3y.pw/</a><ul>
|
||||||
<li data-i18n="test_mapas" title="Pruebas de mapas SVG" data-i18n-without="true"><a href="https://mapeate.local/tests/mapa.test.html">https://mapeate.local/tests/mapa.test.html</a></li>
|
<li data-i18n="test_mapas" title="Pruebas de mapas SVG" data-i18n-without="true"><a href="https://mapeate.local/tests/mapa.test.html">https://mapeate.local/tests/mapa.test.html</a></li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
|
21
Public/json/Mapeate.configuracion.json
Normal file
21
Public/json/Mapeate.configuracion.json
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"nulos" : false,
|
||||||
|
"valor_por_defecto" : null,
|
||||||
|
"autoiniciar" : true,
|
||||||
|
"archivos_de_configuracion_por_defecto" : [
|
||||||
|
"/json/Mapeate.configuracion.json",
|
||||||
|
"/json/Mapeate.configuracion.secretos.json"
|
||||||
|
],
|
||||||
|
"texto_por_defecto" : "",
|
||||||
|
"configuracion_sobreescribir" : false,
|
||||||
|
"i18n_sobreescribir" : false,
|
||||||
|
"formato_terminal" : "[{tipo}] {yyyy}{mm}{dd} {hh}{ii}{ss}: {mensaje}",
|
||||||
|
"terminal_tipos_por_defecto" : [
|
||||||
|
["unkn", "unknown", "desconocido"],
|
||||||
|
[" ok ", "ok", "si", "correcto"],
|
||||||
|
["warn", "warning", "aviso", "advertencia"],
|
||||||
|
["erro", "error", "incrrecto"],
|
||||||
|
["fail", "failure", "fallo"],
|
||||||
|
["exce", "excepcion"]
|
||||||
|
]
|
||||||
|
}
|
@ -4,9 +4,12 @@
|
|||||||
|
|
||||||
## Idea
|
## Idea
|
||||||
|
|
||||||
Este proyecto pretende ser un proyecto de un juego de geografía para aprender países, capitales, provincias, condados, etc. Vía Web en HTML5, ECMAScript 2015 y SASS/CSS. Este proyecto se basa en otro proyecto ya existente en SWF (Proyecto Flash) de la Universidad de Navarra, creo. El problema es que actualmente, las aplicaciones Flash en SWF están obsoletas por lo que ya no se puede hacer uso de éstas de una forma adecuada, incluso con el uso de Ruffle u otros emuladores o alternativas al Flash Player, eso sin mencionar con las fallas de seguridad ante este tipo de ficheros.
|
Este proyecto pretende ser un proyecto de un juego de geografía para aprender países, capitales, provincias, condados, etc. Vía Web en HTML5, ECMAScript 2015 y SASS/CSS. Este proyecto se basa en otro proyecto ya existente en SWF (Proyecto Flash) de MEC (antiguo Ministerio de Educación y Cultura) el cual ya no es accesible. El problema es que actualmente, las aplicaciones Flash en SWF están obsoletas por lo que ya no se puede hacer uso de éstas de una forma adecuada, incluso con el uso de Ruffle u otros emuladores o alternativas al Flash Player, eso sin mencionar con las fallas de seguridad ante este tipo de ficheros.
|
||||||
|
|
||||||
> Hay que intentar localizar el proyecto original pues creo que auinque tengan licencia MIT, estaría muy guay nombrar el proyecto del cual se basa éste.
|
> KyMAN: Al principio pensé que era de la Universidad de Navarra pero me equivoqué, lo hizo una persona llamada Enrique Alonso en memoria de su hija Margarita Alonso Porta, quien ayudó en el diseño y falleció en 2012. Más información en los enlaces cacheados del Wayback Machine de archive.org. La visualización del contenido puede ser ofrecida parcialmente mediante Ruffle.
|
||||||
|
|
||||||
|
- http://serbal.pntic.mec.es/ealg0027/mapasflash.htm
|
||||||
|
- https://web.archive.org/web/20161119001253/http://serbal.pntic.mec.es/ealg0027/mapasflash.htm
|
||||||
|
|
||||||
## Primeros pasos
|
## Primeros pasos
|
||||||
|
|
||||||
|
3
doc/presentacion.md
Normal file
3
doc/presentacion.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Presentación
|
||||||
|
|
||||||
|
Este documento explicará una idea básica de lo que se pretende con este proyecto
|
Loading…
Reference in New Issue
Block a user