feat: add Ressourcen timeline view with group ordering (alpha.14)
- New timeline page showing all groups and active events in parallel - Group order API endpoints with persistence (GET/POST /api/groups/order) - Customizable group ordering with visual controls - Fix CSS and TypeScript lint errors - Update documentation and bump version to 2026.1.0-alpha.14
This commit is contained in:
@@ -68,6 +68,7 @@ with engine.connect() as conn:
|
||||
('holiday_banner_enabled', 'true', 'Ferienstatus-Banner auf Dashboard anzeigen'),
|
||||
('organization_name', '', 'Name der Organisation (wird im Header angezeigt)'),
|
||||
('refresh_seconds', '0', 'Scheduler Republish-Intervall (Sekunden; 0 deaktiviert)'),
|
||||
('group_order', '[]', 'Benutzerdefinierte Reihenfolge der Raumgruppen (JSON-Array mit Group-IDs)'),
|
||||
]
|
||||
|
||||
for key, value, description in default_settings:
|
||||
|
||||
@@ -208,3 +208,55 @@ def get_groups_with_clients():
|
||||
})
|
||||
session.close()
|
||||
return jsonify(result)
|
||||
|
||||
|
||||
@groups_bp.route("/order", methods=["GET"])
|
||||
def get_group_order():
|
||||
"""Retrieve the saved group order from system settings."""
|
||||
from models.models import SystemSetting
|
||||
session = Session()
|
||||
try:
|
||||
setting = session.query(SystemSetting).filter_by(key='group_order').first()
|
||||
if setting and setting.value:
|
||||
import json
|
||||
order = json.loads(setting.value)
|
||||
return jsonify({"order": order})
|
||||
return jsonify({"order": None})
|
||||
except Exception as e:
|
||||
print(f"Error loading group order: {e}")
|
||||
return jsonify({"order": None})
|
||||
finally:
|
||||
session.close()
|
||||
|
||||
|
||||
@groups_bp.route("/order", methods=["POST"])
|
||||
@require_role('admin')
|
||||
def save_group_order():
|
||||
"""Save the custom group order to system settings."""
|
||||
from models.models import SystemSetting
|
||||
session = Session()
|
||||
try:
|
||||
data = request.get_json()
|
||||
order = data.get('order')
|
||||
|
||||
if not order or not isinstance(order, list):
|
||||
return jsonify({"success": False, "error": "Invalid order data"}), 400
|
||||
|
||||
import json
|
||||
order_json = json.dumps(order)
|
||||
|
||||
setting = session.query(SystemSetting).filter_by(key='group_order').first()
|
||||
if setting:
|
||||
setting.value = order_json
|
||||
else:
|
||||
setting = SystemSetting(key='group_order', value=order_json)
|
||||
session.add(setting)
|
||||
|
||||
session.commit()
|
||||
return jsonify({"success": True})
|
||||
except Exception as e:
|
||||
session.rollback()
|
||||
print(f"Error saving group order: {e}")
|
||||
return jsonify({"success": False, "error": str(e)}), 500
|
||||
finally:
|
||||
session.close()
|
||||
|
||||
Reference in New Issue
Block a user