diff --git a/frontend/src/pages/AdminFeaturesPage.jsx b/frontend/src/pages/AdminFeaturesPage.jsx
index 6125d8c..c588350 100644
--- a/frontend/src/pages/AdminFeaturesPage.jsx
+++ b/frontend/src/pages/AdminFeaturesPage.jsx
@@ -12,7 +12,6 @@ export default function AdminFeaturesPage() {
name: '',
category: 'data',
description: '',
- unit: 'count',
limit_type: 'count',
default_limit: '',
reset_period: 'never',
@@ -43,7 +42,6 @@ export default function AdminFeaturesPage() {
name: '',
category: 'data',
description: '',
- unit: 'count',
limit_type: 'count',
default_limit: '',
reset_period: 'never',
@@ -59,7 +57,6 @@ export default function AdminFeaturesPage() {
name: feature.name,
category: feature.category,
description: feature.description || '',
- unit: feature.unit || 'count',
limit_type: feature.limit_type,
default_limit: feature.default_limit === null ? '' : feature.default_limit,
reset_period: feature.reset_period,
@@ -84,7 +81,6 @@ export default function AdminFeaturesPage() {
name: formData.name.trim(),
category: formData.category,
description: formData.description.trim(),
- unit: formData.unit,
limit_type: formData.limit_type,
default_limit: formData.default_limit === '' ? null : parseInt(formData.default_limit),
reset_period: formData.reset_period,
@@ -189,35 +185,63 @@ export default function AdminFeaturesPage() {
-
+
{/* Feature ID (read-only) */}
-
-
+
+
{/* Name */}
-
-
+
+
setFormData({ ...formData, name: e.target.value })}
placeholder="z.B. Gewichtseinträge"
/>
+ {/* Description */}
+
+
+ setFormData({ ...formData, description: e.target.value })}
+ placeholder="Kurze Erklärung was dieses Feature limitiert"
+ />
+
+
{/* Category + Limit Type */}
-
-
+
+
-
-
+
+
- {/* Description */}
-
-
+ {/* Count-specific fields (only for limit_type='count') */}
+ {formData.limit_type === 'count' && (
+ <>
+ {/* Reset Period */}
+
+
+
+
+ Wann wird der Nutzungszähler zurückgesetzt?
+
+
+
+ {/* Default Limit */}
+
+
+
setFormData({ ...formData, default_limit: e.target.value })}
+ placeholder="Leer = unbegrenzt"
+ />
+
+ Fallback-Wert wenn kein Tier-spezifisches Limit gesetzt ist
+
+
+ >
+ )}
+
+ {/* Boolean info */}
+ {formData.limit_type === 'boolean' && (
+
+ Boolean-Feature: Ist entweder verfügbar (AN) oder nicht verfügbar (AUS).
+ Keine Zähler oder Reset-Perioden notwendig.
+
+ )}
+
+ {/* Sort Order */}
+
+
setFormData({ ...formData, description: e.target.value })}
- placeholder="Optionale Beschreibung"
+ style={{ width: '100%' }}
+ type="number"
+ value={formData.sort_order}
+ onChange={(e) => setFormData({ ...formData, sort_order: parseInt(e.target.value) || 50 })}
/>
-
-
- {/* Unit + Reset Period */}
-
-
-
- setFormData({ ...formData, unit: e.target.value })}
- placeholder="z.B. count, calls"
- />
-
-
-
-
-
-
-
-
- {/* Default Limit + Sort Order */}
-
-
-
- setFormData({ ...formData, default_limit: e.target.value })}
- placeholder="Leer = unbegrenzt"
- />
-
- Fallback wenn kein Tier-Limit gesetzt
-
-
-
-
-
-
setFormData({ ...formData, sort_order: parseInt(e.target.value) || 50 })}
- />
+
+ Niedrigere Werte erscheinen weiter oben in Listen (Standard: 50)
{/* Checkboxes */}
-