Mapeate/Public/ecma/Mapeate.Mapas.Selector.ecma.js

99 lines
2.6 KiB
JavaScript
Raw Normal View History

Mapeate.Mapas.Selector = function(mapeate, entradas){
const self = this;
let iniciado = false;
const constructor = () => {
mapeate.print("info", "mapeate_mapas_selector_construyendose");
mapeate.print("ok", "mapeate_mapas_selector_construido");
};
this.iniciar = callback => {
const terminar = estado => typeof callback == "function" && callback(estado);
mapeate.print("info", "mapeate_mapas_selector_iniciando");
if(iniciado){
mapeate.print("warn", "mapeate_mapas_selector_ya_iniciado");
terminar(false);
return false;
};
iniciado = true;
mapeate.print("ok", "mapeate_mapas_selector_iniciado");
terminar(true);
return true;
};
this.crear_lista = () => Object.keys(mapeate.mapas.coger_todos()).map(clave => {
const mapa = mapeate.mapas.coger(clave);
return mapeate.string_variables(mapeate.vistas.coger("elemento_seleccion_mapa"), {
...mapa,
nombre_objeto : mapeate.nombre_objeto,
nombre : clave,
nombre_texto : mapeate.i18n(clave),
objetivos : mapa.objetivos || Object.keys(mapa.elementos).length
});
}).join("");
this.seleccionar = (elemento, evento) => {
let error = (
elemento === undefined ? 1 << 0 :
elemento === null ? 1 << 1 :
typeof elemento != "object" ? 1 << 2 :
!(elemento.tagName || elemento.nodeName) ? 1 << 3 :
!elemento.hasAttribute("data-i18n") ? 1 << 4 :
0) << 1;
console.log(["A", error]);
if(error)
return;
let clave = elemento.getAttribute("data-i18n");
const mapa_datos = mapeate.mapas.coger(clave);
error = (
clave === undefined ? 1 << 0 :
clave === null ? 1 << 1 :
typeof clave != "string" ? 1 << 2 :
!clave ? 1 << 3 :
!(clave = clave.trim()) ? 1 << 4 :
mapa_datos === undefined ? 1 << 5 :
mapa_datos === null ? 1 << 6 :
0) << 1;
console.log(["B", error]);
if(error)
return;
const mapa = {
nombre : clave,
...mapa_datos,
datos : mapeate.mapas.cache(mapa_datos.url)
};
if(!mapa.datos)
mapeate.leer_archivo(mapa_datos.url, datos => {
mapeate.mapas.cache(mapa_datos.url, datos);
mapa.datos = datos;
console.log(mapa);
});
else
console.log(mapa);
};
constructor();
};