Spaces:
Sleeping
Sleeping
# 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) | |