File size: 2,339 Bytes
91f00c0
 
 
 
 
0d937c2
91f00c0
0d937c2
91f00c0
 
0d937c2
91f00c0
0d937c2
91f00c0
 
 
 
 
 
 
 
 
 
 
 
 
 
0d937c2
 
 
91f00c0
 
0d937c2
 
91f00c0
0d937c2
 
 
91f00c0
 
 
0d937c2
 
91f00c0
 
 
0d937c2
91f00c0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0d937c2
91f00c0
 
0d937c2
91f00c0
 
0d937c2
91f00c0
 
0d937c2
91f00c0
 
 
 
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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()