Xpolymer123 commited on
Commit
ec79501
·
verified ·
1 Parent(s): 9c1602e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -3
app.py CHANGED
@@ -10,19 +10,22 @@ def generate_random_color():
10
  b = random.randint(0, 255)
11
  return f'rgb({r}, {g}, {b})'
12
 
 
 
13
  st.title("Project Schedule/Gantt Chart Generator")
14
 
15
  project_name = st.text_input("Project Name:")
16
  start_date = st.date_input("Project Start Date:", value=datetime.today())
 
17
  num_activities = st.number_input("Number of Activities (5-20):", min_value=5, max_value=20, value=5)
18
 
19
- activities = [] # Initialize an empty list to store activity data
20
  for i in range(num_activities):
21
  col1, col2 = st.columns(2)
22
  with col1:
23
  activity_name = st.text_input(f"Activity {i+1} Name:", key=f"name_{i}")
24
  with col2:
25
- activity_duration = st.number_input(f"Activity {i+1} Duration (weeks):", min_value=1, key=f"duration_{i}") # Duration in weeks
26
  activities.append({"Task": activity_name, "Duration": activity_duration})
27
 
28
  if st.button("Create Gantt Chart"):
@@ -36,4 +39,20 @@ if st.button("Create Gantt Chart"):
36
  df['Finish'] = df['Start']
37
  for i in range(len(df)):
38
  if i > 0:
39
- df.loc[i, 'Start'] = df.loc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  b = random.randint(0, 255)
11
  return f'rgb({r}, {g}, {b})'
12
 
13
+ st.set_page_config(layout="wide") # Make the layout wider
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 (5-20):", min_value=5, max_value=20, value=5)
21
 
22
+ activities =
23
  for i in range(num_activities):
24
  col1, col2 = st.columns(2)
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 (weeks):", min_value=1, key=f"duration_{i}")
29
  activities.append({"Task": activity_name, "Duration": activity_duration})
30
 
31
  if st.button("Create Gantt Chart"):
 
39
  df['Finish'] = df['Start']
40
  for i in range(len(df)):
41
  if i > 0:
42
+ df.loc[i, 'Start'] = df.loc[i-1, 'Finish']
43
+ df.loc[i, 'Finish'] = df.loc[i, 'Start'] + pd.to_timedelta(df.loc[i, 'Duration'] * 7, unit='D')
44
+
45
+ df['Start_str'] = df['Start'].dt.strftime('%Y-%m-%d')
46
+ df['Finish_str'] = df['Finish'].dt.strftime('%Y-%m-%d')
47
+ df['Start_week'] = df['Start'].dt.to_period('W-SUN').dt.start_time.dt.strftime('%Y-%m-%d')
48
+ df['Finish_week'] = df['Finish'].dt.to_period('W-SUN').dt.end_time.dt.strftime('%Y-%m-%d')
49
+
50
+ project_end_date = df['Finish'].max().strftime('%Y-%m-%d') #Calculate project end date
51
+ st.write(f"Project End Date: {project_end_date}") #Display project end date
52
+
53
+ data =
54
+ for index, row in df.iterrows():
55
+ data.append(dict(Task=row['Task'], Start=row['Start_week'], Finish=row['Finish_week']))
56
+
57
+ fig = ff.create_gantt(data, colors=[generate_random_color() for _ in range(len(df))],
58
+ index_col='