APPLICATION_COMMIT_1

This commit is contained in:
2026-07-17 14:58:24 -03:00
parent 7583ef25a4
commit 87c7990d89
15 changed files with 352 additions and 1 deletions

View File

@@ -0,0 +1,18 @@
const message = document.querySelector('#message');
async function api(path, options = {}) {
const response = await fetch(path, {headers: {'Content-Type': 'application/json'}, ...options});
if (!response.ok) throw new Error((await response.json().catch(() => ({}))).error || `HTTP ${response.status}`);
return response.json();
}
async function refresh() {
try {
const items = await api('/api/requests');
document.querySelector('#rows').innerHTML = items.map(item => `<tr><td>${item.pdbName}</td><td>${item.storageGb}</td><td>${item.requestedBy}</td><td>${item.status}</td><td>${item.status === 'PENDING' ? `<button onclick="approve('${item.id}')">Aprovar</button>` : ''}</td></tr>`).join('');
} catch (error) { message.textContent = error.message; }
}
async function approve(id) { try { await api(`/api/requests/${id}/approve`, {method: 'POST'}); message.textContent = 'Provisionamento submetido à OCI.'; refresh(); } catch (error) { message.textContent = error.message; } }
document.querySelector('#request').addEventListener('submit', async event => {
event.preventDefault(); const data = Object.fromEntries(new FormData(event.target)); data.storageGb = Number(data.storageGb);
try { await api('/api/requests', {method: 'POST', body: JSON.stringify(data)}); event.target.reset(); message.textContent = 'Solicitação enviada para aprovação.'; refresh(); } catch (error) { message.textContent = error.message; }
});
document.querySelector('#refresh').addEventListener('click', refresh); refresh();