{# # ============================================================================ # ORGANISM: ACTIVITY LIST # ============================================================================ # # Liste d'activités récentes dans une card avec header et "Voir plus". # Utilisé sur le dashboard et les pages admin utilisateur. # # ============================================================================ # PARAMÈTRES # ============================================================================ # # | Paramètre | Type | Défaut | Description | # |---------------|--------|-------------------------|--------------------------------| # | activities | array | [] | Liste des activités | # | limit | int | null | Nombre max d'activités (null=tout) | # | title | string | 'Activités récentes' | Titre de la section | # | viewMoreHref | string | null | Lien "Voir plus" (optionnel) | # | maxHeight | string | '400px' | Hauteur max scrollable | # | emptyTitle | string | 'Aucune activité...' | Titre état vide | # | emptyDesc | string | 'Créez votre premier...'| Description état vide | # | showBadge | bool | true | Afficher badges outils | # | compact | bool | false | Mode compact | # | class | string | '' | Classes CSS additionnelles | # # Chaque activité doit avoir: # - title ou description: string # - tool.code ou type ou activityType: string (moodia|serenia|slidia|monalisia) # - tool.name (optionnel): string # - tokens ou tokensUsed: int # - energy ou energyConsumedWh: float # - date ou createdAt: DateTimeInterface # # ============================================================================ # EXEMPLES D'UTILISATION # ============================================================================ # # Basique: # {% include '_organisms/activity-list/activity-list.html.twig' with { # activities: recentActivities # } only %} # # Avec lien "Voir plus": # {% include '_organisms/activity-list/activity-list.html.twig' with { # activities: recentActivities, # viewMoreHref: path('admin_user_activities', {uuid: user.uuid}) # } only %} # # Personnalisé: # {% include '_organisms/activity-list/activity-list.html.twig' with { # activities: userActivities, # title: 'Historique', # maxHeight: '300px', # emptyTitle: 'Pas encore d'activité', # emptyDesc: 'Les activités apparaîtront ici' # } only %} # # ============================================================================ #} {% set activities = activities|default([]) %} {% set limit = limit|default(null) %} {% set title = title|default('Activités récentes') %} {% set viewMoreHref = viewMoreHref|default(null) %} {% set maxHeight = maxHeight|default('400px') %} {% set emptyTitle = emptyTitle|default('Aucune activité récente') %} {% set emptyDesc = emptyDesc|default('Les activités apparaîtront ici une fois que vous commencerez à utiliser les outils.') %} {% set showBadge = showBadge ?? true %} {% set compact = compact|default(false) %} {% set class = class|default('') %} {# Appliquer la limite si définie #} {% if limit %} {% set activities = activities|slice(0, limit) %} {% endif %}
{# Header #}
{% include '_atoms/icon/icon.html.twig' with { name: 'clock', size: 'md', color: 'primary' } only %}

{{ title }}

{% if viewMoreHref %} Voir plus {% include '_atoms/icon/icon.html.twig' with { name: 'arrow-right', size: 'xs', color: 'primary' } only %} {% endif %}
{# Body #}
{% if activities|length > 0 %}
{% for activity in activities %} {# Extraire les données de l'activité #} {% if activity.tool is defined and activity.tool %} {% set toolCode = activity.tool.code %} {% set toolName = activity.tool.name %} {% elseif activity.type is defined %} {% set toolCode = activity.type|lower %} {% set toolName = toolCode|capitalize %} {% elseif activity.activityType is defined %} {% set toolCode = activity.activityType|lower %} {% set toolName = toolCode|capitalize %} {% else %} {% set toolCode = 'moodia' %} {% set toolName = 'Moodia' %} {% endif %} {% set activityTitle = activity.title is defined ? activity.title : (activity.description is defined ? activity.description : 'Activité') %} {% set tokensValue = activity.tokens is defined ? activity.tokens : (activity.tokensUsed is defined ? activity.tokensUsed : 0) %} {% set energyValue = activity.energy is defined ? activity.energy : (activity.energyConsumedWh is defined ? activity.energyConsumedWh : 0) %} {% set activityDate = activity.date is defined ? activity.date : activity.createdAt %} {% include '_molecules/activity-item/activity-item.html.twig' with { title: activityTitle, toolCode: toolCode, toolName: toolName, tokens: tokensValue, energy: energyValue, date: activityDate, showBadge: showBadge, compact: compact } only %} {% endfor %}
{% else %} {% include '_molecules/empty-state/empty-state.html.twig' with { title: emptyTitle, description: emptyDesc, icon: 'clock', size: 'sm' } only %} {% endif %}