| | import streamlit as st |
| | import re |
| | from data_manager_bziiit import get_rse_projects |
| |
|
| | def remove_html_tags(text): |
| | """Supprimer les balises HTML d'une chaîne de caractères.""" |
| | clean_text = re.sub('<.*?>', '', text) |
| | return clean_text |
| |
|
| | def display_rse_projects(): |
| | st.markdown(""" |
| | <style> |
| | table { |
| | background-color: inherit !important; |
| | } |
| | </style> |
| | """, unsafe_allow_html=True) |
| |
|
| | st.markdown("## OPEN DATA bziiit Projet RSE") |
| | st.markdown("### Découvrez tous les projets RSE des marques référencées") |
| | |
| | projects = get_rse_projects() |
| | if projects: |
| | categories = list({project["rse_category"] if project["rse_category"] is not None else "Non catégorisé" for project in projects}) |
| | categories.sort() |
| | categories.insert(0, 'Toutes') |
| | selected_category = st.selectbox("Filtre par catégorie RSE", categories, index=0) |
| |
|
| | if selected_category != 'Toutes': |
| | filtered_projects = [project for project in projects if project["rse_category"] == selected_category or (selected_category == "Non catégorisé" and project["rse_category"] is None)] |
| | else: |
| | filtered_projects = projects |
| |
|
| | st.markdown(f"**Nombre de projets :** {len(filtered_projects)}") |
| |
|
| | |
| | for i in range(0, len(filtered_projects), 5): |
| | cols = st.columns(5) |
| | for j in range(5): |
| | if i + j < len(filtered_projects): |
| | project = filtered_projects[i + j] |
| | with cols[j]: |
| | if project['logo_url']: |
| | st.image(project['logo_url']) |
| | st.markdown(f'<p style="text-align: center;"><b>{project["brand"]["name"]}</b></p>', unsafe_allow_html=True) |
| | st.markdown(f'<p style="text-align: center;"><b>"{project["name"]}"</b></p>', unsafe_allow_html=True) |
| | st.markdown(f'<p style="text-align: center; font-size: 10px; color: darkgray;">{project["rse_category"] if project["rse_category"] is not None else "Non catégorisé"}</p>', unsafe_allow_html=True) |
| | st.markdown('<hr style="border-top: 1px dotted lightgray; width:100%;">', unsafe_allow_html=True) |