Spaces:
Sleeping
Sleeping
import utils | |
import streamlit as st | |
import plotly.express as px | |
import pandas as pd | |
def exit_poll(): | |
set_votes([]) | |
del st.session_state["selected_poll_name"] | |
def set_votes(votes=[]): | |
poll = utils.find_poll(st.session_state["selected_poll_name"]) | |
uuid = st.session_state["UUID"] | |
poll["votes"][uuid] = votes | |
def vote(): | |
votes = st.session_state.get("vote_selected", []) | |
set_votes(votes) | |
def load_voting(): | |
st.multiselect( | |
"How do you feel?", | |
utils.get_options(), | |
[], | |
on_change=vote, | |
key="vote_selected") | |
def is_admin(): | |
password = st.session_state.get("selected_poll_admin_password", "") | |
poll = utils.find_poll(st.session_state["selected_poll_name"]) | |
return poll["admin_password"] == password | |
def clear_votes_section(): | |
poll = utils.find_poll(st.session_state["selected_poll_name"]) | |
poll["votes"] = {} | |
def delete_poll(): | |
utils.load_polls().remove(utils.find_poll(st.session_state["selected_poll_name"])) | |
del st.session_state["selected_poll_name"] | |
def load_votes(): | |
selected_poll_name = st.session_state["selected_poll_name"] | |
poll = utils.find_poll(selected_poll_name) | |
votes = {x: 0 for x in utils.get_options()} | |
votes_count = 0 | |
users_count = 0 | |
for _,user_votes in poll["votes"].items(): | |
users_count +=1 | |
for vote in user_votes: | |
votes_count +=1 | |
if vote in votes: | |
votes[vote] += 1 | |
else: | |
votes[vote] = 1 | |
df = pd.DataFrame(list(votes.items()), columns=['Status', 'Count']) | |
if df["Count"].sum() == 0: | |
st.warning("No wotes yet!") | |
else: | |
st.success(f"Users:{users_count} | Votes:{votes_count}") | |
fig = px.pie(df, values='Count', names='Status', title="Audiance Feedback",) | |
st.plotly_chart(fig) | |
st.write(df) | |
st.button("Clear Votes", on_click=clear_votes_section, use_container_width=True) | |
st.button("Delete Poll", on_click=delete_poll, use_container_width=True) | |
def load(): | |
selected_poll_name = st.session_state["selected_poll_name"] | |
columns = st.columns(2) | |
with columns[0]: | |
st.button("Exit", on_click=exit_poll) | |
with columns[1]: | |
st.button("Refresh") | |
st.title(selected_poll_name) | |
if not is_admin(): | |
load_voting() | |
else: | |
load_votes() |