sbsmapper / app.py
georad's picture
Update app.py
e7809e3 verified
raw
history blame
3.03 kB
import streamlit as st
# At the top of file with imports
def add_sticky_header_css():
st.markdown("""
<style>
/* Make Streamlit's stMainMenu button aqua */
[data-testid="stMainMenu"] {
background-color: #00FFFF;
}
/* Make Streamlit's status widget sticky */
[data-testid="stStatusWidget"] {
position: fixed;
bottom: 0;
right: 0;
z-index: 1000;
background-color: yellow; /* #90EE90 */
padding: 5px;
border-top: 1px solid #f0f0f0;
width: 100%;
}
/* Add padding to main content to prevent overlap with fixed header */
.main .block-container {
padding-top: 5rem;
padding-bottom: 3rem;
}
</style>
""", unsafe_allow_html=True)
def scroll_to_bottom():
# This script uses Streamlit's message system to ensure proper timing
js_code = """
<script>
// Function to scroll to bottom
function scrollToBottom() {
// This targets Streamlit's specific structure
const mainContainer = window.parent.document.querySelector('.stApp');
if (mainContainer) {
mainContainer.scrollTo({
top: mainContainer.scrollHeight,
behavior: 'smooth'
});
}
}
// Use MutationObserver to detect when content is added
const observer = new MutationObserver((mutations) => {
scrollToBottom();
});
// Start observing the document body for changes
const streamlitDoc = window.parent.document;
observer.observe(streamlitDoc.body, {
childList: true,
subtree: true
});
// Initial scroll and disconnect after some time
scrollToBottom();
setTimeout(() => {
observer.disconnect();
// One final scroll
scrollToBottom();
}, 1000);
</script>
"""
# Use unsafe_allow_html to inject JavaScript
st.markdown(js_code, unsafe_allow_html=True)
# At the start of main function or execution flow
add_sticky_header_css()
# Rest of app continues...
# --- PAGE SETUP ---
type_text_page = st.Page(
page="pages/type_text.py",
title="DEMO (work in progress)",
icon=":material/keyboard:",
default=True,)
# --- Your Streamlit App ---
st.logo(image="images/menu_book_60dp_75FBFD.png")
st.title("Map descriptions to SBS codes with Sentence Transformer + Reasoning")
st.subheader("Select specific Chapter for quicker results")
st.sidebar.header("SBS V2.0 mapper")
st.sidebar.write("(work in progress)")
st.sidebar.text("Demo by JA-RAD")
# --- NAVIGATION SETUP ---
pg = st.navigation(pages=[type_text_page]) # WITHOUT SECTIONS
##pg = st.navigation({"Chapter_Index": [start_page], "Demo": [type_text_page, upload_file_page], "About": [about_page]}) # WITH SECTIONS
pg.run()