91 lines
1.8 KiB
Python
91 lines
1.8 KiB
Python
import streamlit as st
|
|
from st_aggrid import AgGrid
|
|
|
|
import hacks
|
|
|
|
from restapi import restapi
|
|
from utils.st_utils import get_session_id, rerun
|
|
from utils.df_utils import to_excel_binary
|
|
|
|
|
|
st.set_page_config(layout="wide", page_icon="icon.png")
|
|
|
|
|
|
restapi.sid = get_session_id() # rest api needs current session ID to trigger the next rerun
|
|
|
|
changed = restapi.changed
|
|
df = restapi.data
|
|
|
|
|
|
|
|
print(">>> start of streamlit run")
|
|
|
|
|
|
|
|
showing_downloads = st.session_state.get("showing_downloads", False)
|
|
|
|
col1, col2, col3, col4 = st.columns([1, 1, 1, 1])
|
|
with col1:
|
|
if st.button("Downloads") and not showing_downloads:
|
|
st.session_state.showing_downloads = True
|
|
|
|
with col2:
|
|
with open("output.h5", "rb") as f:
|
|
st.download_button("Download hdf5", f, file_name="output.h5")
|
|
|
|
with col3:
|
|
xlsx = to_excel_binary(df)
|
|
st.download_button("Download xlsx", xlsx, file_name="output.xlsx")
|
|
|
|
with col4:
|
|
csv = df.to_csv()
|
|
st.download_button("Download csv", csv, file_name="output.csv")
|
|
|
|
# st.stop()
|
|
|
|
else:
|
|
st.session_state.showing_downloads = False
|
|
|
|
|
|
|
|
response = AgGrid(
|
|
df[::-1],
|
|
|
|
filter=True,
|
|
editable=True,
|
|
sortable=True,
|
|
resizable=True,
|
|
|
|
# defaultWidth=5,
|
|
fit_columns_on_grid_load=True,
|
|
|
|
reload_data=changed,
|
|
key="stand"
|
|
)
|
|
|
|
|
|
new_df = response.get("data")#, df)
|
|
new_df = new_df[::-1]
|
|
if not new_df.equals(df) and not changed:
|
|
restapi.data = new_df
|
|
# print("old:")
|
|
# print(df)
|
|
# print("new:")
|
|
# print(new_df)
|
|
# print(">>> force rerun")
|
|
# rerun()
|
|
|
|
#st.dataframe(df.astype(str))
|
|
#st.dataframe(new_df.astype(str))
|
|
|
|
if not new_df.empty:
|
|
# new_df.to_excel("output.xlsx")
|
|
new_df.to_hdf("output.h5", key="stand")
|
|
|
|
|
|
|
|
print(">>> end of streamlit run")
|
|
|
|
|
|
|