James McCool
commited on
Commit
·
94b689a
1
Parent(s):
1eeb961
Add pagination to contest data display in app.py
Browse files- Implemented pagination controls for the contest dataframe, allowing users to navigate through large datasets more easily.
- Initialized session state for current page tracking and calculated total pages based on the number of rows.
- Updated the dataframe display to show only the data for the current page, enhancing user experience and data visualization.
app.py
CHANGED
|
@@ -135,9 +135,34 @@ with tab2:
|
|
| 135 |
)
|
| 136 |
|
| 137 |
with col2:
|
| 138 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 139 |
st.dataframe(
|
| 140 |
-
st.session_state['Contest'].style
|
| 141 |
.background_gradient(axis=0)
|
| 142 |
.background_gradient(cmap='RdYlGn')
|
| 143 |
.format(precision=2),
|
|
|
|
| 135 |
)
|
| 136 |
|
| 137 |
with col2:
|
| 138 |
+
|
| 139 |
+
# Initialize pagination in session state if not exists
|
| 140 |
+
if 'current_page' not in st.session_state:
|
| 141 |
+
st.session_state.current_page = 0
|
| 142 |
+
|
| 143 |
+
# Calculate total pages
|
| 144 |
+
rows_per_page = 500
|
| 145 |
+
total_rows = len(st.session_state['Contest'])
|
| 146 |
+
total_pages = (total_rows + rows_per_page - 1) // rows_per_page
|
| 147 |
+
|
| 148 |
+
# Create pagination controls
|
| 149 |
+
col1, col2, col3 = st.columns([1, 2, 1])
|
| 150 |
+
with col1:
|
| 151 |
+
if st.button("Previous Page") and st.session_state.current_page > 0:
|
| 152 |
+
st.session_state.current_page -= 1
|
| 153 |
+
with col2:
|
| 154 |
+
st.write(f"Page {st.session_state.current_page + 1} of {total_pages}")
|
| 155 |
+
with col3:
|
| 156 |
+
if st.button("Next Page") and st.session_state.current_page < total_pages - 1:
|
| 157 |
+
st.session_state.current_page += 1
|
| 158 |
+
|
| 159 |
+
# Calculate start and end indices for current page
|
| 160 |
+
start_idx = st.session_state.current_page * rows_per_page
|
| 161 |
+
end_idx = min((st.session_state.current_page + 1) * rows_per_page, total_rows)
|
| 162 |
+
|
| 163 |
+
# Display the paginated dataframe
|
| 164 |
st.dataframe(
|
| 165 |
+
st.session_state['Contest'].iloc[start_idx:end_idx].style
|
| 166 |
.background_gradient(axis=0)
|
| 167 |
.background_gradient(cmap='RdYlGn')
|
| 168 |
.format(precision=2),
|