File size: 3,619 Bytes
e3f0784
 
 
c7dea7e
 
9a6b7dc
0759822
a962ffe
 
9a6b7dc
897c1d2
 
0759822
 
 
90cb4f4
9a6b7dc
897c1d2
e3f0784
00eef23
9a6b7dc
 
 
 
e4a1a2b
 
9a6b7dc
 
 
 
0759822
 
 
 
 
 
9a6b7dc
 
897c1d2
 
 
 
 
 
 
 
 
 
876e6bb
897c1d2
 
 
 
9a6b7dc
 
 
c7dea7e
0759822
9a6b7dc
64656b5
c7dea7e
 
 
 
 
 
 
64656b5
c7dea7e
330482c
c7dea7e
 
 
 
9a6b7dc
 
 
90cb4f4
c7dea7e
9a6b7dc
 
0759822
897c1d2
9a6b7dc
 
e4a1a2b
0759822
9a6b7dc
0759822
 
 
 
 
 
 
 
64656b5
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import json
from typing import Dict

from datasets import load_dataset

from db.schema import Feedback, Response
from db.crud import ingest, read, save_feedback
import pandas as pd
import streamlit as st
from datetime import datetime
import os
from dotenv import load_dotenv
from views.intro_screen import welcome_screen
from views.questions_screen import questions_screen, survey_completed
from views.continue_survey import continue_survey_screen
from css.layout import custom_css

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


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 load_data():
    try:
        data = pd.read_csv("data/gemini_results_subset.csv")[:5]
        return data
    except Exception as e:
        repo_name = os.getenv("DATA_REPO")
        data_files = os.getenv("LLAMA_DATA_FILES")
        print("data_files", data_files)
        HF_TOKEN = os.getenv("HF_TOKEN")
        dataset = load_dataset(repo_name, token=True, data_files=data_files, revision="main")
        dataset.set_format(type='pandas')  ## converting it into pandas
        df = dataset["train"][:]
        return df[:5]


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()