WIP: device löschen

This commit is contained in:
2026-02-13 11:55:18 +01:00
parent 0a7505416e
commit 39f7f9b733
6 changed files with 182 additions and 19 deletions

View File

@@ -62,8 +62,29 @@ $whereSql = $where ? 'WHERE ' . implode(' AND ', $where) : '';
d.web_config_url,
dt.name AS device_type,
dt.image_path,
f.name AS floor_name,
r.name AS rack_name
f.name AS floor_name,
r.name AS rack_name,
(
SELECT COUNT(*)
FROM device_ports dp
WHERE dp.device_id = d.id
) AS port_count,
(
SELECT COUNT(*)
FROM device_port_modules dpm
JOIN device_ports dp2 ON dp2.id = dpm.device_port_id
WHERE dp2.device_id = d.id
) AS module_count,
(
SELECT COUNT(*)
FROM connections c
WHERE (c.port_a_type = 'device' AND c.port_a_id IN (
SELECT dp3.id FROM device_ports dp3 WHERE dp3.device_id = d.id
))
OR (c.port_b_type = 'device' AND c.port_b_id IN (
SELECT dp4.id FROM device_ports dp4 WHERE dp4.device_id = d.id
))
) AS connection_count
FROM devices d
JOIN device_types dt ON dt.id = d.device_type_id
LEFT JOIN racks r ON r.id = d.rack_id
@@ -201,10 +222,7 @@ $racks = $sql->get("SELECT id, name FROM racks ORDER BY name", "", []);
<td class="actions">
<a href="?module=devices&action=edit&id=<?php echo $d['id']; ?>" class="button button-small">Bearbeiten</a>
<a href="#" class="button button-small button-danger" onclick="confirmDelete(<?php echo $d['id']; ?>)">Löschen</a>
<?php
//TODO löschen geht nicht
?>
<a href="?module=devices&action=delete&id=<?php echo (int)$d['id']; ?>" class="button button-small button-danger" onclick="return confirmDelete(event, <?php echo (int)$d['id']; ?>, <?php echo (int)$d['connection_count']; ?>, <?php echo (int)$d['port_count']; ?>, <?php echo (int)$d['module_count']; ?>)">Löschen</a>
</td>
</tr>
<?php endforeach; ?>
@@ -332,9 +350,37 @@ $racks = $sql->get("SELECT id, name FROM racks ORDER BY name", "", []);
</style>
<script>
function confirmDelete(id) {
if (confirm('Dieses Gerät wirklich löschen?')) {
window.location.href = '?module=devices&action=delete&id=' + encodeURIComponent(id);
function confirmDelete(event, id, connectionCount, portCount, moduleCount) {
if (event && typeof event.preventDefault === 'function') {
event.preventDefault();
}
if (confirm('Dieses Gerät wirklich löschen?')) {
const hasDependencies = (connectionCount > 0) || (portCount > 0) || (moduleCount > 0);
if (hasDependencies) {
const details = [];
if (connectionCount > 0) {
details.push(connectionCount + ' Verbindungen');
}
if (portCount > 0) {
details.push(portCount + ' Ports');
}
if (moduleCount > 0) {
details.push(moduleCount + ' Port-Module');
}
const dependencyMessage = 'Es gibt abhängige Daten (' + details.join(', ') + '). Diese auch löschen?';
if (!confirm(dependencyMessage)) {
return false;
}
window.location.href = '?module=devices&action=delete&id=' + encodeURIComponent(id) + '&force=1';
return false;
}
window.location.href = '?module=devices&action=delete&id=' + encodeURIComponent(id);
return false;
}
return false;
}
</script>