Add result detail API adapter

This commit is contained in:
sas.fajri
2026-04-13 14:55:46 +07:00
parent d34d70ef2e
commit 9a9d4df7ce

View File

@@ -1266,6 +1266,34 @@ async function loadResults(session, search = "") {
return filterResults(term);
}
async function loadResultDetail(session, resultId) {
const fallback = mockResults.find((item) => item.id === resultId) || mockResults[0];
try {
// Inferred from project-specs note about an additional result base path.
const payload = await apiPost(
"/result/getResult",
{
token: session.token,
result_id: resultId,
order_id: resultId,
},
session.token,
);
const rows = extractArray(payload);
if (rows?.length) return normalizeResult(rows[0], 0);
if (payload && typeof payload === "object") {
return {
...fallback,
...normalizeResult(payload, 0),
id: resultId || fallback.id,
};
}
} catch {
// Fall through to local seed data when the upstream result API is unavailable.
}
return fallback;
}
async function loadFpp(session, group = "All") {
try {
const payload = await apiPost("/Fpp/load/1/1", { token: session.token }, session.token);
@@ -1553,6 +1581,15 @@ function fragmentPesanKhusus(orderId) {
`;
}
async function fragmentResultDetail(session, resultId) {
const result = await loadResultDetail(session, resultId);
return `
<div id="result-detail-fragment">
${renderResultDetail(result)}
</div>
`;
}
async function renderRoute(req, res, url) {
const path = url.pathname;
const query = Object.fromEntries(url.searchParams.entries());
@@ -1774,8 +1811,7 @@ async function renderRoute(req, res, url) {
if (path.startsWith("/results/") && isGet) {
if (!requireAuth(req, res)) return;
const resultId = path.split("/")[2];
const results = await loadResults(session, query.search || "");
const result = results.find((item) => item.id === resultId) || mockResults.find((item) => item.id === resultId) || mockResults[0];
const result = await loadResultDetail(session, resultId);
html(res, 200, resultDetailPage(result));
return;
}
@@ -1814,6 +1850,13 @@ async function renderRoute(req, res, url) {
return;
}
if (path.startsWith("/fragments/results/detail/") && isGet) {
if (!requireAuth(req, res)) return;
const resultId = path.split("/")[4] || mockResults[0].id;
html(res, 200, await fragmentResultDetail(session, resultId));
return;
}
if (path.startsWith("/api/") && isGet) {
json(res, 200, { ok: true });
return;