File size: 3,025 Bytes
f824176 ebc33d1 9b54e61 2b01236 a436296 2b01236 9b54e61 f33d0c9 9b54e61 f33d0c9 9b54e61 9190fc9 9b54e61 e7809e3 ebc33d1 9b54e61 ebc33d1 9b54e61 f824176 1cd1a19 f824176 9190fc9 f824176 122a897 f93ba69 122a897 7b883db f4ae373 f824176 1cd1a19 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
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()
|