Added more things to dashboard
This commit is contained in:
@@ -384,4 +384,72 @@ async function deleteAssociation(assocId, projectId) {
|
||||
await apiRequest(`/api/association?id=${assocId}`, 'DELETE');
|
||||
await reloadAssociationTable(projectId);
|
||||
}
|
||||
}
|
||||
|
||||
async function handleDashboardView() {
|
||||
const locTbody = document.getElementById('dash-locations-body');
|
||||
const projTbody = document.getElementById('dash-projects-body');
|
||||
if (!locTbody && !projTbody) return;
|
||||
|
||||
try {
|
||||
const locData = await apiRequest('/api/location');
|
||||
if (locTbody && locData && locData.locations) {
|
||||
locTbody.innerHTML = '';
|
||||
if (locData.locations.length === 0) {
|
||||
locTbody.innerHTML = '<tr><td style="color: var(--text-muted); padding: 1rem;">No locations found.</td></tr>';
|
||||
} else {
|
||||
locData.locations.forEach(loc => {
|
||||
const tr = document.createElement('tr');
|
||||
tr.innerHTML = `<td style="cursor: pointer; color: var(--accent); font-weight: 500; padding: 0.75rem 1rem;">${loc.name}</td>`;
|
||||
tr.onclick = () => openDashboardModal(`/api/location?id=${loc.id}&content=true`, `Items in ${loc.name}`, 'contents');
|
||||
locTbody.appendChild(tr);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const projData = await apiRequest('/api/project');
|
||||
if (projTbody && projData && projData.projects) {
|
||||
projTbody.innerHTML = '';
|
||||
if (projData.projects.length === 0) {
|
||||
projTbody.innerHTML = '<tr><td style="color: var(--text-muted); padding: 1rem;">No projects found.</td></tr>';
|
||||
} else {
|
||||
projData.projects.forEach(p => {
|
||||
const tr = document.createElement('tr');
|
||||
tr.innerHTML = `<td style="cursor: pointer; color: var(--accent); font-weight: 500; padding: 0.75rem 1rem;">${p.name}</td>`;
|
||||
tr.onclick = () => openDashboardModal(`/api/project?id=${p.id}&details=true`, `Items assigned to ${p.name}`, 'items');
|
||||
projTbody.appendChild(tr);
|
||||
});
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
}
|
||||
|
||||
async function openDashboardModal(url, title, dataKey) {
|
||||
document.getElementById('dash-modal-title').innerText = title;
|
||||
const tbody = document.getElementById('dash-modal-body');
|
||||
if (!tbody) return;
|
||||
tbody.innerHTML = '<tr><td colspan="2" style="text-align:center; padding:1.5rem; color:var(--text-muted);">Loading...</td></tr>';
|
||||
document.getElementById('dash-details-modal').classList.add('show');
|
||||
|
||||
try {
|
||||
const data = await apiRequest(url);
|
||||
tbody.innerHTML = '';
|
||||
const list = data[dataKey] || [];
|
||||
if (list.length === 0) {
|
||||
tbody.innerHTML = '<tr><td colspan="2" style="color:var(--text-muted); text-align:center; padding:1.5rem;">No active items found.</td></tr>';
|
||||
return;
|
||||
}
|
||||
list.forEach(i => {
|
||||
tbody.innerHTML += `
|
||||
<tr>
|
||||
<td style="color:var(--text); padding:0.75rem 1rem;">${i.item_name}</td>
|
||||
<td style="text-align:right; padding:0.75rem 1rem;"><span class="badge success">${i.quantity}</span></td>
|
||||
</tr>
|
||||
`;
|
||||
});
|
||||
} catch (e) {
|
||||
tbody.innerHTML = '<tr><td colspan="2" style="color:var(--error); text-align:center; padding:1.5rem;">Failed to load data.</td></tr>';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user