PERMS["personas"] = "Personas"; PERMS["personas:edit"] = "> Editar"; PAGES.personas = { navcss: "btn3", icon: "static/appico/users.png", AccessControl: true, Title: "Personas", edit: function (mid) { if (!checkRole("personas:edit")) { setUrlHash("personas"); return; } var nameh1 = safeuuid(); var permisosdet = safeuuid(); var field_nombre = safeuuid(); var field_zona = safeuuid(); var field_notas = safeuuid(); var field_anilla = safeuuid(); var field_foto = safeuuid(); var render_foto = safeuuid(); var field_monedero_balance = safeuuid(); var field_monedero_notas = safeuuid(); var btn_guardar = safeuuid(); var btn_borrar = safeuuid(); var btn_ver_monedero = safeuuid(); container.innerHTML = `

Persona

${BuildQR("personas," + mid, "Esta Persona")}
Permisos
đŸ’³ Tarjeta Monedero
đŸ”— Generar enlaces

`; var resized = ""; var pdel = document.getElementById(permisosdet); DB.get('personas', mid).then((data) => { function load_data(data, ENC = "") { document.getElementById(nameh1).innerText = mid; var pot = ""; document.getElementById(field_nombre).value = data["Nombre"] || ""; document.getElementById(field_zona).value = data["Region"] || ""; document.getElementById(field_anilla).value = data["SC_Anilla"] || ""; // set fallback image immediately document.getElementById(render_foto).src = data["Foto"] || "static/ico/user_generic.png"; resized = data["Foto"] || "static/ico/user_generic.png"; // try to load attachment 'foto' if present (preferred storage) DB.getAttachment('personas', mid, 'foto').then((durl) => { if (durl) { document.getElementById(render_foto).src = durl; resized = durl; } }).catch(() => {}); document.getElementById(field_notas).value = data["markdown"] || ""; document.getElementById(field_monedero_balance).value = data["Monedero_Balance"] || 0; document.getElementById(field_monedero_notas).value = data["Monedero_Notas"] || ""; } if (typeof data == "string") { TS_decrypt(data, SECRET, (data, wasEncrypted) => { load_data(data, "%E"); }, 'personas', mid); } else { load_data(data || {}); } }); document.getElementById(field_foto).addEventListener("change", function (e) { const file = e.target.files[0]; if (!file) return; // Do NOT resize — keep original uploaded image const reader = new FileReader(); reader.onload = function (ev) { const url = ev.target.result; document.getElementById(render_foto).src = url; resized = url; }; reader.readAsDataURL(file); }); document.getElementById(btn_guardar).onclick = () => { var dt = new FormData(pdel); var data = { Nombre: document.getElementById(field_nombre).value, Region: document.getElementById(field_zona).value, Roles: dt.getAll("perm").join(",") + ",", SC_Anilla: document.getElementById(field_anilla).value, // Foto moved to PouchDB attachment named 'foto' markdown: document.getElementById(field_notas).value, Monedero_Balance: parseFloat(document.getElementById(field_monedero_balance).value) || 0, Monedero_Notas: document.getElementById(field_monedero_notas).value, }; document.getElementById("actionStatus").style.display = "block"; DB.put('personas', mid, data).then(() => { // if resized is a data URL (new/updated image), save as attachment var attachPromise = Promise.resolve(true); if (typeof resized === 'string' && resized.indexOf('data:') === 0) { attachPromise = DB.putAttachment('personas', mid, 'foto', resized, 'image/png'); } attachPromise.then(() => { toastr.success("Guardado!"); setTimeout(() => { document.getElementById("actionStatus").style.display = "none"; setUrlHash("personas"); }, SAVE_WAIT); }).catch((e) => { console.warn('putAttachment error', e); document.getElementById("actionStatus").style.display = "none"; }); }).catch((e) => { console.warn('DB.put error', e); document.getElementById("actionStatus").style.display = "none"; }); }; document.getElementById(btn_ver_monedero).onclick = () => { setUrlHash("pagos"); // Navigate to pagos and show transactions for this person }; document.getElementById(btn_borrar).onclick = () => { if (confirm("¿Quieres borrar esta persona?") == true) { DB.del('personas', mid).then(() => { toastr.error("Borrado!"); setTimeout(() => { setUrlHash("personas"); }, SAVE_WAIT); }); } }; }, index: function () { if (!checkRole("personas")) { setUrlHash("index"); return; } var btn_new = safeuuid(); container.innerHTML = `

Personas

`; const config = [ { label: "Persona", type: "persona", self: true, }, //{ key: "Roles", label: "Permisos", type: "text", default: "" } ]; TS_IndexElement( "personas", config, "personas", document.getElementById("tableContainer"), undefined, undefined, true // Enable global search bar ); if (!checkRole("personas:edit")) { document.getElementById(btn_new).style.display = "none"; } else { document.getElementById(btn_new).onclick = () => { setUrlHash("personas," + safeuuid("")); }; } }, };