Update app.py
Browse files
app.py
CHANGED
@@ -1,43 +1,91 @@
|
|
1 |
import streamlit as st
|
|
|
2 |
|
3 |
-
#
|
4 |
-
|
5 |
-
# First, let's hide the default header with minimal CSS
|
6 |
st.markdown("""
|
7 |
<style>
|
8 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
</style>
|
10 |
""", unsafe_allow_html=True)
|
11 |
|
12 |
-
#
|
|
|
|
|
13 |
|
14 |
-
|
15 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
|
17 |
-
# Add spacing to prevent content from being hidden
|
18 |
-
st.markdown(
|
19 |
-
"""
|
20 |
-
<div style="height: 100px;"></div>
|
21 |
-
""",
|
22 |
-
unsafe_allow_html=True
|
23 |
-
)
|
24 |
|
25 |
-
#
|
26 |
-
# Sidebar content
|
27 |
st.sidebar.header("SBS V2.0 mapper")
|
28 |
st.sidebar.write("(work in progress)")
|
29 |
st.sidebar.text("Demo by JA-RAD")
|
30 |
-
|
31 |
st.subheader("Select specific Chapter for quicker results")
|
32 |
-
st.logo(image="images/menu_book_60dp_75FBFD.png")
|
33 |
|
34 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
type_text_page = st.Page(
|
36 |
page="pages/type_text.py",
|
37 |
title="DEMO (work in progress)",
|
38 |
icon=":material/keyboard:",
|
39 |
-
default=True,
|
|
|
40 |
|
41 |
# --- NAVIGATION SETUP ---
|
42 |
pg = st.navigation(pages=[type_text_page]) # WITHOUT SECTIONS
|
43 |
pg.run()
|
|
|
|
1 |
import streamlit as st
|
2 |
+
import time # Import time for simulating a running task
|
3 |
|
4 |
+
# --- Custom CSS for Sticky Header ---
|
|
|
|
|
5 |
st.markdown("""
|
6 |
<style>
|
7 |
+
/* Hide the default Streamlit header */
|
8 |
+
header {
|
9 |
+
display: none !important;
|
10 |
+
}
|
11 |
+
|
12 |
+
/* Make the custom header container sticky */
|
13 |
+
.sticky-header {
|
14 |
+
position: sticky;
|
15 |
+
top: 0;
|
16 |
+
background-color: white; /* Or your preferred header background color */
|
17 |
+
padding: 10px 0; /* Adjust padding as needed */
|
18 |
+
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* Optional: Add a subtle shadow */
|
19 |
+
z-index: 999; /* Ensure the header stays on top */
|
20 |
+
}
|
21 |
+
|
22 |
+
/* Style for the status indicator */
|
23 |
+
.status-indicator {
|
24 |
+
margin-left: 20px; /* Adjust spacing */
|
25 |
+
font-weight: bold;
|
26 |
+
}
|
27 |
+
|
28 |
+
.status-running {
|
29 |
+
color: orange;
|
30 |
+
}
|
31 |
+
|
32 |
+
.status-complete {
|
33 |
+
color: green;
|
34 |
+
}
|
35 |
+
|
36 |
+
.status-error {
|
37 |
+
color: red;
|
38 |
+
}
|
39 |
</style>
|
40 |
""", unsafe_allow_html=True)
|
41 |
|
42 |
+
# --- Sticky Header Content ---
|
43 |
+
# Use a container for the sticky header
|
44 |
+
header_container = st.container()
|
45 |
|
46 |
+
with header_container:
|
47 |
+
col1, col2 = st.columns([1, 5]) # Adjust column ratios as needed
|
48 |
+
with col1:
|
49 |
+
st.logo(image="images/menu_book_60dp_75FBFD.png")
|
50 |
+
with col2:
|
51 |
+
st.title("Map descriptions to SBS codes") # Your app title
|
52 |
+
# Placeholder for the status indicator
|
53 |
+
status_placeholder = st.empty()
|
54 |
|
55 |
+
# Add spacing below the sticky header to prevent content from being hidden
|
56 |
+
st.markdown("""<div style="height: 120px;"></div>""", unsafe_allow_html=True) # Adjust height based on your header size
|
|
|
|
|
|
|
|
|
|
|
57 |
|
58 |
+
# --- Main App Content ---
|
|
|
59 |
st.sidebar.header("SBS V2.0 mapper")
|
60 |
st.sidebar.write("(work in progress)")
|
61 |
st.sidebar.text("Demo by JA-RAD")
|
62 |
+
|
63 |
st.subheader("Select specific Chapter for quicker results")
|
|
|
64 |
|
65 |
+
|
66 |
+
# --- Application Logic (Example with Status Update) ---
|
67 |
+
|
68 |
+
# Function to simulate a long-running task
|
69 |
+
def run_mapping_process():
|
70 |
+
status_placeholder.markdown('<span class="status-indicator status-running">Running...</span>', unsafe_allow_html=True)
|
71 |
+
# Simulate work
|
72 |
+
time.sleep(3)
|
73 |
+
# Update status on completion
|
74 |
+
status_placeholder.markdown('<span class="status-indicator status-complete">Complete</span>', unsafe_allow_html=True)
|
75 |
+
|
76 |
+
# Example of triggering the process (you would integrate this with your actual logic)
|
77 |
+
if st.button("Start Mapping"):
|
78 |
+
run_mapping_process()
|
79 |
+
|
80 |
+
# --- Navigation (Keep your existing navigation setup) ---
|
81 |
type_text_page = st.Page(
|
82 |
page="pages/type_text.py",
|
83 |
title="DEMO (work in progress)",
|
84 |
icon=":material/keyboard:",
|
85 |
+
default=True,
|
86 |
+
)
|
87 |
|
88 |
# --- NAVIGATION SETUP ---
|
89 |
pg = st.navigation(pages=[type_text_page]) # WITHOUT SECTIONS
|
90 |
pg.run()
|
91 |
+
|