Naruto9 commited on
Commit
c76d355
1 Parent(s): 258a6c0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +137 -31
app.py CHANGED
@@ -1,15 +1,65 @@
1
  import streamlit as st
2
  import pandas as pd
3
-
4
- # Placeholder data structures (replace with actual data sources)
5
- if 'drivers' not in st.session_state: # Initialize if not already in session state
6
- st.session_state.drivers = pd.DataFrame(columns=["driver_id", "name", "location", "status"])
7
- if 'orders' not in st.session_state:
8
- st.session_state.orders = pd.DataFrame(columns=["order_id", "pickup_location", "dropoff_location", "status"])
9
- if 'zone_pressure' not in st.session_state:
10
- st.session_state.zone_pressure = pd.DataFrame(columns=['zone_id', 'pressure_level'])
11
- if 'analytics' not in st.session_state:
12
- st.session_state.analytics = pd.DataFrame(columns=['performance_indicators', 'drivers_trips', 'delivery_times', 'delivery_delay', 'customer_satisfaction'])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
 
14
  # Basic UI structure
15
  st.title("Dispatch Call Scheduler")
@@ -32,17 +82,23 @@ if selected_page == "Order Management":
32
  with st.form("add_order_form"):
33
  st.write("Add New Order")
34
  order_id = st.text_input("Order ID")
 
35
  pickup_location = st.text_input("Pickup Location")
36
  dropoff_location = st.text_input("Dropoff Location")
37
  status = st.selectbox("Status", ["Pending", "In Progress", "Completed"])
38
  submitted = st.form_submit_button("Add Order")
39
  if submitted:
40
- new_order = pd.DataFrame({"order_id": [order_id], "pickup_location": [pickup_location],
41
- "dropoff_location": [dropoff_location], "status": [status]})
42
- st.session_state.orders = pd.concat([st.session_state.orders, new_order], ignore_index=True)
 
 
 
 
 
43
 
44
  # Display order list
45
- st.write(st.session_state.orders)
46
 
47
  # Driver Management page
48
  elif selected_page == "Driver Management":
@@ -54,17 +110,21 @@ elif selected_page == "Driver Management":
54
  driver_id = st.text_input("Driver ID")
55
  name = st.text_input("Name")
56
  location = st.text_input("Location")
57
- status = st.selectbox("Status", ["Available", "On Duty", "Offline"])
58
  submitted = st.form_submit_button("Add Driver")
59
  if submitted:
60
- new_driver = pd.DataFrame({"driver_id": [driver_id], "name": [name],
61
- "location": [location], "status": [status]})
62
- st.session_state.drivers = pd.concat([st.session_state.drivers, new_driver], ignore_index=True)
 
 
 
 
63
 
64
  # Display driver list
65
- st.write(st.session_state.drivers)
66
 
67
- # Zone Pressure page
68
  elif selected_page == "Zone Pressure":
69
  st.subheader("Dynamic Zone Pressure Monitoring")
70
 
@@ -75,11 +135,14 @@ elif selected_page == "Zone Pressure":
75
  pressure_level = st.number_input("Pressure Level", min_value=0, max_value=10, value=0)
76
  submitted = st.form_submit_button("Add Zone Data")
77
  if submitted:
78
- new_zone_data = pd.DataFrame({"zone_id": [zone_id], "pressure_level": [pressure_level]})
79
- st.session_state.zone_pressure = pd.concat([st.session_state.zone_pressure, new_zone_data], ignore_index=True)
 
 
 
80
 
81
  # Display zone pressure data
82
- st.write(st.session_state.zone_pressure)
83
 
84
  # Analytics Dashboard page
85
  elif selected_page == "Analytics":
@@ -89,18 +152,61 @@ elif selected_page == "Analytics":
89
  with st.form("add_analytics_form"):
90
  st.write("Add Analytics Information")
91
  performance_indicators = st.text_input("Performance Indicators")
92
- drivers_trips = st.text_input("Drivers Trips")
93
  delivery_times = st.text_input("Delivery Times")
94
  delivery_delay = st.text_input("Delivery Delay")
95
  customer_satisfaction = st.text_input("Customer Satisfaction")
96
  submitted = st.form_submit_button("Add Analytics Data")
97
  if submitted:
98
- new_analytics_data = pd.DataFrame({"performance_indicators": [performance_indicators],
99
- "drivers_trips": [drivers_trips],
100
- "delivery_times": [delivery_times],
101
- "delivery_delay": [delivery_delay],
102
- "customer_satisfaction": [customer_satisfaction]})
103
- st.session_state.analytics = pd.concat([st.session_state.analytics, new_analytics_data], ignore_index=True)
 
 
104
 
105
  # Display analytics information
106
- st.write(st.session_state.analytics)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import streamlit as st
2
  import pandas as pd
3
+ import sqlite3
4
+
5
+ # Establish database connection (create if it doesn't exist)
6
+ conn = sqlite3.connect('dispatch_data.db')
7
+ cursor = conn.cursor()
8
+
9
+ # Create tables if they don't exist
10
+ cursor.execute('''
11
+ CREATE TABLE IF NOT EXISTS drivers (
12
+ driver_id TEXT PRIMARY KEY,
13
+ name TEXT,
14
+ location TEXT,
15
+ status TEXT
16
+ )
17
+ ''')
18
+ cursor.execute('''
19
+ CREATE TABLE IF NOT EXISTS orders (
20
+ order_id TEXT PRIMARY KEY,
21
+ pickup_location TEXT,
22
+ dropoff_location TEXT,
23
+ status TEXT
24
+ )
25
+ ''')
26
+ cursor.execute('''
27
+ CREATE TABLE IF NOT EXISTS zone_pressure (
28
+ zone_id TEXT PRIMARY KEY,
29
+ pressure_level INTEGER
30
+ )
31
+ ''')
32
+ cursor.execute('''
33
+ CREATE TABLE IF NOT EXISTS analytics (
34
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
35
+ performance_indicators TEXT,
36
+ driver_trips TEXT,
37
+ delivery_times TEXT,
38
+ delivery_delay TEXT,
39
+ customer_satisfaction TEXT
40
+ )
41
+ ''')
42
+
43
+ # Functions to interact with the database
44
+
45
+ def fetch_data(table_name):
46
+ cursor.execute(f"SELECT * FROM {table_name}")
47
+ data = cursor.fetchall()
48
+ columns = [description[0] for description in cursor.description]
49
+ return pd.DataFrame(data, columns=columns)
50
+
51
+ def insert_data(table_name, data):
52
+ columns = ', '.join(data.keys())
53
+ placeholders = ', '.join(['?'] * len(data))
54
+ query = f"INSERT INTO {table_name} ({columns}) VALUES ({placeholders})"
55
+ cursor.execute(query, tuple(data.values()))
56
+ conn.commit()
57
+
58
+ # DataFrames to store information
59
+ drivers = pd.DataFrame(columns=["driver_id", "name", "location", "status"])
60
+ orders = pd.DataFrame(columns=["order_id", "order_time", "pickup_location", "dropoff_location", "status"])
61
+ zone_pressure = pd.DataFrame(columns=['zone_id', 'pressure_level'])
62
+ analytics = pd.DataFrame(columns=['performance_indicators', 'driver_trips', 'delivery_times', 'delivery_delay', 'customer_satisfaction'])
63
 
64
  # Basic UI structure
65
  st.title("Dispatch Call Scheduler")
 
82
  with st.form("add_order_form"):
83
  st.write("Add New Order")
84
  order_id = st.text_input("Order ID")
85
+ order_time = st.text_input("Order Time")
86
  pickup_location = st.text_input("Pickup Location")
87
  dropoff_location = st.text_input("Dropoff Location")
88
  status = st.selectbox("Status", ["Pending", "In Progress", "Completed"])
89
  submitted = st.form_submit_button("Add Order")
90
  if submitted:
91
+ new_order = pd.DataFrame({
92
+ 'order_id': [order_id],
93
+ 'order_time': [order_time],
94
+ 'pickup_location': [pickup_location],
95
+ 'dropoff_location': [dropoff_location],
96
+ 'status': [status]
97
+ })
98
+ orders = pd.concat([orders, new_order], ignore_index=True)
99
 
100
  # Display order list
101
+ st.write(orders)
102
 
103
  # Driver Management page
104
  elif selected_page == "Driver Management":
 
110
  driver_id = st.text_input("Driver ID")
111
  name = st.text_input("Name")
112
  location = st.text_input("Location")
113
+ status = st.selectbox("Status", ["Available", "Unavailable"])
114
  submitted = st.form_submit_button("Add Driver")
115
  if submitted:
116
+ new_driver = pd.DataFrame({
117
+ 'driver_id': [driver_id],
118
+ 'name': [name],
119
+ 'location': [location],
120
+ 'status': [status]
121
+ })
122
+ drivers = pd.concat([drivers, new_driver], ignore_index=True)
123
 
124
  # Display driver list
125
+ st.write(drivers)
126
 
127
+ # Zone Monitoring page
128
  elif selected_page == "Zone Pressure":
129
  st.subheader("Dynamic Zone Pressure Monitoring")
130
 
 
135
  pressure_level = st.number_input("Pressure Level", min_value=0, max_value=10, value=0)
136
  submitted = st.form_submit_button("Add Zone Data")
137
  if submitted:
138
+ new_zone_data = pd.DataFrame({
139
+ 'zone_id': [zone_id],
140
+ 'pressure_level': [pressure_level]
141
+ })
142
+ zone_pressure = pd.concat([zone_pressure, new_zone_data], ignore_index=True)
143
 
144
  # Display zone pressure data
145
+ st.write(zone_pressure)
146
 
147
  # Analytics Dashboard page
148
  elif selected_page == "Analytics":
 
152
  with st.form("add_analytics_form"):
153
  st.write("Add Analytics Information")
154
  performance_indicators = st.text_input("Performance Indicators")
155
+ driver_trips = st.text_input("Driver Trips")
156
  delivery_times = st.text_input("Delivery Times")
157
  delivery_delay = st.text_input("Delivery Delay")
158
  customer_satisfaction = st.text_input("Customer Satisfaction")
159
  submitted = st.form_submit_button("Add Analytics Data")
160
  if submitted:
161
+ new_analytics_data = pd.DataFrame({
162
+ 'performance_indicators': [performance_indicators],
163
+ 'driver_trips': [driver_trips],
164
+ 'delivery_times': [delivery_times],
165
+ 'delivery_delay': [delivery_delay],
166
+ 'customer_satisfaction': [customer_satisfaction]
167
+ })
168
+ analytics = pd.concat([analytics, new_analytics_data], ignore_index=True)
169
 
170
  # Display analytics information
171
+ st.write(analytics)
172
+
173
+
174
+ # Fetch initial data from the database
175
+ drivers = fetch_data('drivers')
176
+ orders = fetch_data('orders')
177
+ zone_pressure = fetch_data('zone_pressure')
178
+ analytics = fetch_data('analytics')
179
+
180
+ # ... (within your form submission logic)
181
+
182
+ # Instead of appending to DataFrames, insert into the database
183
+ insert_data('orders', new_order.to_dict(orient='records')[0])
184
+
185
+ # Re-fetch data to reflect the changes
186
+ orders = fetch_data('orders')
187
+
188
+
189
+ # Instead of appending to DataFrames, insert into the database
190
+ insert_data('drivers', new_order.to_dict(orient='records')[0])
191
+
192
+ # Re-fetch data to reflect the changes
193
+ orders = fetch_data('drivers')
194
+
195
+
196
+ # Instead of appending to DataFrames, insert into the database
197
+ insert_data('zone_pressure', new_order.to_dict(orient='records')[0])
198
+
199
+ # Re-fetch data to reflect the changes
200
+ orders = fetch_data('zone_pressure')
201
+
202
+
203
+ # Instead of appending to DataFrames, insert into the database
204
+ insert_data('analytics', new_order.to_dict(orient='records')[0])
205
+
206
+ # Re-fetch data to reflect the changes
207
+ orders = fetch_data('analytics')
208
+
209
+ # ... (similarly for other forms)
210
+
211
+ # Close the database connection when the app is done
212
+ st.session_state.on_session_end = conn.close