Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -3,7 +3,7 @@ import pandas as pd
|
|
| 3 |
import altair as alt
|
| 4 |
|
| 5 |
st.set_page_config(page_title="Shipment Monitoring Dashboard", layout="wide")
|
| 6 |
-
st.title("
|
| 7 |
|
| 8 |
uploaded_file = st.file_uploader("Upload your Excel file", type=["xlsx"])
|
| 9 |
|
|
@@ -38,13 +38,13 @@ if uploaded_file:
|
|
| 38 |
df = df[df['Injection Gateway'] == selected_gateway]
|
| 39 |
|
| 40 |
# Filter by ETA date range
|
| 41 |
-
st.subheader("
|
| 42 |
min_date, max_date = df['ETA'].min(), df['ETA'].max()
|
| 43 |
start_date, end_date = st.date_input("Select ETA date range:", [min_date, max_date], min_value=min_date, max_value=max_date)
|
| 44 |
df = df[(df['ETA'] >= pd.to_datetime(start_date)) & (df['ETA'] <= pd.to_datetime(end_date))]
|
| 45 |
|
| 46 |
# Shipment status distribution with interactive selection
|
| 47 |
-
st.subheader("
|
| 48 |
status_order = ["Pending", "WH-IN", "Cargo Ready", "Ship Out"]
|
| 49 |
status_counts = df['Shipment Status'].value_counts().reindex(status_order).reset_index()
|
| 50 |
status_counts.columns = ['Shipment Status', 'Count']
|
|
@@ -66,7 +66,7 @@ if uploaded_file:
|
|
| 66 |
selected_status = selection.init['Shipment Status'] if selection else "Pending"
|
| 67 |
|
| 68 |
# Volume by ETA
|
| 69 |
-
st.subheader("
|
| 70 |
volume_by_eta = df.groupby('ETA').agg({
|
| 71 |
'MAWB': 'count',
|
| 72 |
'Cartons': 'sum',
|
|
@@ -83,7 +83,7 @@ if uploaded_file:
|
|
| 83 |
st.altair_chart(line_chart, use_container_width=True)
|
| 84 |
|
| 85 |
# Table view sorted by ETA and filtered by selected status
|
| 86 |
-
st.subheader("
|
| 87 |
filtered_df = df[df['Shipment Status'] == selected_status]
|
| 88 |
sorted_df = filtered_df[['MAWB', 'ETA', 'ATA', 'Shipment Status', 'Cartons', 'Last Mile Carrier']].sort_values(by='ETA')
|
| 89 |
st.dataframe(sorted_df, use_container_width=True)
|
|
|
|
| 3 |
import altair as alt
|
| 4 |
|
| 5 |
st.set_page_config(page_title="Shipment Monitoring Dashboard", layout="wide")
|
| 6 |
+
st.title("Shipment Monitoring Dashboard")
|
| 7 |
|
| 8 |
uploaded_file = st.file_uploader("Upload your Excel file", type=["xlsx"])
|
| 9 |
|
|
|
|
| 38 |
df = df[df['Injection Gateway'] == selected_gateway]
|
| 39 |
|
| 40 |
# Filter by ETA date range
|
| 41 |
+
st.subheader("Filter by ETA Date Range")
|
| 42 |
min_date, max_date = df['ETA'].min(), df['ETA'].max()
|
| 43 |
start_date, end_date = st.date_input("Select ETA date range:", [min_date, max_date], min_value=min_date, max_value=max_date)
|
| 44 |
df = df[(df['ETA'] >= pd.to_datetime(start_date)) & (df['ETA'] <= pd.to_datetime(end_date))]
|
| 45 |
|
| 46 |
# Shipment status distribution with interactive selection
|
| 47 |
+
st.subheader("Shipment Status Distribution")
|
| 48 |
status_order = ["Pending", "WH-IN", "Cargo Ready", "Ship Out"]
|
| 49 |
status_counts = df['Shipment Status'].value_counts().reindex(status_order).reset_index()
|
| 50 |
status_counts.columns = ['Shipment Status', 'Count']
|
|
|
|
| 66 |
selected_status = selection.init['Shipment Status'] if selection else "Pending"
|
| 67 |
|
| 68 |
# Volume by ETA
|
| 69 |
+
st.subheader("Shipment Volume by ETA")
|
| 70 |
volume_by_eta = df.groupby('ETA').agg({
|
| 71 |
'MAWB': 'count',
|
| 72 |
'Cartons': 'sum',
|
|
|
|
| 83 |
st.altair_chart(line_chart, use_container_width=True)
|
| 84 |
|
| 85 |
# Table view sorted by ETA and filtered by selected status
|
| 86 |
+
st.subheader("Shipment Detail View by ETA")
|
| 87 |
filtered_df = df[df['Shipment Status'] == selected_status]
|
| 88 |
sorted_df = filtered_df[['MAWB', 'ETA', 'ATA', 'Shipment Status', 'Cartons', 'Last Mile Carrier']].sort_values(by='ETA')
|
| 89 |
st.dataframe(sorted_df, use_container_width=True)
|