Prasanna1622's picture
Update app.py
f394a2b verified
raw
history blame
2.33 kB
# app.py
import streamlit as st
from salesforce_integration import fetch_poles
from modules.visuals import display_dashboard, display_charts
import plotly.express as px
import pandas as pd
# Title
st.title("πŸ“‘ VIEP Smart Poles Dashboard")
# Get data
df = fetch_poles()
# Fetch the raw data from Salesforce
df = fetch_poles()
# Sidebar Filters (your code should go here!)
st.sidebar.header("πŸ“ Filter Data")
selected_alert_levels = st.sidebar.multiselect(
"Alert Level", ["Red", "Yellow", "Green"], default=["Red", "Yellow", "Green"]
)
selected_sites = st.sidebar.multiselect(
"Site", ["Hyderabad", "Gadwal", "Kurnool", "Ballari"],
default=["Hyderabad", "Gadwal", "Kurnool", "Ballari"]
)
selected_camera_status = st.sidebar.selectbox(
"Camera Status", ["All", "Online", "Offline"]
)
# Apply filters to create filtered_df
filtered_df = df[
(df["Alert_Level__c"].isin(selected_alert_levels)) &
(df["Site__c"].isin(selected_sites))
]
if selected_camera_status != "All":
filtered_df = filtered_df[filtered_df["Camera_Status__c"] == selected_camera_status]
# Now use filtered_df everywhere
# Show system summary
display_dashboard(filtered_df)
# Show pole table
st.subheader("πŸ“‹ Pole Table")
st.dataframe(filtered_df)
# Show charts
display_charts(filtered_df)
# Tilt vs Vibration Scatter Plot
st.subheader("πŸ“ˆ Tilt vs Vibration")
fig_tv = px.scatter(
filtered_df,
x="Tilt_Angle__c",
y="Vibration_Level__c",
color="Alert_Level__c",
hover_name="Name",
title="Tilt Angle vs Vibration Level"
)
st.plotly_chart(fig_tv)
# 1. System Summary (Show first)
display_dashboard(df)
# 2. Pole Table
st.subheader("πŸ“‹ Pole Table")
st.dataframe(df, use_container_width=True)
# 3. Charts
st.subheader("βš™ Energy Generation (Solar vs Wind)")
st.plotly_chart(px.bar(df, x="Name", y=["Solar_Generation__c", "Wind_Generation__c"], barmode="group"))
# 4. Charts (Energy + Alert Breakdown)
display_charts(df)
import plotly.express as df
st.subheader("πŸ“ˆ Tilt vs Vibration")
fig_tv = px.scatter(
filtered_df,
x="Tilt_Angle__c", # make sure this is your column name
y="Vibration_Level__c", # make sure this is your column name
color="Alert_Level__c",
hover_name="Name",
title="Tilt Angle vs Vibration Level"
)
st.plotly_chart(fig_tv)