Spaces:
Running
Running
File size: 3,135 Bytes
82a36a6 a962ffe 897c1d2 0759822 b7a713a 0759822 90cb4f4 fa1e621 9a6b7dc 2b2f0d1 897c1d2 e3f0784 00eef23 82a36a6 9a6b7dc e4a1a2b 9a6b7dc 0759822 2b2f0d1 4f7c053 46dae9a 2b2f0d1 9a6b7dc 90cb4f4 c7dea7e 9a6b7dc 2b2f0d1 897c1d2 9a6b7dc 2b2f0d1 0759822 9a6b7dc 0759822 64656b5 0759822 2b2f0d1 0759822 9a6b7dc |
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 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
from utils.loaders import load_data
from db.crud import read
import streamlit as st
import os
from dotenv import load_dotenv
from views.intro_screen import welcome_screen
from views.questions_screen import questions_screen
from views.continue_survey import continue_survey_screen
from css.layout import custom_css
st.set_page_config(layout="wide")
load_dotenv()
VALIDATION_CODE = os.getenv("VALIDATION_CODE")
def initialization():
"""Initialize session state variables."""
if "current_index" not in st.session_state:
st.session_state.current_index = 0
if "username" not in st.session_state:
st.session_state.username = None
if "responses" not in st.session_state:
st.session_state.responses = []
if "completed" not in st.session_state:
st.session_state.completed = False
if "show_questions" not in st.session_state:
st.session_state.show_questions = False
if "survey_continued" not in st.session_state:
st.session_state.survey_continued = None
if "start_new_survey" not in st.session_state:
st.session_state.start_new_survey = False
if 'ratings' not in st.session_state:
st.session_state.ratings = {}
if 'previous_ratings' not in st.session_state:
st.session_state.previous_ratings = {}
def exit_screen():
"""Display exit screen"""
st.markdown("""
<div class='exit-container'>
<h1>Thank you for participating!</h1>
<p>Your responses have been saved successfully.</p>
<p>You can safely close this window or start a new survey.</p>
</div>
""", unsafe_allow_html=True)
# if st.button("Resume Survey"):
# reset_survey()
# st.rerun()
def reset_survey():
"""Reset the survey state to start over."""
st.session_state.responses = []
st.session_state.completed = True
st.session_state.start_new_survey = True
def ui():
"""Main function to control the survey flow."""
custom_css()
data = load_data()
initialization()
if st.session_state.completed and not st.session_state.start_new_survey:
exit_screen()
return
if st.session_state.username is None:
welcome_screen()
else:
# Check if user progress exists in Firebase
saved_state = read(st.session_state.username)
if saved_state:
# If there's saved progress and the survey has not been continued, show continue screen
if "survey_continued" not in st.session_state or not st.session_state.survey_continued:
continue_survey_screen(data)
else:
if st.session_state.current_index >= len(data):
# If all questions have been answered, show the exit screen
print("survey completed")
survey_completed()
# Otherwise, show questions from where they left off
questions_screen(data)
else:
# If no saved progress (new user), start with the questions screen
questions_screen(data)
if __name__ == "__main__":
ui()
|