|
import streamlit as st |
|
import pandas as pd |
|
from datetime import datetime |
|
|
|
|
|
data = { |
|
'Người đăng ký': [], |
|
'Thời gian bắt đầu': [], |
|
'Thời gian kết thúc': [], |
|
'Phòng 1': [], |
|
'Phòng 2': [], |
|
'Phòng 3': [] |
|
} |
|
|
|
|
|
df = pd.DataFrame(data) |
|
|
|
|
|
def is_time_overlap(start1, end1, start2, end2): |
|
return max(start1, start2) < min(end1, end2) |
|
|
|
|
|
st.title("Đăng ký phòng họp") |
|
|
|
|
|
name = st.text_input("Người đăng ký") |
|
|
|
|
|
start_time = st.time_input("Thời gian bắt đầu") |
|
end_time = st.time_input("Thời gian kết thúc") |
|
|
|
|
|
room1 = st.checkbox('Phòng 1') |
|
room2 = st.checkbox('Phòng 2') |
|
room3 = st.checkbox('Phòng 3') |
|
|
|
|
|
if st.button("Submit"): |
|
if start_time >= end_time: |
|
st.error("Thời gian bắt đầu phải nhỏ hơn thời gian kết thúc.") |
|
elif not (room1 or room2 or room3): |
|
st.error("Bạn phải chọn ít nhất một phòng.") |
|
else: |
|
|
|
overlap = False |
|
for i, row in df.iterrows(): |
|
if room1 and row['Phòng 1'] and is_time_overlap(row['Thời gian bắt đầu'], row['Thời gian kết thúc'], start_time, end_time): |
|
overlap = True |
|
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): |
|
overlap = True |
|
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): |
|
overlap = True |
|
|
|
if overlap: |
|
st.error("Thời gian bạn chọn đã bị trùng lặp với một người đăng ký khác.") |
|
else: |
|
|
|
new_row = { |
|
'Người đăng ký': name, |
|
'Thời gian bắt đầu': start_time, |
|
'Thời gian kết thúc': end_time, |
|
'Phòng 1': room1, |
|
'Phòng 2': room2, |
|
'Phòng 3': room3 |
|
} |
|
df = df.append(new_row, ignore_index=True) |
|
st.success("Đăng ký thành công!") |
|
|
|
|
|
st.write("Danh sách đăng ký:") |
|
st.dataframe(df) |
|
|