Spaces:
Sleeping
Sleeping
import streamlit as st | |
import pandas as pd | |
import os | |
from pathlib import Path | |
def home_page(): | |
""" | |
Render the combined home and about page | |
""" | |
st.title("Delivery Route Optimization") | |
st.write(""" | |
Welcome to the Delivery Route Optimization application! This tool helps logistics teams | |
optimize delivery routes for a fleet of vehicles while considering constraints such as delivery time windows, | |
vehicle capacity, and traffic conditions. | |
Use the navigation sidebar to explore different features of this application. | |
""") | |
# Quick stats from data at the top | |
try: | |
# Get data paths | |
root_dir = Path(__file__).resolve().parent.parent.parent | |
delivery_path = os.path.join(root_dir, 'data', 'delivery-data', 'delivery_data.csv') | |
vehicle_path = os.path.join(root_dir, 'data', 'vehicle-data', 'vehicle_data.csv') | |
if os.path.exists(delivery_path) and os.path.exists(vehicle_path): | |
# Load data for stats | |
delivery_data = pd.read_csv(delivery_path) | |
vehicle_data = pd.read_csv(vehicle_path) | |
# Display stats | |
st.subheader("Current Statistics") | |
col1, col2, col3 = st.columns(3) | |
with col1: | |
st.metric("Total Deliveries", len(delivery_data)) | |
with col2: | |
st.metric("Total Vehicles", len(vehicle_data)) | |
with col3: | |
pending = delivery_data[delivery_data['status'] == 'Pending'] if 'status' in delivery_data.columns else [] | |
st.metric("Pending Deliveries", len(pending)) | |
# Add more detailed stats in an expander | |
with st.expander("View More Statistics"): | |
# Status breakdown | |
if 'status' in delivery_data.columns: | |
st.write("#### Delivery Status Breakdown") | |
status_counts = delivery_data['status'].value_counts().reset_index() | |
status_counts.columns = ['Status', 'Count'] | |
status_chart = st.bar_chart(status_counts.set_index('Status')) | |
# Priority breakdown | |
if 'priority' in delivery_data.columns: | |
st.write("#### Delivery Priority Breakdown") | |
priority_counts = delivery_data['priority'].value_counts().reset_index() | |
priority_counts.columns = ['Priority', 'Count'] | |
priority_chart = st.bar_chart(priority_counts.set_index('Priority')) | |
else: | |
st.info("Please generate data first to see statistics") | |
st.code("python src/utils/generate_all_data.py") | |
except Exception as e: | |
st.info("Generate data first to see statistics") | |
st.code("python src/utils/generate_all_data.py") | |
# Add the image | |
img_path = Path(__file__).resolve().parent.parent.parent / "img" / "delivery-route-network.jpg" | |
if os.path.exists(img_path): | |
st.image(str(img_path), caption="Delivery Route Network") | |
# Make sure the function can be executed standalone | |
if __name__ == "__main__": | |
st.set_page_config(page_title="Home - Delivery Route Optimization", page_icon="π", layout="wide") | |
home_page() |