feat: Erweiterung der Module für Geräte, Stockwerke und Racks mit grundlegenden Funktionen und Strukturen
This commit is contained in:
@@ -1,2 +1,131 @@
|
||||
<?php
|
||||
// Rack anlegen oder bearbeiten
|
||||
/**
|
||||
* app/racks/edit.php
|
||||
*
|
||||
* Rack anlegen oder bearbeiten
|
||||
* - Name, Beschreibung
|
||||
* - Zugehöriges Stockwerk (Floor)
|
||||
* - Höhe / Slots
|
||||
* - Gerätepositionen (optional Vorschau)
|
||||
*/
|
||||
|
||||
// TODO: bootstrap laden
|
||||
// require_once __DIR__ . '/../../bootstrap.php';
|
||||
|
||||
// TODO: Auth erzwingen
|
||||
// requireAuth();
|
||||
|
||||
// =========================
|
||||
// Kontext bestimmen
|
||||
// =========================
|
||||
|
||||
// Rack-ID aus GET
|
||||
// $rackId = (int)($_GET['id'] ?? 0);
|
||||
|
||||
// TODO: Rack aus DB laden, falls ID vorhanden
|
||||
// $rack = null;
|
||||
|
||||
// TODO: Floors laden für Auswahl
|
||||
// $floors = $sql->get("SELECT * FROM floors ORDER BY name", "", []);
|
||||
|
||||
?>
|
||||
|
||||
<h2>Rack bearbeiten</h2>
|
||||
|
||||
<form method="post" action="/app/racks/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>
|
||||
|
||||
<!-- =========================
|
||||
Zugehöriges Floor
|
||||
========================= -->
|
||||
|
||||
<fieldset>
|
||||
<legend>Stockwerk / Standort</legend>
|
||||
|
||||
<label>
|
||||
Stockwerk<br>
|
||||
<select name="floor_id">
|
||||
<!-- TODO: Floors aus DB -->
|
||||
</select>
|
||||
</label>
|
||||
|
||||
<br><br>
|
||||
|
||||
<label>
|
||||
Höhe (Anzahl U)<br>
|
||||
<input type="number" name="height" value="">
|
||||
<!-- TODO: Höhe vorbelegen -->
|
||||
</label>
|
||||
</fieldset>
|
||||
|
||||
<!-- =========================
|
||||
Rack-SVG / Gerätepositionen
|
||||
========================= -->
|
||||
|
||||
<fieldset>
|
||||
<legend>Rack-Layout</legend>
|
||||
|
||||
<div class="svg-editor-container">
|
||||
<svg
|
||||
id="rack-svg"
|
||||
viewBox="0 0 200 1000"
|
||||
width="100%"
|
||||
height="600"
|
||||
>
|
||||
<!-- TODO: Rack-SVG laden -->
|
||||
</svg>
|
||||
</div>
|
||||
|
||||
<p class="hint">
|
||||
Geräte per Drag & Drop im Rack positionieren.
|
||||
</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 Rack-SVG-Editor
|
||||
*/
|
||||
|
||||
// TODO: Rack-ID aus PHP setzen
|
||||
// window.RACK_ID = <?= (int)$rackId ?>;
|
||||
|
||||
// TODO: Gerätepositionen an JS übergeben
|
||||
// window.RACK_DEVICES = <?= json_encode($rackDevices ?? []) ?>;
|
||||
</script>
|
||||
|
||||
@@ -1,2 +1,102 @@
|
||||
<?php
|
||||
// Übersicht aller Racks
|
||||
/**
|
||||
* app/racks/list.php
|
||||
*
|
||||
* Übersicht aller Racks
|
||||
* - Anzeigen
|
||||
* - Bearbeiten
|
||||
* - Löschen
|
||||
* - Zugehöriges Floor anzeigen
|
||||
* - SVG-Vorschau optional
|
||||
*/
|
||||
|
||||
// TODO: bootstrap laden
|
||||
// require_once __DIR__ . '/../../bootstrap.php';
|
||||
|
||||
// TODO: Auth erzwingen
|
||||
// requireAuth();
|
||||
|
||||
// =========================
|
||||
// Racks laden
|
||||
// =========================
|
||||
|
||||
// TODO: Racks aus DB laden
|
||||
// $racks = $sql->get("SELECT r.*, f.name AS floor_name FROM racks r LEFT JOIN floors f ON r.floor_id = f.id ORDER BY r.name", "", []);
|
||||
|
||||
?>
|
||||
|
||||
<h2>Racks</h2>
|
||||
|
||||
<!-- =========================
|
||||
Toolbar
|
||||
========================= -->
|
||||
|
||||
<div class="toolbar">
|
||||
<a href="/?page=racks/edit" class="button">
|
||||
+ Neues Rack
|
||||
</a>
|
||||
|
||||
<!-- TODO: Suchfeld -->
|
||||
<!-- TODO: Filter (Floor / Standort) -->
|
||||
</div>
|
||||
|
||||
<!-- =========================
|
||||
Rack-Tabelle
|
||||
========================= -->
|
||||
|
||||
<table class="rack-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Vorschau</th>
|
||||
<th>Name</th>
|
||||
<th>Stockwerk</th>
|
||||
<th>Höhe (U)</th>
|
||||
<th>Geräte</th>
|
||||
<th>Aktionen</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<?php /* foreach ($racks as $rack): */ ?>
|
||||
<tr>
|
||||
<td class="preview">
|
||||
<!-- TODO: SVG / JPG Thumbnail -->
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<!-- TODO: Rack-Name -->
|
||||
Rack 1
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<!-- TODO: Floor / Standort -->
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<!-- TODO: Höhe -->
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<!-- TODO: Anzahl Geräte im Rack -->
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<a href="/?page=racks/edit&id=1">Bearbeiten</a>
|
||||
<button>Löschen</button>
|
||||
</td>
|
||||
</tr>
|
||||
<?php /* endforeach; */ ?>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- =========================
|
||||
Leerer Zustand
|
||||
========================= -->
|
||||
|
||||
<?php /* if (empty($racks)): */ ?>
|
||||
<div class="empty-state">
|
||||
<p>Noch keine Racks angelegt.</p>
|
||||
<p><a href="/?page=racks/edit">Erstes Rack anlegen</a></p>
|
||||
</div>
|
||||
<?php /* endif; */ ?>
|
||||
|
||||
Reference in New Issue
Block a user