78 lines
3.2 KiB
JavaScript
78 lines
3.2 KiB
JavaScript
import { a as attr, e as escape_html, b as ensure_array_like, c as attr_class, s as stringify } from "../../../chunks/index2.js";
|
|
function _page($$renderer, $$props) {
|
|
$$renderer.component(($$renderer2) => {
|
|
let logs = [];
|
|
let loading = true;
|
|
let error = "";
|
|
let filter = "";
|
|
let hours = 1;
|
|
async function loadLogs() {
|
|
loading = true;
|
|
error = "";
|
|
try {
|
|
const res = await fetch(`/api/logs?hours=${hours}&filter=${encodeURIComponent(filter)}`);
|
|
if (res.ok) {
|
|
const data = await res.json();
|
|
logs = data.data || [];
|
|
} else {
|
|
error = "Failed to load logs";
|
|
}
|
|
} catch (e) {
|
|
error = "Connection error";
|
|
console.error("Failed to load logs:", e);
|
|
} finally {
|
|
loading = false;
|
|
}
|
|
}
|
|
function getPriorityClass(priority) {
|
|
const p = priority.toLowerCase();
|
|
if (p === "err" || p === "error") return "error";
|
|
if (p === "warning" || p === "warn") return "warning";
|
|
if (p === "info") return "info";
|
|
return "";
|
|
}
|
|
$$renderer2.push(`<div class="header svelte-1lsf4ps"><h2>Mail Logs</h2> <div class="controls svelte-1lsf4ps"><label class="svelte-1lsf4ps">Hours: `);
|
|
$$renderer2.select(
|
|
{ value: hours, onchange: loadLogs, class: "" },
|
|
($$renderer3) => {
|
|
$$renderer3.option({ value: 1 }, ($$renderer4) => {
|
|
$$renderer4.push(`Last hour`);
|
|
});
|
|
$$renderer3.option({ value: 6 }, ($$renderer4) => {
|
|
$$renderer4.push(`Last 6 hours`);
|
|
});
|
|
$$renderer3.option({ value: 24 }, ($$renderer4) => {
|
|
$$renderer4.push(`Last 24 hours`);
|
|
});
|
|
$$renderer3.option({ value: 48 }, ($$renderer4) => {
|
|
$$renderer4.push(`Last 48 hours`);
|
|
});
|
|
},
|
|
"svelte-1lsf4ps"
|
|
);
|
|
$$renderer2.push(`</label> <label class="svelte-1lsf4ps">Filter: <input type="text"${attr("value", filter)} placeholder="Filter logs..." class="svelte-1lsf4ps"/></label> <button class="svelte-1lsf4ps">Refresh</button></div></div> `);
|
|
if (loading) {
|
|
$$renderer2.push("<!--[0-->");
|
|
$$renderer2.push(`<p>Loading...</p>`);
|
|
} else if (error) {
|
|
$$renderer2.push("<!--[1-->");
|
|
$$renderer2.push(`<p class="error svelte-1lsf4ps">${escape_html(error)}</p>`);
|
|
} else if (logs.length === 0) {
|
|
$$renderer2.push("<!--[2-->");
|
|
$$renderer2.push(`<p>No log entries found.</p>`);
|
|
} else {
|
|
$$renderer2.push("<!--[-1-->");
|
|
$$renderer2.push(`<div class="log-container svelte-1lsf4ps"><!--[-->`);
|
|
const each_array = ensure_array_like(logs);
|
|
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
|
|
let entry = each_array[$$index];
|
|
$$renderer2.push(`<div${attr_class(`log-entry ${stringify(getPriorityClass(entry.priority))}`, "svelte-1lsf4ps")}><span class="timestamp svelte-1lsf4ps">${escape_html(entry.timestamp)}</span> <span class="priority svelte-1lsf4ps">[${escape_html(entry.priority)}]</span> <span class="message">${escape_html(entry.message)}</span></div>`);
|
|
}
|
|
$$renderer2.push(`<!--]--></div>`);
|
|
}
|
|
$$renderer2.push(`<!--]-->`);
|
|
});
|
|
}
|
|
export {
|
|
_page as default
|
|
};
|