diff --git a/README.md b/README.md index 2618a54..ccc49fa 100644 --- a/README.md +++ b/README.md @@ -211,3 +211,5 @@ Das Projekt basiert auf bewährten Web-Standards: * Bearbeiten-Funktion für bestehende ToDo-Listen Titel und deren Einträge implementiert. * Anzeige in der Haushaltsverwaltung nutzt nun den Anzeigenamen (Display Name) anstatt des Loginnamens, sofern vorhanden. * Neuer Menüpunkt zur Verwaltung (Bearbeiten, Löschen, Hinzufügen) von Kategorien analog zu den Herstellern implementiert. + * Kategorien können nun mit individuellen Farben (Hex-Code per Color-Picker) versehen werden. Diese Farben werden in der Detailansicht von Packlisten sowie in der Kachelansicht von Artikeln als farbige Badges dargestellt. + * Kachelhöhe in der Artikel-Übersicht und im Packlisten-Editor (`manage_packing_list_items.php`) leicht angepasst. diff --git a/src/articles.php b/src/articles.php index 3cdb40e..afb3108 100644 --- a/src/articles.php +++ b/src/articles.php @@ -83,7 +83,7 @@ $types = str_repeat('i', count($household_member_ids)); $sql = "SELECT a.id, a.name, a.weight_grams, a.quantity_owned, a.product_url, a.consumable, a.image_url, a.user_id, a.parent_article_id, u.username as creator_name, a.household_id, a.product_designation, - c.id AS category_id, c.name AS category_name, + c.id AS category_id, c.name AS category_name, c.color AS category_color, m.id AS manufacturer_id, m.name AS manufacturer_name, l2.name AS location_level2_name, l1.name AS location_level1_name FROM articles a @@ -399,15 +399,6 @@ document.addEventListener('DOMContentLoaded', function () { initializeInteractivity(); } - function getColorForCategory(categoryName) { - let hash = 0; - for (let i = 0; i < categoryName.length; i++) { - hash = categoryName.charCodeAt(i) + ((hash << 5) - hash); - } - const hue = Math.abs(hash % 360); - return `hsl(${hue}, 60%, 85%)`; - } - function generateCardHTML(article) { const imagePath = article.image_url ? article.image_url : 'assets/images/keinbild.png'; const productLink = article.product_url ? `` : ''; @@ -427,7 +418,7 @@ document.addEventListener('DOMContentLoaded', function () { const metaText = [article.manufacturer_name, article.product_designation].filter(Boolean).join(' - '); const catName = article.category_name || 'Ohne Kat.'; - const catColor = getColorForCategory(catName); + const catColor = article.category_color || '#e2e8f0'; return `
diff --git a/src/categories.php b/src/categories.php index 76ea58d..04e9d0b 100644 --- a/src/categories.php +++ b/src/categories.php @@ -116,7 +116,7 @@ elseif (isset($_GET['action']) && $_GET['action'] == 'delete' && isset($_GET['id $stmt_check->close(); } -$categories_query = $conn->prepare("SELECT c.id, c.name, c.user_id, u.username as creator_name FROM categories c JOIN users u ON c.user_id = u.id WHERE c.user_id IN ($placeholders) ORDER BY c.name ASC"); +$categories_query = $conn->prepare("SELECT c.id, c.name, c.color, c.user_id, u.username as creator_name FROM categories c JOIN users u ON c.user_id = u.id WHERE c.user_id IN ($placeholders) ORDER BY c.name ASC"); $categories_query->bind_param($types, ...$household_member_ids); $categories_query->execute(); $categories_list = $categories_query->get_result()->fetch_all(MYSQLI_ASSOC); @@ -135,9 +135,13 @@ $conn->close();
Neue Kategorie hinzufügen
" method="post" class="row g-3 align-items-end"> -
- - +
+ + +
+
+ +
@@ -154,7 +158,7 @@ $conn->close();
- + (von ) @@ -163,7 +167,7 @@ $conn->close();
@@ -192,6 +196,10 @@ $conn->close();
+
+ + +