Spaces:
Running
Running
Commit
·
c52f9e4
1
Parent(s):
c08520d
Updating task selection to checkbox
Browse files- src/components/filters.py +25 -20
src/components/filters.py
CHANGED
@@ -24,6 +24,10 @@ def initialize_session_state(df):
|
|
24 |
# Make sure selected_tasks only includes actual tasks from the dataframe
|
25 |
valid_tasks = [col for col in df.columns if col not in ['Model Type']]
|
26 |
st.session_state.selected_tasks = [task for task in st.session_state.selected_tasks if task in valid_tasks]
|
|
|
|
|
|
|
|
|
27 |
|
28 |
# Always select all model types
|
29 |
st.session_state.selected_model_types = list(df['Model Type'].unique())
|
@@ -73,7 +77,7 @@ def render_metric_selection():
|
|
73 |
|
74 |
def render_task_selection(df):
|
75 |
"""
|
76 |
-
Render the task selection component
|
77 |
|
78 |
Args:
|
79 |
df (pandas.DataFrame): The DataFrame with model data
|
@@ -86,43 +90,44 @@ def render_task_selection(df):
|
|
86 |
# Extract task columns (exclude Model Type and Overall)
|
87 |
all_tasks = [col for col in df.columns if col not in ['Model Type']]
|
88 |
|
89 |
-
#
|
90 |
-
num_cols =
|
91 |
|
92 |
-
# Create task
|
93 |
task_groups = [all_tasks[i:i+num_cols] for i in range(0, len(all_tasks), num_cols)]
|
94 |
|
95 |
-
#
|
|
|
|
|
|
|
|
|
96 |
st.markdown("""
|
97 |
<style>
|
98 |
-
/*
|
99 |
-
.
|
100 |
-
|
101 |
-
|
102 |
-
margin: 0 auto;
|
103 |
-
display: block;
|
104 |
}
|
105 |
</style>
|
106 |
""", unsafe_allow_html=True)
|
107 |
|
108 |
-
# Display
|
109 |
for group in task_groups:
|
110 |
# Create columns with equal width
|
111 |
cols = st.columns(num_cols)
|
112 |
|
113 |
-
# Add
|
114 |
for i, task in enumerate(group):
|
115 |
if i < len(cols): # Ensure we don't exceed available columns
|
116 |
with cols[i]:
|
117 |
is_selected = task in st.session_state.selected_tasks
|
118 |
-
button_label = f"✓ {task}" if is_selected else task
|
119 |
-
button_type = "primary" if is_selected else "secondary"
|
120 |
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
else:
|
125 |
st.session_state.selected_tasks.append(task)
|
126 |
-
|
|
|
|
|
127 |
|
128 |
return st.session_state.selected_tasks
|
|
|
24 |
# Make sure selected_tasks only includes actual tasks from the dataframe
|
25 |
valid_tasks = [col for col in df.columns if col not in ['Model Type']]
|
26 |
st.session_state.selected_tasks = [task for task in st.session_state.selected_tasks if task in valid_tasks]
|
27 |
+
|
28 |
+
# If no tasks are selected, select all tasks
|
29 |
+
if not st.session_state.selected_tasks:
|
30 |
+
st.session_state.selected_tasks = valid_tasks
|
31 |
|
32 |
# Always select all model types
|
33 |
st.session_state.selected_model_types = list(df['Model Type'].unique())
|
|
|
77 |
|
78 |
def render_task_selection(df):
|
79 |
"""
|
80 |
+
Render the task selection component with checkboxes
|
81 |
|
82 |
Args:
|
83 |
df (pandas.DataFrame): The DataFrame with model data
|
|
|
90 |
# Extract task columns (exclude Model Type and Overall)
|
91 |
all_tasks = [col for col in df.columns if col not in ['Model Type']]
|
92 |
|
93 |
+
# Increase number of columns to reduce spacing
|
94 |
+
num_cols = 4 # More columns for tighter spacing
|
95 |
|
96 |
+
# Create task groups in a fixed number of columns with balanced width
|
97 |
task_groups = [all_tasks[i:i+num_cols] for i in range(0, len(all_tasks), num_cols)]
|
98 |
|
99 |
+
# Clear selected tasks if it's empty or not initialized
|
100 |
+
if 'selected_tasks' not in st.session_state or not st.session_state.selected_tasks:
|
101 |
+
st.session_state.selected_tasks = []
|
102 |
+
|
103 |
+
# Add custom CSS to reduce spacing between checkboxes
|
104 |
st.markdown("""
|
105 |
<style>
|
106 |
+
/* Reduce spacing in checkbox containers */
|
107 |
+
.stCheckbox {
|
108 |
+
padding: 0px !important;
|
109 |
+
margin-bottom: 5px !important;
|
|
|
|
|
110 |
}
|
111 |
</style>
|
112 |
""", unsafe_allow_html=True)
|
113 |
|
114 |
+
# Display checkboxes in rows
|
115 |
for group in task_groups:
|
116 |
# Create columns with equal width
|
117 |
cols = st.columns(num_cols)
|
118 |
|
119 |
+
# Add checkboxes to each column
|
120 |
for i, task in enumerate(group):
|
121 |
if i < len(cols): # Ensure we don't exceed available columns
|
122 |
with cols[i]:
|
123 |
is_selected = task in st.session_state.selected_tasks
|
|
|
|
|
124 |
|
125 |
+
# Use checkbox instead of button
|
126 |
+
if st.checkbox(task, value=is_selected, key=f"task_checkbox_{task}"):
|
127 |
+
if task not in st.session_state.selected_tasks:
|
|
|
128 |
st.session_state.selected_tasks.append(task)
|
129 |
+
else:
|
130 |
+
if task in st.session_state.selected_tasks:
|
131 |
+
st.session_state.selected_tasks.remove(task)
|
132 |
|
133 |
return st.session_state.selected_tasks
|