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 */}
-
- +
+
-
- +
+ setFormData({ ...formData, reset_period: e.target.value })} + > + {resetPeriodOptions.map(o => ( + + ))} + +
+ 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 */} -
+