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)