import streamlit as st import os import mysql.connector import math # 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") def navbar(): logo_path = os.path.join(os.path.dirname(__file__), "../asset/logo.png") st.markdown( f"""
""", unsafe_allow_html=True, ) def menu(): # **Pastikan Streamlit Session State Sudah Punya `page`** if "page" not in st.session_state: st.session_state["page"] = "Home" current_page = st.session_state["page"] logo_path = os.path.join(os.path.dirname(__file__), "../asset/logo.png") # **Login Check** if 'logged_in' in st.session_state and st.session_state['logged_in']: login_button_text = "Logout" else: login_button_text = "Login" # **Gunakan Streamlit Columns agar Navbar Sejajar (4 Kolom)** col2, col3, col4 = st.columns([1.5, 1.5, 1]) # 4 Kolom tanpa col1 (logo) # **Custom CSS untuk Tombol Navbar yang Spesifik** st.markdown( """ """, unsafe_allow_html=True ) # Tombol navigasi dengan warna berbeda di col2, col3, col4 with col2: if st.button("Form Kepuasan Kerja", key="nav_prediksi"): st.switch_page("pages/Form_Kepuasan.py") # Pindah ke halaman yang sudah ada with col3: if st.button("Form Keluhan", key="nav_dashboard"): st.switch_page("pages/Form_Keluhan.py") # Pindah ke halaman yang sesuai with col4: if st.button(login_button_text, key="login_button"): if 'logged_in' in st.session_state and st.session_state['logged_in']: st.session_state['logged_in'] = False # Logout user else: st.switch_page("pages/login.py") # Pindah ke halaman login 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 check_employee_in_db(employee_id): conn = connect_to_db() if conn: try: cursor = conn.cursor(dictionary=True) query = "SELECT * FROM data_employee_db WHERE employee_id = %s" cursor.execute(query, (employee_id,)) result = cursor.fetchone() conn.close() return result # Mengembalikan data karyawan jika ditemukan except mysql.connector.Error as e: st.error(f"Terjadi kesalahan saat mengakses database: {e}") return None return None def save_job_satisfaction(employee_id, responses): conn = connect_to_db() if conn: try: # Hitung skor akhir total_score = sum([responses[q] for q in range(len(responses))]) average_score = total_score / len(responses) final_score = min(max(round(average_score), 1), 4) # Batas 1-4 # Simpan ke tabel employee_job_sas cursor = conn.cursor() query = """ INSERT INTO employee_job_sas ( employee_id, question_1, question_2, question_3, question_4, question_5, question_6, question_7, question_8, skor_akhir ) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s) """ cursor.execute(query, (employee_id, *responses, final_score)) conn.commit() # Update kolom job_satisfaction di tabel data_employee_db update_query = """ UPDATE data_employee_db SET job_satisfaction = %s WHERE employee_id = %s """ cursor.execute(update_query, (final_score, employee_id)) conn.commit() conn.close() return final_score except mysql.connector.Error as e: st.error(f"Terjadi kesalahan saat menyimpan data: {e}") conn.close() return None def show_karyawan_form(): navbar() menu() st.markdown(""" """, unsafe_allow_html=True) st.markdown( """