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(); };