|
var ship = { |
|
// (A) HELPER - AJAX FETCH |
|
fetch : (req, data, after) => { |
|
// (A1) FORM DATA |
|
let form = new FormData(data instanceof HTMLElement ? data : undefined); |
|
form.append("req", req); |
|
if (data!=null && !(data instanceof HTMLElement)) { |
|
for (let [k,v] of Object.entries(data)) { form.append(k, v); } |
|
} |
|
|
|
// (A2) DO FETCH |
|
fetch("3-ajax-ship.php", { method : "POST", body : form }) |
|
.then(res => res.text()) |
|
.then(txt => after(txt)) |
|
.catch(err => console.error(err)); |
|
}, |
|
|
|
// (B) INITIALIZE |
|
hListW : null, // html shipment list wrapper |
|
hList : null, // html shipment list |
|
hAdd : null, // html add shipment form |
|
hStat : null, // html shipment status form |
|
hsID : null, // html update status id |
|
hsCode : null, // html update status code |
|
init : () => { |
|
// (B1) GET HTML ELEMENTS |
|
ship.hListW = document.getElementById("listWrap"); |
|
ship.hList = document.getElementById("listShip"); |
|
ship.hAdd = document.getElementById("formAdd"); |
|
ship.hStat = document.getElementById("formStat"); |
|
ship.hsID = document.getElementById("statID"); |
|
ship.hsCode = document.getElementById("statCode"); |
|
|
|
// (B2) DRAW SHIPMENT LIST |
|
ship.draw(); |
|
}, |
|
|
|
// (C) DRAW SHIPMENT LIST |
|
draw : () => { |
|
ship.hList.innerHTML = ""; |
|
ship.fetch("getAll", null, data => { |
|
JSON.parse(data).forEach(s => { |
|
let row = document.createElement("div"); |
|
row.className = "row flex"; |
|
row.innerHTML = |
|
`<div class="rowInfo flexGrow"> |
|
<div class="rFrom"> |
|
<strong>Sender</strong><br> |
|
<div>${s.send_name} ${s.send_address}</div> |
|
</div> |
|
<div class="rTo"> |
|
<strong>Recipient</strong><br> |
|
<div>${s.recv_name} ${s.recv_address}</div> |
|
</div> |
|
<span class="rStat${s.ship_status==0?" red":""}"> |
|
${stat[s.ship_status]} |
|
</span> |
|
</div> |
|
<a class="mi" target="_blank" href="5a-print.php?id=${s.ship_id}">print</a> |
|
<button class="mi" onclick="ship.toggle(2, ${s.ship_id})">update</button>`; |
|
ship.hList.appendChild(row); |
|
}); |
|
}); |
|
}, |
|
|
|
// (D) TOGGLE SHIPMENT SCREENS |
|
toggle : (show, id) => { |
|
// (D1) SHOW SHIPMENT LIST |
|
if (show==0) { |
|
ship.hListW.classList.remove("hide"); |
|
ship.hAdd.classList.add("hide"); |
|
ship.hStat.classList.add("hide"); |
|
} |
|
|
|
// (D2) SHOW ADD SHIPMENT |
|
else if (show==1) { |
|
ship.hAdd.reset(); |
|
ship.hListW.classList.add("hide"); |
|
ship.hAdd.classList.remove("hide"); |
|
ship.hStat.classList.add("hide"); |
|
} |
|
|
|
// (D3) SHOW UPDATE SHIPMENT STATUS |
|
else { |
|
ship.fetch("get", { id : id }, data => { |
|
data = JSON.parse(data); |
|
ship.hStat.reset(); |
|
ship.hsID.value = id; |
|
ship.hsCode.value = data["ship_status"]; |
|
ship.hListW.classList.add("hide"); |
|
ship.hAdd.classList.add("hide"); |
|
ship.hStat.classList.remove("hide"); |
|
}); |
|
} |
|
}, |
|
|
|
// (E) SAVE NEW SHIPMENT |
|
add : () => { |
|
ship.fetch("add", ship.hAdd, res => { |
|
if (res == "OK") { |
|
ship.draw(); |
|
ship.toggle(0); |
|
} else { alert(res); } |
|
}); |
|
return false; |
|
}, |
|
|
|
// (F) UPDATE SHIPMENT STATUS |
|
stat : () => { |
|
ship.fetch("stat", ship.hStat, res => { |
|
if (res == "OK") { |
|
ship.draw(); |
|
ship.toggle(0); |
|
} else { alert(res); } |
|
}); |
|
return false; |
|
} |
|
}; |
|
window.onload = ship.init; |