Spaces:
Running
Running
Update app.py
Browse files
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)
|
| 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 |
-
|
| 30 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 31 |
|
| 32 |
-
|
| 33 |
-
|
|
|
|
|
|
| 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
|