IAMTFRMZA commited on
Commit
65e2013
·
verified ·
1 Parent(s): ef569be

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -9
app.py CHANGED
@@ -17,7 +17,7 @@ df = pd.DataFrame(data)
17
 
18
  # === Parse and clean ===
19
  df['Timestamp'] = pd.to_datetime(df['Timestamp'], dayfirst=True, errors='coerce')
20
- df['Date'] = df['Timestamp'].dt.date
21
  df['Time'] = df['Timestamp'].dt.time
22
 
23
  location_split = df['Location'].str.split(',', expand=True)
@@ -29,12 +29,12 @@ df = df.sort_values(by=['Rep Name', 'Timestamp'])
29
  df['Time Diff (min)'] = df.groupby(['Rep Name', 'Date'])['Timestamp'].diff().dt.total_seconds().div(60).fillna(0)
30
 
31
  # === Functions ===
32
- def get_reps(date):
33
- reps = df[df['Date'] == pd.to_datetime(date).date()]['Rep Name'].dropna().unique()
34
  return sorted(reps)
35
 
36
- def show_map(date, rep):
37
- subset = df[(df['Date'] == pd.to_datetime(date).date()) & (df['Rep Name'] == rep)]
38
  if subset.empty:
39
  return "No valid data", None
40
 
@@ -50,18 +50,21 @@ def show_map(date, rep):
50
  lat="Latitude", lon="Longitude", text=["Start"], color_discrete_sequence=["green"]).data[0])
51
  fig.add_trace(px.scatter_mapbox(pd.DataFrame([subset.iloc[-1]]),
52
  lat="Latitude", lon="Longitude", text=["End"], color_discrete_sequence=["red"]).data[0])
53
- fig.update_layout(mapbox_style="open-street-map", title=f"{rep} on {date}")
54
  table = subset[['Dealership Name', 'Time', 'Time Diff (min)']]
55
  return table, fig
56
 
57
  # === Gradio UI ===
58
- def update(date):
59
- return gr.Dropdown(choices=get_reps(date), label="Select Rep")
60
 
61
  with gr.Blocks() as app:
62
  gr.Markdown("## 🗺️ Rep Route & Visit Visualizer")
63
 
64
- date_picker = gr.Dropdown(label="Select Date", choices=sorted(df['Date'].unique(), reverse=True))
 
 
 
65
  rep_picker = gr.Dropdown(label="Select Rep")
66
 
67
  btn = gr.Button("Show Route")
 
17
 
18
  # === Parse and clean ===
19
  df['Timestamp'] = pd.to_datetime(df['Timestamp'], dayfirst=True, errors='coerce')
20
+ df['Date'] = df['Timestamp'].dt.date.astype(str) # ✅ Convert to string
21
  df['Time'] = df['Timestamp'].dt.time
22
 
23
  location_split = df['Location'].str.split(',', expand=True)
 
29
  df['Time Diff (min)'] = df.groupby(['Rep Name', 'Date'])['Timestamp'].diff().dt.total_seconds().div(60).fillna(0)
30
 
31
  # === Functions ===
32
+ def get_reps(date_str):
33
+ reps = df[df['Date'] == date_str]['Rep Name'].dropna().unique()
34
  return sorted(reps)
35
 
36
+ def show_map(date_str, rep):
37
+ subset = df[(df['Date'] == date_str) & (df['Rep Name'] == rep)]
38
  if subset.empty:
39
  return "No valid data", None
40
 
 
50
  lat="Latitude", lon="Longitude", text=["Start"], color_discrete_sequence=["green"]).data[0])
51
  fig.add_trace(px.scatter_mapbox(pd.DataFrame([subset.iloc[-1]]),
52
  lat="Latitude", lon="Longitude", text=["End"], color_discrete_sequence=["red"]).data[0])
53
+ fig.update_layout(mapbox_style="open-street-map", title=f"{rep} on {date_str}")
54
  table = subset[['Dealership Name', 'Time', 'Time Diff (min)']]
55
  return table, fig
56
 
57
  # === Gradio UI ===
58
+ def update(date_str):
59
+ return gr.Dropdown(choices=get_reps(date_str), label="Select Rep")
60
 
61
  with gr.Blocks() as app:
62
  gr.Markdown("## 🗺️ Rep Route & Visit Visualizer")
63
 
64
+ date_picker = gr.Dropdown(
65
+ label="Select Date",
66
+ choices=sorted(df['Date'].unique(), reverse=True)
67
+ )
68
  rep_picker = gr.Dropdown(label="Select Rep")
69
 
70
  btn = gr.Button("Show Route")