Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -3,6 +3,7 @@ import pandas as pd
|
|
3 |
import streamlit as st
|
4 |
import pydeck as pdk
|
5 |
from datetime import datetime, timedelta
|
|
|
6 |
|
7 |
# ---- Constants ----
|
8 |
POLES_PER_SITE = 12
|
@@ -97,7 +98,7 @@ if selected_site in SITES:
|
|
97 |
st.subheader("📈 Tilt vs. Vibration")
|
98 |
st.scatter_chart(site_df[['Tilt Angle (°)', 'Vibration (g)']])
|
99 |
|
100 |
-
# ---- Map Section with Tooltip ----
|
101 |
st.subheader("📍 Pole Alert Levels (Green, Yellow, Red)")
|
102 |
|
103 |
def alert_level_to_color(alert_level):
|
@@ -108,6 +109,16 @@ if selected_site in SITES:
|
|
108 |
else:
|
109 |
return [0, 255, 0, 160] # Green
|
110 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
if not site_df.empty:
|
112 |
site_df = site_df.copy()
|
113 |
site_df['Color'] = site_df['Alert Level'].apply(alert_level_to_color)
|
@@ -125,7 +136,7 @@ if selected_site in SITES:
|
|
125 |
data=site_df,
|
126 |
get_position='[Longitude, Latitude]',
|
127 |
get_color='Color',
|
128 |
-
get_radius=
|
129 |
pickable=True
|
130 |
)
|
131 |
],
|
@@ -144,9 +155,12 @@ if selected_site in SITES:
|
|
144 |
))
|
145 |
|
146 |
st.markdown("<h3 style='text-align: center;'>Click on a pole to view details</h3>", unsafe_allow_html=True)
|
|
|
|
|
|
|
|
|
147 |
else:
|
148 |
st.info("No poles data available for this site.")
|
149 |
else:
|
150 |
st.warning("Invalid site. Please enter one of: Hyderabad, Gadwal, Kurnool, Ballari")
|
151 |
|
152 |
-
|
|
|
3 |
import streamlit as st
|
4 |
import pydeck as pdk
|
5 |
from datetime import datetime, timedelta
|
6 |
+
import time
|
7 |
|
8 |
# ---- Constants ----
|
9 |
POLES_PER_SITE = 12
|
|
|
98 |
st.subheader("📈 Tilt vs. Vibration")
|
99 |
st.scatter_chart(site_df[['Tilt Angle (°)', 'Vibration (g)']])
|
100 |
|
101 |
+
# ---- Map Section with Tooltip and Blinking Effect ----
|
102 |
st.subheader("📍 Pole Alert Levels (Green, Yellow, Red)")
|
103 |
|
104 |
def alert_level_to_color(alert_level):
|
|
|
109 |
else:
|
110 |
return [0, 255, 0, 160] # Green
|
111 |
|
112 |
+
# Function to make Red poles blink by changing radius
|
113 |
+
def get_radius(alert, t):
|
114 |
+
if alert == 'Red':
|
115 |
+
return 200 + 100 * abs((t % 2) - 1) # alternate between 100 and 300
|
116 |
+
else:
|
117 |
+
return 100
|
118 |
+
|
119 |
+
t = int(time.time()) # current time in seconds
|
120 |
+
site_df['Radius'] = site_df['Alert Level'].apply(lambda x: get_radius(x, t))
|
121 |
+
|
122 |
if not site_df.empty:
|
123 |
site_df = site_df.copy()
|
124 |
site_df['Color'] = site_df['Alert Level'].apply(alert_level_to_color)
|
|
|
136 |
data=site_df,
|
137 |
get_position='[Longitude, Latitude]',
|
138 |
get_color='Color',
|
139 |
+
get_radius='Radius', # dynamic radius for blinking
|
140 |
pickable=True
|
141 |
)
|
142 |
],
|
|
|
155 |
))
|
156 |
|
157 |
st.markdown("<h3 style='text-align: center;'>Click on a pole to view details</h3>", unsafe_allow_html=True)
|
158 |
+
|
159 |
+
# Auto-refresh to trigger blinking effect
|
160 |
+
time.sleep(1) # 1 second blink
|
161 |
+
st.experimental_rerun()
|
162 |
else:
|
163 |
st.info("No poles data available for this site.")
|
164 |
else:
|
165 |
st.warning("Invalid site. Please enter one of: Hyderabad, Gadwal, Kurnool, Ballari")
|
166 |
|
|