Spaces:
Running
Running
Update app.py
Browse files
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 =
|
| 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}")
|
| 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='
|