import db def data_definition_options(slug, definition_id): """Lignes et champs d'un objet de données, prêts à peupler un menu déroulant — utilisé à la fois pour DEFINITIONS_DATA (tous les objets du jeu, consommé côté client par les formulaires de la Logique de la scène) et pour pré-remplir côté serveur les réglages qui dépendent d'un objet déjà choisi sur un élément (ex: la Jauge — voir controls_with_values.py). Chaque ligne est étiquetée avec la valeur de son PREMIER champ (convention "premier champ = nom lisible", comme pour un Répéteur), pour distinguer "Confiance" de "Trésorerie" plutôt que de n'avoir que des numéros de ligne.""" if not definition_id or not slug: return {"rows": [], "fields": []} full = db.get_definition(slug, int(definition_id)) if not full: return {"rows": [], "fields": []} rows = db.list_rows(slug, full) display_field = full["fields"][0]["name"] if full["fields"] else None display_col = db.slugify(display_field).replace("-", "_") if display_field else None row_options = [ {"id": r["id"], "label": f"{r.get(display_col)} (#{r['id']})" if display_col else f"Ligne #{r['id']}"} for r in rows ] field_options = [{"name": f["name"], "type": f["type"]} for f in full["fields"] if f["type"] != "relation"] return {"rows": row_options, "fields": field_options}