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()
|