Darpan07 commited on
Commit
b6fe01d
1 Parent(s): 07d85ca

Update Utils.py

Browse files
Files changed (1) hide show
  1. Utils.py +67 -0
Utils.py CHANGED
@@ -1,6 +1,12 @@
1
  import pandas as pd
2
  import streamlit as st
3
  import base64
 
 
 
 
 
 
4
 
5
 
6
  def clear_rfp_data():
@@ -30,3 +36,64 @@ def estimate_to_value(estimate):
30
  else:
31
  # Handle the case when the estimate is not one of the specified values
32
  return "Invalid estimate"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import pandas as pd
2
  import streamlit as st
3
  import base64
4
+ from roadmapper.roadmap import Roadmap
5
+ from roadmapper.timelinemode import TimelineMode
6
+ import datetime
7
+ import re
8
+ from io import BytesIO
9
+ import json
10
 
11
 
12
  def clear_rfp_data():
 
36
  else:
37
  # Handle the case when the estimate is not one of the specified values
38
  return "Invalid estimate"
39
+
40
+
41
+ def is_key_value_present(array_of_objects, key, value):
42
+ for obj in array_of_objects:
43
+ if key in obj and obj[key] == value:
44
+ return True
45
+ return False
46
+
47
+ def generate_roadmap_image():
48
+ # Calculate the project start date (15 days from today)
49
+ project_start_date = datetime.datetime.now() + datetime.timedelta(days=15)
50
+ project_start_date_str = project_start_date.strftime("%Y-%m-%d")
51
+
52
+ roadmap = Roadmap(1400, 800, colour_theme="BLUEMOUNTAIN")
53
+ roadmap.set_title("Project Roadmap")
54
+ roadmap.set_subtitle(st.session_state["project_name"])
55
+ roadmap.set_timeline(TimelineMode.MONTHLY, start=project_start_date_str, number_of_items=12)
56
+ group_index = 1
57
+ milestone_index = 1
58
+ data = st.session_state["roadmap_data_json"]
59
+ prev_phase_end_date = None
60
+
61
+ data = json.loads(st.session_state["roadmap_data_json"])
62
+
63
+ for phase in data["phases"]:
64
+ group_name = f"{phase['name']} - {group_index}"
65
+ group = roadmap.add_group(group_name)
66
+
67
+ milestone_start_date = project_start_date if prev_phase_end_date is None else prev_phase_end_date
68
+ for milestone in phase["milestones"]:
69
+ task_name = f"milestone - {milestone_index}"
70
+
71
+ total_time_range = [int(num) for num in re.findall(r'\d+', milestone["totalTime"])]
72
+ total_working_days = sum(total_time_range) / 2
73
+ average_duration = total_working_days / 5 * 7
74
+ milestone_end_date = milestone_start_date + datetime.timedelta(days=average_duration)
75
+
76
+ print(milestone_start_date,milestone_end_date)
77
+
78
+ group.add_task(task_name, milestone_start_date.strftime("%Y-%m-%d"), milestone_end_date.strftime("%Y-%m-%d"))
79
+
80
+ milestone_start_date = milestone_end_date
81
+ milestone_index += 1
82
+ prev_phase_end_date = milestone_end_date
83
+ group_index += 1
84
+
85
+ roadmap.set_footer("Generated by Roadmapper")
86
+ roadmap.draw()
87
+ roadmap.save("project_roadmap.png")
88
+
89
+ image_buffer = BytesIO()
90
+
91
+ image_data = image_buffer.getvalue()
92
+ return image_data
93
+
94
+ def get_binary_file_downloader_html(bin_file, file_label, button_label):
95
+ with st.spinner("Processing..."):
96
+ # Provide a download link for the image
97
+ bin_str = base64.b64encode(bin_file).decode()
98
+ href = f'<a href="data:application/octet-stream;base64,{bin_str}" download="{file_label}">{button_label}</a>'
99
+ return href