Spaces:
Sleeping
Sleeping
File size: 2,045 Bytes
e8f0e8e 8ea7afe e8f0e8e 8514584 e8f0e8e 8ea7afe e8f0e8e 8514584 e8f0e8e 8514584 e8f0e8e 8514584 e8f0e8e 8514584 e8f0e8e 8514584 e8f0e8e 8514584 e8f0e8e 8514584 e8f0e8e 8514584 e8f0e8e 8ea7afe 8514584 8ea7afe e8f0e8e 8514584 e8f0e8e 86ef349 8514584 86ef349 8514584 |
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 |
import dash
from dash import dcc, html
import pandas as pd
import numpy as np
import plotly.graph_objects as go
import random
# Constants
SITES = ['Hyderabad', 'Kurnool', 'Bangalore', 'Warangal']
POLES_PER_SITE = 12
ALERT_THRESHOLD = 80
# Generate sample pole data
def generate_data():
data = []
for site in SITES:
for pole in range(1, POLES_PER_SITE + 1):
status = random.randint(0, 100)
data.append({'Site': site, 'Pole': f'P{pole}', 'Status': status})
return pd.DataFrame(data)
df = generate_data()
# Create heatmap figure
def create_heatmap(dataframe):
pivot_df = dataframe.pivot(index='Site', columns='Pole', values='Status')
fig = go.Figure(data=go.Heatmap(
z=pivot_df.values,
x=pivot_df.columns,
y=pivot_df.index,
colorscale="Viridis",
colorbar=dict(title="Status"),
zmin=0,
zmax=100
))
fig.update_layout(title="Pole Status Heatmap", height=500)
return fig
# Dash app setup
app = dash.Dash(__name__)
server = app.server # for Hugging Face Spaces
# App layout
app.layout = html.Div([
html.H1("Pole Management Dashboard", style={'textAlign': 'center'}),
dcc.Graph(figure=create_heatmap(df)),
html.Div([
html.H3("🚨 Red Alert Poles:", style={"textAlign": "center", "color": "red"}),
html.Div([
html.Span(f"{row['Site']} - {row['Pole']}", style={
"animation": "blinker 1s linear infinite",
"color": "red",
"fontWeight": "bold",
"fontSize": "20px",
"margin": "10px",
"display": "inline-block"
})
for _, row in df[df["Status"] > ALERT_THRESHOLD].iterrows()
], style={"textAlign": "center"})
]),
dcc.Markdown('''
<style>
@keyframes blinker {
50% { opacity: 0; }
}
</style>
''', dangerously_allow_html=True)
])
# Run server
if __name__ == '__main__':
app.run_server(debug=False, host='0.0.0.0', port=7860)
|