import streamlit as st import os import mysql.connector import pandas as pd import plotly.express as px import seaborn as sns import matplotlib.pyplot as plt # Fungsi untuk mendapatkan gambar sebagai base64 def get_image_as_base64(image_path): import base64 with open(image_path, "rb") as img_file: return base64.b64encode(img_file.read()).decode("utf-8") # Fungsi untuk menampilkan navbar def navbar(): current_page = "exploration" # Sesuaikan dengan halaman saat ini logo_path = os.path.join(os.path.dirname(__file__), "../asset/logo.png") # Sesuaikan path logo # Cek status login if 'logged_in' in st.session_state and st.session_state['logged_in']: login_button_text = "Logout" login_button_link = "?page=Login&logout=true" # Tambahkan parameter logout else: login_button_text = "Logout" login_button_link = "?page=Login" st.markdown( f"""
""", unsafe_allow_html=True, ) def connect_to_db(): try: conn = mysql.connector.connect( host=st.secrets["mysql"]["host"], user=st.secrets["mysql"]["user"], password=st.secrets["mysql"]["password"], database=st.secrets["mysql"]["dbname"], port=st.secrets["mysql"]["port"] ) return conn except mysql.connector.Error as e: st.error(f"Koneksi ke database gagal: {e}") return None def get_all_employee_data(filter_employee_id=None, filter_join_date=None): conn = connect_to_db() if conn: try: query = """ SELECT employee_id AS ID_Karyawan, domisili as Domisili, jenis_kelamin as Jenis_Kelamin, join_date as Tanggal_Masuk, resign_date as Tanggal_Keluar, marriage_stat as Status_Pernikahan, dependant as Jumlah_Tanggungan, education as Pendidikan, absent_90D as Absen_90Hari, avg_time_work as Rata_Rata_Jam_Kerja, departemen as Departemen, position as Posisi, income as Penghasilan, total_komp as Total_Komplain, job_satisfaction as Kepuasan_Kerja, performance_rating as Kinerja_Kerja FROM data_employee_db WHERE 1=1""" params = [] if filter_employee_id: query += " AND employee_id LIKE %s" params.append(f"%{filter_employee_id}%") if filter_join_date: query += " AND join_date >= %s" params.append(filter_join_date) df = pd.read_sql(query, conn, params=params) return df except mysql.connector.Error as e: st.error(f"Terjadi kesalahan saat mengambil data: {e}") return pd.DataFrame() finally: conn.close() def get_joined_employee_data(filter_employee_id=None): conn = connect_to_db() if conn: try: query = """ SELECT e.employee_id as ID_Karyawan, e.comment AS Komplain, s.job_satisfaction AS Skor_Kepuasan_Kerja, s.performance_rating AS Skor_Kinerja_Kerja FROM employee_comments e INNER JOIN data_employee_db s ON e.employee_id = s.employee_id WHERE 1=1 """ params = [] if filter_employee_id: query += " AND e.employee_id LIKE %s" params.append(f"%{filter_employee_id}%") df = pd.read_sql(query, conn, params=params) return df except mysql.connector.Error as e: st.error(f"Terjadi kesalahan saat mengambil data: {e}") return pd.DataFrame() finally: conn.close() def show_exploration(): navbar() st.markdown(""" """, unsafe_allow_html=True) st.markdown( """