File size: 2,820 Bytes
2b5ccc9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import streamlit as st
from collections import Counter

from data_manager import get_data
from data_manager_bziiit import get_labels, get_engaged_brands

def display_rse_labels():
    st.markdown("## OPEN DATA bziiit Labels RSE")
    st.markdown("### Découvrez  les labels et certifications (RSE, Qualité...)")

    labels_option = st.radio(
        "Choisissez les labels à afficher :",
        ("Labels / Certifications des organisations engagées Bdx Métropole", "Tous les labels / Certifications DATA bziiit")
    )

    
    st.markdown("""<hr style='border-color: darkgrey;'>""", unsafe_allow_html=True)

    labels = get_labels()
   
    if labels_option == "Tous les labels / Certifications DATA bziiit":
        labels.sort(key=lambda x: x['name'])
    else:
        # Get the data from Bordeaux Metropole API
        data, _ = get_data()

        # Get the engaged brands
        engaged_brands = get_engaged_brands()

        # Get the names of the organizations from Bordeaux Metropole API
        org_names = set(org['nom_courant_denomination'] for org in data if 'nom_courant_denomination' in org)

        # Filter the engaged brands to include only the organizations in Bordeaux Metropole
        engaged_brands = [brand for brand in engaged_brands if brand['name'] in org_names]

        # Get the labels used by the organizations
        org_labels = [label['name'] for brand in engaged_brands if 'labels' in brand and brand['labels'] for label in brand['labels']]

        # Count the labels
        label_counts = Counter(org_labels)

        # Filter the labels and add the count
        labels = [{'name': label['name'], 'logo_url': label['logo_url'], 'count': label_counts[label['name']]} for label in labels if label['name'] in label_counts]

        # Sort the labels by count in descending order
        labels.sort(key=lambda x: x['count'], reverse=True)

    # Display the total number of unique labels
    unique_labels = set(label['name'] for label in labels)
    st.markdown(f"**Nombre de labels / certifications :** {len(unique_labels)}")

    # Display the labels
    for i in range(0, len(labels), 5):
        cols = st.columns(5)
        for j in range(5):
            if i + j < len(labels):
                label = labels[i + j]
                with cols[j]:
                    st.image(label['logo_url'])
                    if labels_option == "Tous les labels / Certifications DATA bziiit":
                        st.markdown(f'<p style="text-align: center; font-size: 10px;"><a href="{label["website"]}" style="color: darkgray;">Site web</a></p>', unsafe_allow_html=True)
                    else:
                        st.markdown(f'<p style="text-align: center; font-size: 10px; color: darkgray;">Nb marques certifiées : {label["count"]}</p>', unsafe_allow_html=True)