|
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", |
|
step=1, |
|
min_value=0, |
|
max_value=100, |
|
value_always_visible=False, |
|
) |
|
st.altair_chart(c, use_container_width=True) |
|
|
|
|
|
|
|
|