import streamlit as st
from pymongo import MongoClient
from datetime import datetime
import pandas as pd

# MongoDB에 연결
client = MongoClient('localhost', 27017)
db = client['schedule']
collection = db['events']

# Streamlit 페이지 레이아웃
st.title("일정 기록 페이지")

# 입력 폼
event_date = st.date_input("스케줄 날짜")
priority = st.selectbox("우선순위", ["낮음", "보통", "높음"])
location = st.text_input("장소")

if st.button("일정 추가"):
    # 입력한 데이터를 MongoDB에 삽입
    event_data = {
        'date': datetime.combine(event_date, datetime.min.time()),
        'priority': priority,
        'location': location,
        'timestamp': datetime.now()
    }
    collection.insert_one(event_data)
    st.success("일정이 추가되었습니다.")

# MongoDB에서 데이터 조회
st.title("일정 목록")
cursor = collection.find()

# 조회한 데이터를 테이블로 표시
event_list = list(cursor)
if event_list:
    df = pd.DataFrame(event_list)
    st.table(df)
else:
    st.info("일정이 없습니다.")
import streamlit as st
from pymongo import MongoClient
from datetime import datetime, time, timedelta
import pandas as pd

# MongoDB에 연결
client = MongoClient('localhost', 27017)
db = client['schedule']
collection = db['events']

# Streamlit 페이지 레이아웃
st.title("일정 기록 페이지")

# 입력 폼
event_date = st.date_input("스케줄 날짜")
event_time = st.time_input("스케줄 시간")
priority = st.selectbox("우선순위", ["낮음", "보통", "높음"])
location = st.text_input("장소")

if st.button("일정 추가"):
    # 입력한 데이터를 MongoDB에 삽입
    # Combine date and time using datetime.combine
    event_datetime = datetime.combine(event_date, time(hour=event_time.hour, minute=event_time.minute))
    event_data = {
        'datetime': event_datetime,
        'priority': priority,
        'location': location,
        'timestamp': datetime.now()
    }
    collection.insert_one(event_data)
    st.success("일정이 추가되었습니다.")

# MongoDB에서 데이터 조회
st.title("일정 목록")
cursor = collection.find()

# 조회한 데이터를 테이블로 표시
event_list = list(cursor)
if event_list:
    # DataFrame을 생성할 때 '_id' 필드를 제외하고 출력
    df = pd.DataFrame(event_list, columns=['datetime', 'priority', 'location', 'timestamp'])
    st.table(df)
else:
    st.info("일정이 없습니다.")

사진 기능까지 포함 사례

import streamlit as st
from pymongo import MongoClient
from datetime import datetime
from PIL import Image

# MongoDB에 연결
client = MongoClient('localhost', 27017)
db = client['schedule_photo']
collection = db['events']

# Streamlit 페이지 레이아웃
st.title("일정 기록 페이지")

# 입력 폼
event_date = st.date_input("스케줄 날짜")
priority = st.selectbox("우선순위", ["낮음", "보통", "높음"])
location = st.text_input("장소")
uploaded_file = st.file_uploader("사진 업로드", type=["jpg", "jpeg", "png"])

if st.button("일정 추가"):
    # 입력한 데이터를 MongoDB에 삽입
    event_data = {
        'date': datetime.combine(event_date, datetime.min.time()),  # datetime.datetime으로 변환
        'priority': priority,
        'location': location,
        'timestamp': datetime.now(),
        'photo': None
    }

    if uploaded_file is not None:
        # 업로드한 파일을 MongoDB에 저장하고 해당 URL을 데이터에 추가
        image = Image.open(uploaded_file)
        photo_url = f"photos/{datetime.now().strftime('%Y%m%d%H%M%S')}.png"
        image.save(photo_url)
        event_data['photo'] = photo_url

    collection.insert_one(event_data)
    st.success("일정이 추가되었습니다.")

# MongoDB에서 데이터 조회
st.title("일정 목록")
cursor = collection.find()

# 조회한 데이터를 테이블로 표시
event_list = list(cursor)
if event_list:
    for event in event_list:
        # 사진이 있는 경우 작게 표시
        if event['photo']:
            st.image(event['photo'], caption=f"{event['date']} - {event['location']}", width=150)
        st.write(f"날짜: {event['date'].strftime('%Y-%m-%d')}, 우선순위: {event['priority']}, 장소: {event['location']}")
else:
    st.info("일정이 없습니다.")