Xpolymer123 commited on
Commit
c9c4c03
·
verified ·
1 Parent(s): 0855c6c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -7
app.py CHANGED
@@ -11,13 +11,13 @@ def generate_random_color():
11
  return f'rgb({r}, {g}, {b})'
12
 
13
  st.set_page_config(layout="wide")
14
-
15
  st.title("Project Schedule/Gantt Chart Generator")
16
 
17
  project_name = st.text_input("Project Name:")
18
  start_date = st.date_input("Project Start Date:", value=datetime.today())
 
19
 
20
- num_activities = st.number_input("Number of Activities (Minimum 1):", min_value=1, value=5) # No maximum limit
21
 
22
  activities =
23
  for i in range(num_activities):
@@ -25,9 +25,30 @@ for i in range(num_activities):
25
  with col1:
26
  activity_name = st.text_input(f"Activity {i+1} Name:", key=f"name_{i}")
27
  with col2:
28
- activity_duration = st.number_input(f"Activity {i+1} Duration:", min_value=1, key=f"duration_{i}")
29
- duration_unit = st.selectbox(f"Duration Unit for Activity {i+1}", options=["Days", "Weeks", "Months"], key=f"unit_{i}")
30
- activities.append({"Task": activity_name, "Duration": activity_duration, "Unit": duration_unit})
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
 
32
- if st.button("Create Gantt Chart"): #Button is now correctly placed
33
- if
 
 
11
  return f'rgb({r}, {g}, {b})'
12
 
13
  st.set_page_config(layout="wide")
 
14
  st.title("Project Schedule/Gantt Chart Generator")
15
 
16
  project_name = st.text_input("Project Name:")
17
  start_date = st.date_input("Project Start Date:", value=datetime.today())
18
+ end_date = st.date_input("Project End Date:", value=datetime.today() + timedelta(days=30)) # Default 30 days ahead
19
 
20
+ num_activities = st.number_input("Number of Activities (Minimum 1):", min_value=1, value=5)
21
 
22
  activities =
23
  for i in range(num_activities):
 
25
  with col1:
26
  activity_name = st.text_input(f"Activity {i+1} Name:", key=f"name_{i}")
27
  with col2:
28
+ activity_duration = st.number_input(f"Activity {i+1} Duration (days):", min_value=1, key=f"duration_{i}")
29
+ activities.append({"Task": activity_name, "Duration": activity_duration})
30
+
31
+ if st.button("Create Gantt Chart"):
32
+ if not project_name:
33
+ st.error("Please enter a project name.")
34
+ elif any(not activity["Task"] for activity in activities):
35
+ st.error("Please enter names for all activities.")
36
+ elif start_date > end_date:
37
+ st.error("Start date cannot be after end date.")
38
+ else:
39
+ df = pd.DataFrame(activities)
40
+ df['Start'] = pd.to_datetime(start_date)
41
+ df['Finish'] = df['Start']
42
+
43
+ for i in range(len(df)):
44
+ if i > 0:
45
+ df.loc[i, 'Start'] = df.loc[i - 1, 'Finish']
46
+ df.loc[i, 'Finish'] = df.loc[i, 'Start'] + pd.to_timedelta(df.loc[i, 'Duration'], unit='D')
47
+
48
+ df['Start_str'] = df['Start'].dt.strftime('%Y-%m-%d')
49
+ df['Finish_str'] = df['Finish'].dt.strftime('%Y-%m-%d')
50
+
51
 
52
+ data =
53
+ for index, row in df.iterrows():
54
+ data.append(dict(Task=row['Task'], Start=row['Start