James McCool
commited on
Commit
Β·
a19edd8
1
Parent(s):
0b14eea
Implement pagination for dataframe display in app.py
Browse files- Added pagination controls to navigate through the displayed dataframe, enhancing user experience by allowing users to view data in manageable chunks.
- Included logic to update session state for current page tracking and to clear relevant session data upon navigation, ensuring a fresh state for user interactions.
- Improved overall data presentation with dynamic start and end index calculations for the displayed subset of the dataframe.
app.py
CHANGED
|
@@ -183,6 +183,46 @@ with tab2:
|
|
| 183 |
working_df['dupes'] = working_df.groupby('sorted').transform('size')
|
| 184 |
working_df = working_df.drop('sorted', axis=1)
|
| 185 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 186 |
for col in player_columns:
|
| 187 |
contest_players = working_df.copy()
|
| 188 |
players_1per = working_df.nlargest(n=int(len(working_df) * 0.01), columns='actual_fpts')
|
|
@@ -237,45 +277,3 @@ with tab2:
|
|
| 237 |
style.background_gradient(cmap='RdYlGn').
|
| 238 |
format(formatter='{:.2%}', subset=st.session_state['stack_frame'].select_dtypes(include=['number']).columns),
|
| 239 |
hide_index=True)
|
| 240 |
-
|
| 241 |
-
start_idx = 0
|
| 242 |
-
end_idx = 500
|
| 243 |
-
st.dataframe(
|
| 244 |
-
working_df.iloc[start_idx:end_idx].style
|
| 245 |
-
.background_gradient(axis=0)
|
| 246 |
-
.background_gradient(cmap='RdYlGn')
|
| 247 |
-
.format(precision=2),
|
| 248 |
-
height=1000,
|
| 249 |
-
use_container_width=True,
|
| 250 |
-
hide_index=True
|
| 251 |
-
)
|
| 252 |
-
|
| 253 |
-
# Initialize pagination in session state if not exists
|
| 254 |
-
if 'current_page' not in st.session_state:
|
| 255 |
-
st.session_state.current_page = 0
|
| 256 |
-
|
| 257 |
-
# Calculate total pages
|
| 258 |
-
rows_per_page = 500
|
| 259 |
-
total_rows = len(working_df)
|
| 260 |
-
total_pages = (total_rows + rows_per_page - 1) // rows_per_page
|
| 261 |
-
|
| 262 |
-
# Create pagination controls in a single row
|
| 263 |
-
pagination_cols = st.columns([4, 1, 1, 1, 4])
|
| 264 |
-
with pagination_cols[1]:
|
| 265 |
-
if st.button("β Previous", disabled=st.session_state.current_page == 0):
|
| 266 |
-
st.session_state.current_page -= 1
|
| 267 |
-
if 'player_frame' in st.session_state:
|
| 268 |
-
del st.session_state['player_frame']
|
| 269 |
-
del st.session_state['stack_frame']
|
| 270 |
-
|
| 271 |
-
with pagination_cols[2]:
|
| 272 |
-
st.markdown(f"**Page {st.session_state.current_page + 1} of {total_pages}**", unsafe_allow_html=True)
|
| 273 |
-
with pagination_cols[3]:
|
| 274 |
-
if st.button("Next β", disabled=st.session_state.current_page == total_pages - 1):
|
| 275 |
-
st.session_state.current_page += 1
|
| 276 |
-
if 'player_frame' in st.session_state:
|
| 277 |
-
del st.session_state['player_frame']
|
| 278 |
-
del st.session_state['stack_frame']
|
| 279 |
-
# Calculate start and end indices for current page
|
| 280 |
-
start_idx = st.session_state.current_page * rows_per_page
|
| 281 |
-
end_idx = min((st.session_state.current_page + 1) * rows_per_page, total_rows)
|
|
|
|
| 183 |
working_df['dupes'] = working_df.groupby('sorted').transform('size')
|
| 184 |
working_df = working_df.drop('sorted', axis=1)
|
| 185 |
|
| 186 |
+
|
| 187 |
+
# Initialize pagination in session state if not exists
|
| 188 |
+
if 'current_page' not in st.session_state:
|
| 189 |
+
st.session_state.current_page = 0
|
| 190 |
+
|
| 191 |
+
# Calculate total pages
|
| 192 |
+
rows_per_page = 500
|
| 193 |
+
total_rows = len(working_df)
|
| 194 |
+
total_pages = (total_rows + rows_per_page - 1) // rows_per_page
|
| 195 |
+
|
| 196 |
+
# Create pagination controls in a single row
|
| 197 |
+
pagination_cols = st.columns([4, 1, 1, 1, 4])
|
| 198 |
+
with pagination_cols[1]:
|
| 199 |
+
if st.button("β Previous", disabled=st.session_state.current_page == 0):
|
| 200 |
+
st.session_state.current_page -= 1
|
| 201 |
+
if 'player_frame' in st.session_state:
|
| 202 |
+
del st.session_state['player_frame']
|
| 203 |
+
del st.session_state['stack_frame']
|
| 204 |
+
|
| 205 |
+
with pagination_cols[2]:
|
| 206 |
+
st.markdown(f"**Page {st.session_state.current_page + 1} of {total_pages}**", unsafe_allow_html=True)
|
| 207 |
+
with pagination_cols[3]:
|
| 208 |
+
if st.button("Next β", disabled=st.session_state.current_page == total_pages - 1):
|
| 209 |
+
st.session_state.current_page += 1
|
| 210 |
+
if 'player_frame' in st.session_state:
|
| 211 |
+
del st.session_state['player_frame']
|
| 212 |
+
del st.session_state['stack_frame']
|
| 213 |
+
# Calculate start and end indices for current page
|
| 214 |
+
start_idx = st.session_state.current_page * rows_per_page
|
| 215 |
+
end_idx = min((st.session_state.current_page + 1) * rows_per_page, total_rows)
|
| 216 |
+
st.dataframe(
|
| 217 |
+
working_df.iloc[start_idx:end_idx].style
|
| 218 |
+
.background_gradient(axis=0)
|
| 219 |
+
.background_gradient(cmap='RdYlGn')
|
| 220 |
+
.format(precision=2),
|
| 221 |
+
height=1000,
|
| 222 |
+
use_container_width=True,
|
| 223 |
+
hide_index=True
|
| 224 |
+
)
|
| 225 |
+
|
| 226 |
for col in player_columns:
|
| 227 |
contest_players = working_df.copy()
|
| 228 |
players_1per = working_df.nlargest(n=int(len(working_df) * 0.01), columns='actual_fpts')
|
|
|
|
| 277 |
style.background_gradient(cmap='RdYlGn').
|
| 278 |
format(formatter='{:.2%}', subset=st.session_state['stack_frame'].select_dtypes(include=['number']).columns),
|
| 279 |
hide_index=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|