From 1e5f1524076483fe8a15df4a3ab60804668bb905 Mon Sep 17 00:00:00 2001 From: selfisekai Date: Sat, 31 Oct 2020 14:40:10 +0100 Subject: [PATCH] package info viewing in modal --- front/src/index.ts | 38 +++++++++++++++++++++++++++++++++++++- front/src/style.scss | 12 ++++++++++++ webroot/index.html | 11 ++++++++++- 3 files changed, 59 insertions(+), 2 deletions(-) diff --git a/front/src/index.ts b/front/src/index.ts index 0fd1707..f5d6b8a 100644 --- a/front/src/index.ts +++ b/front/src/index.ts @@ -238,7 +238,8 @@ const refreshPackages = () => showDetailsAction.innerHTML = "Info"; showDetailsAction.addEventListener("click", async (event) => { - (document.querySelector(".details-box")! as HTMLDivElement).style.display = "block"; + const detailsBox = document.querySelector(".details-box")! as HTMLDivElement; + detailsBox.style.display = "block"; const data = ((event.target as Element).parentNode!.parentNode as HTMLElement).dataset; // maybe this looks like shit, but it works let leafletLoaded = false; @@ -278,6 +279,41 @@ const refreshPackages = () => parseFloat(data.pickupPointLon!), ]).addTo(map!); markers.push(marker); + const openButton = detailsBox.querySelector( + ".modal-card-foot button.is-primary", + )! as HTMLButtonElement; + if (data.status === PackageStatus.READY_TO_PICKUP) { + openButton.removeAttribute("disabled"); + } else { + openButton.setAttribute("disabled", "true"); + } + const infoTable = detailsBox.querySelector(".details-text")! as HTMLTableElement; + // remove previous data from table + Array.from(infoTable.tBodies).forEach((tbody) => tbody.remove()); + ([ + ["Status", "status"], + [ + "Pickup point", + (d) => `${d.pickupPointName} (${d.pickupPointStatus}) +${d.pickupPointDescription} +${d.pickupPointStreet} ${d.pickupPointStreetNumber} +${d.pickupPointProvince} +${d.pickupPointPostCode} ${d.pickupPointCity}`, + ], + ["Sender", "sender"], + ["Open code", "openCode"], + ["Package number", "id"], + ] as [string, string | ((d: typeof data) => string)][]).forEach(([key, value]) => { + const row = infoTable.insertRow(); + const keyCell = row.insertCell(); + keyCell.innerText = key; + const valueCell = row.insertCell(); + if (typeof value === "string") { + valueCell.innerText = `${data[value]}`; + } else { + valueCell.innerText = value(data); + } + }); }); const openAction = document.createElement("a"); diff --git a/front/src/style.scss b/front/src/style.scss index 6901fe5..1bae7e8 100644 --- a/front/src/style.scss +++ b/front/src/style.scss @@ -22,3 +22,15 @@ $family-sans-serif: BlinkMacSystemFont, -apple-system, sans-serif; .error-box-text { font-family: monospace; } + +// bulma pls, why do I have to do this? +@media screen and (max-width: $tablet - 1px) { + .modal-card { + margin-left: 0; + margin-right: 0; + } +} + +.details-text tr td:first-child() { + font-weight: bold; +} diff --git a/webroot/index.html b/webroot/index.html index ab54675..5d0372d 100644 --- a/webroot/index.html +++ b/webroot/index.html @@ -140,7 +140,16 @@