Update app.py
Browse files
app.py
CHANGED
@@ -2,14 +2,15 @@ import streamlit as st
|
|
2 |
import pandas as pd
|
3 |
from datetime import datetime
|
4 |
|
|
|
|
|
|
|
5 |
# Giả sử đây là dữ liệu ban đầu từ bảng
|
6 |
data = {
|
7 |
'Người đăng ký': [],
|
8 |
'Thời gian bắt đầu': [],
|
9 |
'Thời gian kết thúc': [],
|
10 |
-
'Phòng
|
11 |
-
'Phòng 2': [],
|
12 |
-
'Phòng 3': []
|
13 |
}
|
14 |
|
15 |
# Chuyển dữ liệu thành DataFrame
|
@@ -19,8 +20,8 @@ df = pd.DataFrame(data)
|
|
19 |
def is_time_overlap(start1, end1, start2, end2):
|
20 |
return max(start1, start2) < min(end1, end2)
|
21 |
|
22 |
-
# Tiêu đề của ứng dụng
|
23 |
-
st.title("Đăng ký phòng họp")
|
24 |
|
25 |
# Nhập thông tin người đăng ký
|
26 |
name = st.text_input("Người đăng ký")
|
@@ -29,39 +30,29 @@ name = st.text_input("Người đăng ký")
|
|
29 |
start_time = st.time_input("Thời gian bắt đầu")
|
30 |
end_time = st.time_input("Thời gian kết thúc")
|
31 |
|
32 |
-
# Chọn phòng
|
33 |
-
|
34 |
-
room2 = st.checkbox('Phòng 2')
|
35 |
-
room3 = st.checkbox('Phòng 3')
|
36 |
|
37 |
# Khi người dùng nhấn nút 'Submit'
|
38 |
if st.button("Submit"):
|
39 |
if start_time >= end_time:
|
40 |
st.error("Thời gian bắt đầu phải nhỏ hơn thời gian kết thúc.")
|
41 |
-
elif not (room1 or room2 or room3):
|
42 |
-
st.error("Bạn phải chọn ít nhất một phòng.")
|
43 |
else:
|
44 |
# Kiểm tra chồng chéo thời gian
|
45 |
overlap = False
|
46 |
for i, row in df.iterrows():
|
47 |
-
if
|
48 |
-
overlap = True
|
49 |
-
if room2 and row['Phòng 2'] and is_time_overlap(row['Thời gian bắt đầu'], row['Thời gian kết thúc'], start_time, end_time):
|
50 |
-
overlap = True
|
51 |
-
if room3 and row['Phòng 3'] and is_time_overlap(row['Thời gian bắt đầu'], row['Thời gian kết thúc'], start_time, end_time):
|
52 |
overlap = True
|
53 |
|
54 |
if overlap:
|
55 |
-
st.error("Thời gian bạn chọn đã bị trùng lặp với một người đăng ký khác.")
|
56 |
else:
|
57 |
# Thêm thông tin vào DataFrame
|
58 |
new_row = {
|
59 |
'Người đăng ký': name,
|
60 |
'Thời gian bắt đầu': start_time,
|
61 |
'Thời gian kết thúc': end_time,
|
62 |
-
'Phòng
|
63 |
-
'Phòng 2': room2,
|
64 |
-
'Phòng 3': room3
|
65 |
}
|
66 |
df = df.append(new_row, ignore_index=True)
|
67 |
st.success("Đăng ký thành công!")
|
|
|
2 |
import pandas as pd
|
3 |
from datetime import datetime
|
4 |
|
5 |
+
# Lấy ngày hiện tại
|
6 |
+
today = datetime.today().strftime('%d/%m/%Y')
|
7 |
+
|
8 |
# Giả sử đây là dữ liệu ban đầu từ bảng
|
9 |
data = {
|
10 |
'Người đăng ký': [],
|
11 |
'Thời gian bắt đầu': [],
|
12 |
'Thời gian kết thúc': [],
|
13 |
+
'Phòng': [] # Chỉ lưu một phòng
|
|
|
|
|
14 |
}
|
15 |
|
16 |
# Chuyển dữ liệu thành DataFrame
|
|
|
20 |
def is_time_overlap(start1, end1, start2, end2):
|
21 |
return max(start1, start2) < min(end1, end2)
|
22 |
|
23 |
+
# Tiêu đề của ứng dụng kèm ngày hiện tại
|
24 |
+
st.title(f"Đăng ký phòng họp ngày {today}")
|
25 |
|
26 |
# Nhập thông tin người đăng ký
|
27 |
name = st.text_input("Người đăng ký")
|
|
|
30 |
start_time = st.time_input("Thời gian bắt đầu")
|
31 |
end_time = st.time_input("Thời gian kết thúc")
|
32 |
|
33 |
+
# Chọn phòng (chỉ một phòng)
|
34 |
+
room = st.radio('Chọn phòng', ('Phòng 1', 'Phòng 2', 'Phòng 3'))
|
|
|
|
|
35 |
|
36 |
# Khi người dùng nhấn nút 'Submit'
|
37 |
if st.button("Submit"):
|
38 |
if start_time >= end_time:
|
39 |
st.error("Thời gian bắt đầu phải nhỏ hơn thời gian kết thúc.")
|
|
|
|
|
40 |
else:
|
41 |
# Kiểm tra chồng chéo thời gian
|
42 |
overlap = False
|
43 |
for i, row in df.iterrows():
|
44 |
+
if row['Phòng'] == room and is_time_overlap(row['Thời gian bắt đầu'], row['Thời gian kết thúc'], start_time, end_time):
|
|
|
|
|
|
|
|
|
45 |
overlap = True
|
46 |
|
47 |
if overlap:
|
48 |
+
st.error(f"Thời gian bạn chọn cho {room} đã bị trùng lặp với một người đăng ký khác.")
|
49 |
else:
|
50 |
# Thêm thông tin vào DataFrame
|
51 |
new_row = {
|
52 |
'Người đăng ký': name,
|
53 |
'Thời gian bắt đầu': start_time,
|
54 |
'Thời gian kết thúc': end_time,
|
55 |
+
'Phòng': room
|
|
|
|
|
56 |
}
|
57 |
df = df.append(new_row, ignore_index=True)
|
58 |
st.success("Đăng ký thành công!")
|