BulatF commited on
Commit
f72c5a3
·
1 Parent(s): a10777c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +78 -30
app.py CHANGED
@@ -47,45 +47,93 @@ if not st.session_state.logged_in:
47
  else:
48
  st.warning("Invalid username or password")
49
 
 
50
  # Main App
51
  if st.session_state.logged_in:
52
  st.title("Stand-Up Taker App")
53
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  last_standup_taker = st.session_state.last_entry['standup_taker']
55
  last_date = st.session_state.last_entry['date']
56
 
57
  if st.button("Who is taking the stand-up today?"):
58
  next_taker, next_date = get_next_standup_taker(last_standup_taker, last_date)
59
- st.session_state.next_taker = next_taker
60
-
61
- # Update standup_history list
62
- new_entry = {
63
- 'standup_taker': next_taker,
64
- 'date': datetime.now().strftime("%Y-%m-%d")
65
- }
66
- st.session_state.standup_history.append(new_entry)
67
 
68
- st.write(f"The person taking the stand-up today is **{next_taker}**.")
69
- else:
70
- st.write(st.session_state.next_taker)
71
 
72
- if 'forced_taker' not in st.session_state:
73
- st.session_state.forced_taker = ""
74
-
75
- st.session_state.forced_taker = st.text_input("Force a specific person to take the stand-up:", st.session_state.forced_taker)
76
-
77
- if st.button("Force Stand-Up"):
78
- current_weekday = datetime.now().strftime("%A")
79
- if current_weekday in ["Tuesday", "Thursday"]:
80
- if st.session_state.forced_taker in team_members:
81
- new_entry = {
82
- 'standup_taker': st.session_state.forced_taker,
83
- 'date': datetime.now().strftime("%Y-%m-%d")
84
- }
85
- st.session_state.standup_history.append(new_entry)
86
 
87
- st.write(f"The stand-up taker has been forced to **{st.session_state.forced_taker}**.")
88
- else:
89
- st.write("Invalid name. Please enter a valid team member name.")
90
- else:
91
- st.write(f"Stand-up taker can only be forced on Tuesday and Thursday. Today is {current_weekday}.")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  else:
48
  st.warning("Invalid username or password")
49
 
50
+
51
  # Main App
52
  if st.session_state.logged_in:
53
  st.title("Stand-Up Taker App")
54
 
55
+ # Draw the wheel with team members
56
+ st.markdown("""
57
+ <canvas id="wheelCanvas" width="300" height="300"></canvas>
58
+
59
+ <script>
60
+ var canvas = document.getElementById("wheelCanvas");
61
+ var ctx = canvas.getContext("2d");
62
+ var teamMembers = """ + str(team_members) + """;
63
+
64
+ var numMembers = teamMembers.length;
65
+ var anglePerMember = 2 * Math.PI / numMembers;
66
+
67
+ for (var i = 0; i < numMembers; i++) {
68
+ ctx.beginPath();
69
+ ctx.moveTo(150, 150);
70
+ ctx.arc(150, 150, 150, i * anglePerMember, (i + 1) * anglePerMember);
71
+ ctx.lineTo(150, 150);
72
+ ctx.fillStyle = i % 2 == 0 ? "#00ff00" : "#0000ff";
73
+ ctx.fill();
74
+
75
+ ctx.save();
76
+ ctx.translate(150, 150);
77
+ ctx.rotate(i * anglePerMember + anglePerMember / 2);
78
+ ctx.fillStyle = "#000000";
79
+ ctx.fillText(teamMembers[i], 100, 0);
80
+ ctx.restore();
81
+ }
82
+ </script>
83
+ """, unsafe_allow_html=True)
84
+
85
  last_standup_taker = st.session_state.last_entry['standup_taker']
86
  last_date = st.session_state.last_entry['date']
87
 
88
  if st.button("Who is taking the stand-up today?"):
89
  next_taker, next_date = get_next_standup_taker(last_standup_taker, last_date)
 
 
 
 
 
 
 
 
90
 
91
+ # Find the index of the next taker
92
+ next_taker_index = team_members.index(next_taker)
 
93
 
94
+ st.markdown(f"""
95
+ <script>
96
+ var initialAngle = 0;
97
+ var targetIndex = {next_taker_index};
98
+ var targetAngle = targetIndex * anglePerMember + anglePerMember / 2;
99
+ var currentAngle = 0;
 
 
 
 
 
 
 
 
100
 
101
+ function spinWheel() {{
102
+ initialAngle += 0.1;
103
+ currentAngle = initialAngle + targetAngle;
104
+ ctx.clearRect(0, 0, 300, 300);
105
+
106
+ ctx.save();
107
+ ctx.translate(150, 150);
108
+ ctx.rotate(currentAngle);
109
+
110
+ for (var i = 0; i < numMembers; i++) {{
111
+ ctx.beginPath();
112
+ ctx.moveTo(0, 0);
113
+ ctx.arc(0, 0, 150, i * anglePerMember, (i + 1) * anglePerMember);
114
+ ctx.lineTo(0, 0);
115
+ ctx.fillStyle = i % 2 == 0 ? "#00ff00" : "#0000ff";
116
+ ctx.fill();
117
+
118
+ ctx.save();
119
+ ctx.rotate(i * anglePerMember + anglePerMember / 2);
120
+ ctx.fillStyle = "#000000";
121
+ ctx.fillText(teamMembers[i], 100, 0);
122
+ ctx.restore();
123
+ }}
124
+
125
+ ctx.restore();
126
+
127
+ if (initialAngle < Math.PI * 20) {{
128
+ requestAnimationFrame(spinWheel);
129
+ }}
130
+ }}
131
+
132
+ spinWheel();
133
+ </script>
134
+ """, unsafe_allow_html=True)
135
+
136
+ time.sleep(3)
137
+
138
+ st.session_state.next_taker = next_taker
139
+ st.write(f"The person taking the stand-up today is **{next_taker}**.")