99 lines
2.6 KiB
JavaScript
99 lines
2.6 KiB
JavaScript
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();
|
|
|
|
}; |