feat: Erweiterung der Module für Geräte, Stockwerke und Racks mit grundlegenden Funktionen und Strukturen

This commit is contained in:
Troy Grunt
2026-02-06 18:47:25 +01:00
parent 3ec3ad7fa5
commit 98a3f4d5b6
8 changed files with 943 additions and 8 deletions

View File

@@ -1,2 +1,128 @@
<?php
// Stockwerk bearbeiten inkl. SVG-Plan
/**
* app/floors/edit.php
*
* Floor / Stockwerk anlegen oder bearbeiten
* - Name, Beschreibung
* - Zugehörige Räume / Netzwerkdosen
* - SVG-Grundriss laden / speichern
*/
// TODO: bootstrap laden
// require_once __DIR__ . '/../../bootstrap.php';
// TODO: Auth erzwingen
// requireAuth();
// =========================
// Kontext bestimmen
// =========================
// Floor-ID aus GET
// $floorId = (int)($_GET['id'] ?? 0);
// TODO: Floor aus DB laden, falls ID vorhanden
// $floor = null;
// TODO: Räume / Dosen laden, falls Floor existiert
$rooms = []; // TODO: Räume vorbereiten
?>
<h2>Stockwerk bearbeiten</h2>
<form method="post" action="/app/floors/save.php" enctype="multipart/form-data">
<!-- =========================
Basisdaten
========================= -->
<fieldset>
<legend>Allgemein</legend>
<label>
Name<br>
<input type="text" name="name" value="">
<!-- TODO: Name vorbelegen -->
</label>
<br><br>
<label>
Beschreibung<br>
<textarea name="description"></textarea>
<!-- TODO: Beschreibung vorbelegen -->
</label>
</fieldset>
<!-- =========================
Räume / Netzwerkdosen
========================= -->
<fieldset>
<legend>Räume / Netzwerkdosen</legend>
<p class="hint">
Räume hinzufügen / bearbeiten. Netzwerkdosen können einzeln nummeriert / benannt werden.
</p>
<div class="room-list">
<!-- TODO: Räume auflisten -->
<!-- TODO: Netzwerkdosen pro Raum anzeigen -->
</div>
<button type="button" id="add-room">
+ Raum hinzufügen
</button>
</fieldset>
<!-- =========================
SVG Floorplan
========================= -->
<fieldset>
<legend>Grundriss / Floorplan</legend>
<div class="svg-editor-container">
<svg
id="floor-svg"
viewBox="0 0 2000 1000"
width="100%"
height="600"
>
<!-- TODO: Floorplan SVG laden -->
</svg>
</div>
<p class="hint">
Räume und Netzwerkdosen per Drag & Drop platzieren. Nummerierung und Bezeichnungen editierbar.
</p>
</fieldset>
<!-- =========================
Aktionen
========================= -->
<fieldset>
<button type="submit">Speichern</button>
<button type="button" onclick="history.back()">Abbrechen</button>
<!-- TODO: Löschen, falls edit -->
</fieldset>
</form>
<!-- =========================
JS-Konfiguration
========================= -->
<script>
/**
* Konfiguration für Floorplan SVG-Editor
*/
// TODO: Floor-ID aus PHP setzen
// window.FLOOR_ID = <?= (int)$floorId ?>;
// TODO: Räume / Dosen an JS übergeben
// window.ROOMS = <?= json_encode($rooms) ?>;
</script>

View File

@@ -1,2 +1,96 @@
<?php
// Übersicht aller Stockwerke
/**
* app/floors/list.php
*
* Übersicht aller Floors / Stockwerke
* - Anzeigen
* - Bearbeiten
* - Löschen
* - SVG-Vorschau optional
*/
// TODO: bootstrap laden
// require_once __DIR__ . '/../../bootstrap.php';
// TODO: Auth erzwingen
// requireAuth();
// =========================
// Floors laden
// =========================
// TODO: Floors aus DB laden
// $floors = $sql->get("SELECT * FROM floors ORDER BY name", "", []);
?>
<h2>Stockwerke</h2>
<!-- =========================
Toolbar
========================= -->
<div class="toolbar">
<a href="/?page=floors/edit" class="button">
+ Neues Stockwerk
</a>
<!-- TODO: Suchfeld -->
<!-- TODO: Filter (Gebäude / Standort) -->
</div>
<!-- =========================
Floor-Tabelle
========================= -->
<table class="floor-list">
<thead>
<tr>
<th>Vorschau</th>
<th>Name</th>
<th>Beschreibung</th>
<th>Räume</th>
<th>Aktionen</th>
</tr>
</thead>
<tbody>
<?php /* foreach ($floors as $floor): */ ?>
<tr>
<td class="preview">
<!-- TODO: SVG / JPG Thumbnail Floorplan -->
</td>
<td>
<!-- TODO: Name -->
Floor 1
</td>
<td>
<!-- TODO: Beschreibung -->
</td>
<td>
<!-- TODO: Anzahl Räume -->
</td>
<td>
<a href="/?page=floors/edit&id=1">Bearbeiten</a>
<button>Löschen</button>
</td>
</tr>
<?php /* endforeach; */ ?>
</tbody>
</table>
<!-- =========================
Leerer Zustand
========================= -->
<?php /* if (empty($floors)): */ ?>
<div class="empty-state">
<p>Noch keine Stockwerke angelegt.</p>
<p><a href="/?page=floors/edit">Erstes Stockwerk anlegen</a></p>
</div>
<?php /* endif; */ ?>