import streamlit as st import pandas as pd import numpy as np import re import altair as alt from session import get_parties_prenantes import os from streamlit_vertical_slider import vertical_slider from st_draggable_list import DraggableList def display_viz(): parties_prenantes = get_parties_prenantes() if parties_prenantes is None or len(parties_prenantes) == 0: st.write("aucune partie prenante n'a été définie") else: partie_prenante_non_filtre = [item.lower().capitalize() for sublist in parties_prenantes for item in sublist] partie_prenante = sorted(list(set(partie_prenante_non_filtre))) pouvoir = [ 50 for _ in range(len(partie_prenante))] c = ( alt.Chart(st.session_state['partie_prenante_grouped']) .mark_circle(size=800) .encode(x="partie_prenante", y=alt.Y("pouvoir",scale=alt.Scale(domain=[0,100])), color="Code couleur",tooltip=["partie_prenante","pouvoir"]) ).configure_legend(orient='bottom',direction="vertical").properties(height=600) number_of_sliders = len(partie_prenante) st.write("Modifiez le pouvoir des parties prenantes en utilisant les sliders ci-dessous") bar = st.columns(number_of_sliders) for i in range(number_of_sliders): with bar[i]: st.session_state['partie_prenante_grouped']['pouvoir'][i] = vertical_slider( label=partie_prenante[i], height=100, key=partie_prenante[i], default_value=int(st.session_state['partie_prenante_grouped']['pouvoir'][i]), thumb_color= "orange", #Optional - Defaults to Streamlit Red step=1, min_value=0, max_value=100, value_always_visible=False, ) st.altair_chart(c, use_container_width=True) # data = [{'id':partie_prenante[i], 'name':partie_prenante[i],'pouvoir':int(df["pouvoir"][i])} for i in range(len(partie_prenante))] # slist = DraggableList(data) # st.write(slist)