import streamlit as st import pandas as pd from datetime import datetime import plotly.express as px import plotly.graph_objects as go from io import BytesIO # Page configuration st.set_page_config(page_title="مدیریت داده‌های مزرعه", layout="wide") # Load data @st.cache_data def load_data(): try: df = pd.read_csv('پایگاه داده.csv') return df except Exception as e: st.error(f"Error loading data: {str(e)}") return pd.DataFrame() # Initialize session state if 'data' not in st.session_state: st.session_state.data = load_data() # Main title st.title("سیستم مدیریت داده‌های مزرعه") # Create three tabs tab1, tab2, tab3 = st.tabs(["اطلاعات پایه", "اطلاعات نیتروژن", "اطلاعات ایستگاه‌ها"]) with tab1: # Basic Information Form st.subheader("ورود اطلاعات پایه") with st.form("basic_info_form"): col1, col2, col3 = st.columns(3) with col1: farm_id = st.text_input("نماینده") channel = st.text_input("کانال") department = st.text_input("اداره") with col2: production = st.text_input("تولید") area = st.number_input("مساحت داشت", 0.0) sub_area = st.number_input("مساحت زیرمجموعه", 0.0) with col3: variety = st.text_input("واریته") age = st.text_input("سن") date = st.date_input("تاریخ برداشت") submit_basic = st.form_submit_button("ثبت اطلاعات پایه") if submit_basic: st.success("اطلاعات پایه با موفقیت ثبت شد") with tab2: # Nitrogen Information Form st.subheader("ورود اطلاعات نیتروژن") with st.form("nitrogen_info_form"): col1, col2 = st.columns(2) with col1: nitrogen_current = st.number_input("نیتروژن فعلی", 0.0) nitrogen_std = st.number_input("نیتروژن استاندارد قبلی", 0.0) nitrogen_prev = st.number_input("نیتروژن قبلی", 0.0) with col2: nitrogen_std_prev = st.number_input("نیتروژن استاندارد قبلی فعلی", 0.0) moisture_current = st.number_input("رطوبت فعلی", 0.0) moisture_std = st.number_input("رطوبت استاندارد قبلی", 0.0) submit_nitrogen = st.form_submit_button("ثبت اطلاعات نیتروژن") if submit_nitrogen: st.success("اطلاعات نیتروژن با موفقیت ثبت شد") with tab3: # Station Information Form st.subheader("ورود اطلاعات ایستگاه‌ها") with st.form("station_info_form"): col1, col2, col3 = st.columns(3) with col1: station1 = st.number_input("ایستگاه ۱", 0.0) station2 = st.number_input("ایستگاه ۲", 0.0) station3 = st.number_input("ایستگاه ۳", 0.0) with col2: station4 = st.number_input("ایستگاه ۴", 0.0) station5 = st.number_input("ایستگاه ۵", 0.0) height_current = st.number_input("ارتفاع هفته جاری", 0.0) with col3: height_prev = st.number_input("ارتفاع هفته گذشته", 0.0) growth_current = st.number_input("رشد هفته جاری", 0.0) growth_prev = st.number_input("رشد هفته گذشته", 0.0) submit_station = st.form_submit_button("ثبت اطلاعات ایستگاه‌ها") if submit_station: st.success("اطلاعات ایستگاه‌ها با موفقیت ثبت شد") # Display data table st.header("نمایش داده‌ها") st.dataframe(st.session_state.data) # Export functionality st.header("خروجی داده‌ها") if st.button("دانلود داده‌ها"): output = BytesIO() st.session_state.data.to_excel(output, index=False) output.seek(0) st.download_button( label="دانلود فایل اکسل", data=output, file_name=f"farm_data_export_{datetime.now().strftime('%Y%m%d_%H%M%S')}.xlsx", mime="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" )