-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.py
More file actions
67 lines (53 loc) · 2.25 KB
/
Copy pathutils.py
File metadata and controls
67 lines (53 loc) · 2.25 KB
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
import streamlit as st
import base64
from streamlit.components.v1 import html
from PATHS import NAVBAR_PATHS
def inject_custom_css():
with open('assets/styles.css') as f:
st.markdown(f'<style>{f.read()}</style>', unsafe_allow_html=True)
def get_current_route():
try:
return st.experimental_get_query_params()['nav'][0]
except:
return None
def navbar_component():
with open("assets/images/SATELLITIX.png", "rb") as image_file:
image_logo_as_base64 = base64.b64encode(image_file.read())
with open("assets/images/icon-menu.png", "rb") as image_file:
image_menu_as_base64 = base64.b64encode(image_file.read())
navbar_items = ''
for key, value in NAVBAR_PATHS.items():
navbar_items += (f'<a class="navitem navbar-link" href="/?nav={value}">{key}</a>')
component = rf'''
<nav class="container navbar">
<div class="nav-container">
<img class="nav-logo" src="data:image/png;base64, {image_logo_as_base64.decode("utf-8")}"/>
<img class="navbar-toogle" id="toogle" src="data:image/png;base64, {image_menu_as_base64.decode("utf-8")}"/>
</div>
<div id="navbar"> {navbar_items} </div>
</nav>
'''
st.markdown(component, unsafe_allow_html=True)
nav_js = '''
<script>
// navbar elements
var navigationTabs = window.parent.document.getElementsByClassName("navitem");
var cleanNavbar = function(navigation_element) {
navigation_element.removeAttribute('target');
}
for (var i = 0; i < navigationTabs.length; i++) {
cleanNavbar(navigationTabs[i]);
}
var toogle = window.parent.document.getElementById("toogle");
var navbar = window.parent.document.getElementById("navbar");
toogle.addEventListener("click", () => {
if (navbar.style.display == "none") navbar.style.display = "flex";
else if (navbar.style.display == "") navbar.style.display = "flex";
else navbar.style.display = "none";
});
window.addEventListener("resize", () => {
if (toogle.style.display == "none") navbar.style.display = "flex";
});
</script>
'''
html(nav_js)