Merge pull request #116 from LD-Reborn/99-feature-add-groups-view

Improved accessibility, fixed groups update fails when no permissions…
This commit is contained in:
LD50
2025-10-12 16:50:17 +02:00
committed by GitHub

View File

@@ -23,13 +23,13 @@
<table class="table table-striped align-middle">
<thead>
<tr>
<th style="text-align: center">Group</th>
<th style="text-align: center">@T["Can"]:<br/>@T["inventorize"]</th>
<th style="text-align: center">@T["Can"]:<br/>@T["manage users"]</th>
<th style="text-align: center">@T["Can"]:<br/>@T["manage locations"]</th>
<th style="text-align: center">@T["Can"]:<br/>@T["manage assets"]</th>
<th style="text-align: center">@T["Can"]:<br/>@T["manage groups"]</th>
<th style="text-align: center">@T["Action"]</th>
<th class="text-center">Group</th>
<th class="text-center">@T["Can"]:<br/>@T["inventorize"]</th>
<th class="text-center">@T["Can"]:<br/>@T["manage users"]</th>
<th class="text-center">@T["Can"]:<br/>@T["manage locations"]</th>
<th class="text-center">@T["Can"]:<br/>@T["manage assets"]</th>
<th class="text-center">@T["Can"]:<br/>@T["manage groups"]</th>
<th class="text-center">@T["Action"]</th>
</tr>
</thead>
<tbody>
@@ -37,13 +37,13 @@
foreach (GroupsTableViewModel groupTableViewModel in Model.GroupsTableViewModels)
{
<tr>
<td style="text-align: center">@groupTableViewModel.Group</td>
<td style="text-align: center">@(groupTableViewModel.CanInventorize ? "☑️" : "")</td>
<td style="text-align: center">@(groupTableViewModel.CanManageUsers ? "☑️" : "")</td>
<td style="text-align: center">@(groupTableViewModel.CanManageLocations ? "☑️" : "")</td>
<td style="text-align: center">@(groupTableViewModel.CanManageAssets ? "☑️" : "")</td>
<td style="text-align: center">@(groupTableViewModel.CanManageGroups ? "☑️" : "")</td>
<td style="text-align: center">
<td class="text-center">@groupTableViewModel.Group</td>
<td class="text-center @(groupTableViewModel.CanInventorize ? "text-success" : "text-danger")">@(groupTableViewModel.CanInventorize ? "" : "")</td>
<td class="text-center @(groupTableViewModel.CanManageUsers ? "text-success" : "text-danger")">@(groupTableViewModel.CanManageUsers ? "" : "")</td>
<td class="text-center @(groupTableViewModel.CanManageLocations ? "text-success" : "text-danger")">@(groupTableViewModel.CanManageLocations ? "" : "")</td>
<td class="text-center @(groupTableViewModel.CanManageAssets ? "text-success" : "text-danger")">@(groupTableViewModel.CanManageAssets ? "" : "")</td>
<td class="text-center @(groupTableViewModel.CanManageGroups ? "text-success" : "text-danger")">@(groupTableViewModel.CanManageGroups ? "" : "")</td>
<td class="text-center">
<div class="d-flex gap-2 justify-content-center">
<button class="btn btn-sm btn-warning btn-update"
data-group-id="@groupTableViewModel.Cn"
@@ -287,11 +287,11 @@
newRow.innerHTML = `
<td style="text-align: center">${jsonData.Cn}</td>
<td style="text-align: center">${jsonData.Permissions.includes("CanInventorize") ? "☑️" : ""}</td>
<td style="text-align: center">${jsonData.Permissions.includes("CanManageUsers") ? "☑️" : ""}</td>
<td style="text-align: center">${jsonData.Permissions.includes("CanManageLocations") ? "☑️" : ""}</td>
<td style="text-align: center">${jsonData.Permissions.includes("CanManageAssets") ? "☑️" : ""}</td>
<td style="text-align: center">${jsonData.Permissions.includes("CanManageGroups") ? "☑️" : ""}</td>
<td class="text-center ${jsonData.Permissions.includes("CanInventorize") ? "text-success" : "text-danger"}">${jsonData.Permissions.includes("CanInventorize") ? "" : ""}</td>
<td class="text-center ${jsonData.Permissions.includes("CanManageUsers") ? "text-success" : "text-danger"}">${jsonData.Permissions.includes("CanManageUsers") ? "" : ""}</td>
<td class="text-center ${jsonData.Permissions.includes("CanManageLocations") ? "text-success" : "text-danger"}">${jsonData.Permissions.includes("CanManageLocations") ? "" : ""}</td>
<td class="text-center ${jsonData.Permissions.includes("CanManageAssets") ? "text-success" : "text-danger"}">${jsonData.Permissions.includes("CanManageAssets") ? "" : ""}</td>
<td class="text-center ${jsonData.Permissions.includes("CanManageGroups") ? "text-success" : "text-danger"}">${jsonData.Permissions.includes("CanManageGroups") ? "" : ""}</td>
<td style="text-align: center">
<div class="d-flex gap-2 justify-content-center">
<button class="btn btn-sm btn-warning btn-update"
@@ -450,9 +450,12 @@ document.addEventListener('DOMContentLoaded', () => {
permissions.push(element.name.substr(element.name.lastIndexOf(".") + 1));
}
}
if (!jsonData.Description) { // Necessary for when no permissions are selected.
jsonData.Description = {};
}
jsonData.Description.Permissions = permissions;
jsonData.Description.DisplayName = jsonData.DisplayName;
jsonData.DisplayName = null;
jsonData.DisplayName = null;
try {
const response = await fetch('/Groups/Update', {
method: 'PATCH',
@@ -470,11 +473,40 @@ document.addEventListener('DOMContentLoaded', () => {
.find(r => r.querySelector(`[data-group-id="${jsonData.Cn}"]`));
if (row) {
row.children[0].textContent = jsonData.Description.DisplayName || '';
row.children[1].textContent = jsonData.Description.Permissions.includes("CanInventorize") ? "☑️" : "" || '';
row.children[2].textContent = jsonData.Description.Permissions.includes("CanManageUsers") ? "☑️" : "" || '';
row.children[3].textContent = jsonData.Description.Permissions.includes("CanManageLocations") ? "☑️" : "" || '';
row.children[4].textContent = jsonData.Description.Permissions.includes("CanManageAssets") ? "☑️" : "" || '';
row.children[5].textContent = jsonData.Description.Permissions.includes("CanManageGroups") ? "☑️" : "" || '';
row.children[1].textContent = jsonData.Description.Permissions.includes("CanInventorize") ? "" : "" || '';
row.children[2].textContent = jsonData.Description.Permissions.includes("CanManageUsers") ? "" : "" || '';
row.children[3].textContent = jsonData.Description.Permissions.includes("CanManageLocations") ? "" : "" || '';
row.children[4].textContent = jsonData.Description.Permissions.includes("CanManageAssets") ? "" : "" || '';
row.children[5].textContent = jsonData.Description.Permissions.includes("CanManageGroups") ? "" : "" || '';
if (jsonData.Description.Permissions.includes("CanInventorize")) {
row.children[1].className = "text-center text-success";
} else {
row.children[1].className = "text-center text-danger";
}
if (jsonData.Description.Permissions.includes("CanManageUsers")) {
row.children[2].className = "text-center text-success";
} else {
row.children[2].className = "text-center text-danger";
}
if (jsonData.Description.Permissions.includes("CanManageLocations")) {
row.children[3].className = "text-center text-success";
} else {
row.children[3].className = "text-center text-danger";
}
if (jsonData.Description.Permissions.includes("CanManageAssets")) {
row.children[4].className = "text-center text-success";
} else {
row.children[4].className = "text-center text-danger";
}
if (jsonData.Description.Permissions.includes("CanManageGroups")) {
row.children[5].className = "text-center text-success";
} else {
row.children[5].className = "text-center text-danger";
}
}
} else {
showToast(result.reason || 'Error updating group', 'danger');