Some fixes

This commit is contained in:
naielv
2025-08-04 20:31:00 +02:00
parent 0ea230e99b
commit f2588fc50f
3 changed files with 41 additions and 87 deletions

View File

@@ -749,8 +749,9 @@ function TS_IndexElement(
config.forEach((key) => { config.forEach((key) => {
switch (key.type) { switch (key.type) {
case "raw": case "raw":
case "text":
const tdRaw = document.createElement("td"); const tdRaw = document.createElement("td");
const rawContent = (data[key.key] || key.default || "").replace( const rawContent = (String(data[key.key]) || key.default || "").replace(
/\n/g, /\n/g,
"<br>" "<br>"
); );
@@ -759,9 +760,8 @@ function TS_IndexElement(
break; break;
case "template": case "template":
const tdCustomTemplate = document.createElement("td"); const tdCustomTemplate = document.createElement("td");
tdCustomTemplate.style.verticalAlign = "top";
tdCustomTemplate.innerHTML = key.format(data);
new_tr.appendChild(tdCustomTemplate); new_tr.appendChild(tdCustomTemplate);
key.template(data, tdCustomTemplate);
break; break;
case "comanda": case "comanda":
const tdComanda = document.createElement("td"); const tdComanda = document.createElement("td");

View File

@@ -121,11 +121,12 @@ PAGES.materiales = {
key: "Cantidad", key: "Cantidad",
label: "Cantidad", label: "Cantidad",
type: "template", type: "template",
template: (data) => { template: (data, element) => {
const min = parseFloat(data.Cantidad_Minima); const min = parseFloat(data.Cantidad_Minima);
const act = parseFloat(data.Cantidad); const act = parseFloat(data.Cantidad);
const style = act < min ? 'style="background-color: lightcoral;"' : ''; const style = act < min ? 'style="background-color: lightcoral;"' : '';
return `<td ${style}>${data.Cantidad || "?"} ${data.Unidad || "?"} - (min. ${data.Cantidad_Minima || "?"})</td>`; element.setAttribute("style", style);
element.innerHTML = `${data.Cantidad || "?"} ${data.Unidad || "?"} - (min. ${data.Cantidad_Minima || "?"})`;
}, },
default: "?" default: "?"
}, },

View File

@@ -125,96 +125,49 @@ PAGES.personas = {
}; };
}, },
index: function () { index: function () {
const tablebody = safeuuid();
var btn_new = safeuuid(); var btn_new = safeuuid();
container.innerHTML = ` container.innerHTML = `
<h1>Personas</h1> <h1>Personas</h1>
<button id="${btn_new}">Nueva Persona</button> <button id="${btn_new}">Nueva Persona</button>
<div id="scrolltable"><table> <div id="tableContainer"></div>
<thead>
<tr>
<th>Nombre</th>
<th>Zona</th>
<th>Puntos</th>
<th>Permisos</th>
</tr>
</thead>
<tbody id="${tablebody}">
</tbody>
</table></div>
`;
tableScroll("#scrolltable"); // id="scrolltable"
var tablebody_EL = document.getElementById(tablebody);
var rows = {};
function render() {
function sorter(a, b) {
if (a.Region.toUpperCase() < b.Region.toUpperCase()) {
return -1;
}
if (a.Region.toUpperCase() > b.Region.toUpperCase()) {
return 1;
}
return 0;
}
var tablebody_EL = document.getElementById(tablebody);
tablebody_EL.innerHTML = "";
// SC_Personas = rows
Object.values(rows)
.sort(sorter)
.forEach((data) => {
var btn_comanda = safeuuid();
var new_tr = document.createElement("tr");
new_tr.innerHTML = `
<td class="TextBorder" style="background-color: ${
data.SC_Anilla
}; text-align: center"><img src="${
data.Foto || "static/ico/user_generic.png"
}" height="50"> <br> ${data.Nombre || ""}</td>
<td>${data.Region || "?"}</td>
<td>${data.Puntos || 0}</td>
<td>${data.Roles || ""}</td>
`; `;
// <button id="${btn_comanda}" class="${PAGES.ventas.navcss}">Nueva venta</button> const config = [
var act = parseFloat(data.Puntos); {
if (act >= 10) { key: "Nombre",
new_tr.style.backgroundColor = "gold"; label: "Nombre",
type: "template",
template: (data, element) => {
element.classList.add("TextBorder");
element.style.backgroundColor = data.SC_Anilla;
element.style.textAlign = "center";
element.innerHTML = `
<img src="${data.Foto || "static/ico/user_generic.png"}" height="50">
<br>${data.Nombre || ""}
`;
} }
new_tr.onclick = () => { },
setUrlHash("personas," + data._key); { key: "Region", label: "Zona", type: "text", default: "?" },
}; { key: "Puntos", label: "Puntos", type: "text", default: "0" },
tablebody_EL.append(new_tr); { key: "Roles", label: "Permisos", type: "text", default: "" }
// document.getElementById(btn_comanda).onclick = (e) => { ];
// setUrlHash("ventas," + data._key);
// if (!e) var e = window.event; TS_IndexElement(
// e.cancelBubble = true; PAGES.personas,
// if (e.stopPropagation) e.stopPropagation(); config,
// }; gun.get(TABLE).get("personas"),
}); document.getElementById("tableContainer"),
(row, data) => {
// Add gold background for high points
const points = parseFloat(data.Puntos);
if (points >= 10) {
row.style.backgroundColor = "gold";
} }
gun },
.get(TABLE) undefined,
.get("personas") true // Enable global search bar
.map() );
.on((data, key, _msg, _ev) => {
EVENTLISTENER = _ev;
function add_row(data, key) {
if (data != null) {
data["_key"] = key;
rows[key] = data;
} else {
delete rows[key];
}
render();
}
if (typeof data == "string") {
SEA.decrypt(data, SECRET, (data) => {
add_row(data, key);
});
} else {
add_row(data, key);
}
});
document.getElementById(btn_new).onclick = () => { document.getElementById(btn_new).onclick = () => {
setUrlHash("personas," + safeuuid("")); setUrlHash("personas," + safeuuid(""));
}; };