File size: 2,697 Bytes
7c972a3
 
 
60c4b45
 
 
 
 
 
 
 
 
 
 
 
064713b
63404cb
 
60c4b45
 
 
 
 
 
 
63404cb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60c4b45
 
 
63404cb
60c4b45
 
 
 
 
 
 
 
 
 
 
63404cb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60c4b45
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import pandas as pd
import streamlit as st

def login():
    st.title("πŸ”‘ Login Sistem")
    username = st.text_input("Username")
    password = st.text_input("Password", type="password")
    if st.button("Login"):
        if username == "admin" and password == "1234":
            st.session_state["login"] = True
            st.success("Login berhasil βœ…")
        else:
            st.error("Username atau Password salah!")

def dashboard():
    st.title("πŸ“Š Dashboard Space Management - Sports & Health")

    # Data awal
    if "data" not in st.session_state:
        st.session_state["data"] = pd.DataFrame({
            "ID": [1, 2, 3],
            "Nama File": ["Laporan_A.xlsx", "Proposal_B.docx", "Data_C.csv"],
            "Status": ["Menunggu", "Menunggu", "Menunggu"]
        })

    # Sidebar menu
    st.sidebar.title("βš™οΈ Menu")
    if st.sidebar.button("πŸšͺ Logout"):
        st.session_state["login"] = False
        st.experimental_rerun()

    # Upload file baru
    st.sidebar.header("πŸ“€ Upload File Baru")
    uploaded_file = st.sidebar.file_uploader("Upload Excel/CSV", type=["csv", "xlsx"])
    if uploaded_file:
        try:
            if uploaded_file.name.endswith(".csv"):
                df_new = pd.read_csv(uploaded_file)
            else:
                df_new = pd.read_excel(uploaded_file)
            st.session_state["data"] = df_new
            st.success("File berhasil diupload dan ditampilkan!")
        except Exception as e:
            st.error(f"Gagal membaca file: {e}")

    # Tabel data
    st.subheader("πŸ“‚ Master Data")
    st.dataframe(st.session_state["data"])

    # Update status
    pilihan = st.selectbox("Pilih File untuk Approve/Tolak",
                           st.session_state["data"]["Nama File"])
    aksi = st.radio("Aksi", ["Setujui", "Tolak"])

    if st.button("Update Status"):
        idx = st.session_state["data"].index[
            st.session_state["data"]["Nama File"] == pilihan
        ][0]
        st.session_state["data"].at[idx, "Status"] = aksi
        st.success(f"File '{pilihan}' berhasil diupdate menjadi {aksi}")

    # Ringkasan data
    st.subheader("πŸ“Š Ringkasan")
    summary = st.session_state["data"]["Status"].value_counts()
    st.bar_chart(summary)

    # Download data
    st.sidebar.header("πŸ“₯ Download Data")
    csv = st.session_state["data"].to_csv(index=False).encode("utf-8")
    st.sidebar.download_button(
        label="Download CSV",
        data=csv,
        file_name="master_data.csv",
        mime="text/csv"
    )

# --- Main ---
if "login" not in st.session_state:
    st.session_state["login"] = False

if st.session_state["login"]:
    dashboard()
else:
    login()