File size: 3,941 Bytes
448ed98
 
 
 
 
 
 
 
 
 
 
5bcad58
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
448ed98
 
 
 
 
 
 
 
 
 
 
 
 
5bcad58
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
448ed98
 
5bcad58
448ed98
 
 
 
 
5bcad58
 
 
 
 
 
448ed98
 
 
 
 
 
5bcad58
 
 
 
 
 
448ed98
 
5bcad58
 
448ed98
 
 
 
 
 
5bcad58
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
110
111
112
113
114
115
116
117
import streamlit as st
import pandas as pd
from io import StringIO

from qstn.survey_manager import SurveyCreator

from qstn.prompt_builder import LLMPrompt

st.set_page_config(layout="wide")
st.title("Questionnaire")

# Demo section showing expected CSV format
with st.expander("📋 View Example CSV Format", expanded=False):
    demo_col1, demo_col2 = st.columns(2)
    
    with demo_col1:
        st.subheader("Questionnaire CSV Format")
        st.write("**Required columns:** `questionnaire_item_id`, `question_content`, `question_stem`")
        # Create example dataframe
        example_questionnaire = pd.DataFrame({
            'questionnaire_item_id': [1, 2, 3],
            'question_content': ['Coffee', 'Pizza', 'Ice cream'],
            'question_stem': [
                'How do you feel about?',
                'How do you feel about?',
                'How do you feel about?'
            ]
        })
        st.write(example_questionnaire)
    
    with demo_col2:
        st.subheader("Population CSV Format")
        st.write("**Required columns:** `questionnaire_name`, `system_prompt`, `questionnaire_instruction`")
        # Create example dataframe
        example_population = pd.DataFrame({
            'questionnaire_name': ['Student', 'Teacher'],
            'system_prompt': ['You are a student.', 'You are a teacher.'],
            'questionnaire_instruction': [
                'Please answer the following questions.',
                'Please answer the following questions.'
            ]
        })
        st.write(example_population)

st.divider()

col1, col2 = st.columns(2)

# def save_dataframe(uploaded_file):

#     try:
#         df = pd.read_csv(uploaded_file)
#         # Store the DataFrame in session state
#         st.session_state.df = df
#     except Exception as e:
#         st.error(f"Error reading the file: {e}")

#     return df

# Default example dataframes
default_questionnaire = pd.DataFrame({
    'questionnaire_item_id': [1, 2, 3],
    'question_content': ['Coffee', 'Pizza', 'Ice cream'],
    'question_stem': [
        'How do you feel about?',
        'How do you feel about?',
        'How do you feel about?'
    ]
})

default_population = pd.DataFrame({
    'questionnaire_name': ['Student', 'Teacher'],
    'system_prompt': ['You are a student.', 'You are a teacher.'],
    'questionnaire_instruction': [
        'Please answer the following questions.',
        'Please answer the following questions.'
    ]
})

df_population = None
df_questionnaire = None
using_defaults = False

with col1:
    uploaded_questionnaire = st.file_uploader("Select a questionnaire to start with")
    if uploaded_questionnaire is not None:
        df_questionnaire = pd.read_csv(uploaded_questionnaire)
        st.write(df_questionnaire)
    else:
        # Use default if no file uploaded
        df_questionnaire = default_questionnaire
        using_defaults = True
        st.info("ℹ️ Using example questionnaire. Upload a file to use your own data.")
        st.write(df_questionnaire)

with col2:
    uploaded_population = st.file_uploader("Select a population to start with")
    if uploaded_population is not None:
        df_population = pd.read_csv(uploaded_population)
        st.write(df_population)
    else:
        # Use default if no file uploaded
        df_population = default_population
        using_defaults = True
        st.info("ℹ️ Using example population. Upload a file to use your own data.")
        st.write(df_population)

# Button is always enabled now (using defaults if no files uploaded)
disabled = False
        
st.divider()

if st.button("Confirm and Prepare Questionnaire", type="primary", disabled=disabled, use_container_width=True):
    questionnaires: list[LLMPrompt] = SurveyCreator.from_dataframe(df_population, df_questionnaire)
    st.session_state.questionnaires = questionnaires
    st.switch_page("pages/01_Option_Prompt.py")