File size: 3,291 Bytes
c50cea5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
import plotly.express as px
import pandas as pd
from services.api import fetch_data

def render_dashboard():
    st.sidebar.subheader("Select Analysis")
    analysis_option = st.sidebar.selectbox(
        "Choose an analysis type:", [
            "Employee Satisfaction",
            "Department Performance",
            "Training Analytics",
            "Engagement vs Performance",
            "Cost-Benefit Analysis",
            "Training Effectiveness",
            "Diversity & Inclusion",
            "Work-Life Balance Impact",
            "Career Development"
        ]
    )

    # API endpoint mapping
    endpoint_mapping = {
        "Employee Satisfaction": "/satisfaction-analysis",
        "Department Performance": "/department-performance",
        "Training Analytics": "/training-analytics",
        "Engagement vs Performance": "/engagement-performance-correlation",
        "Cost-Benefit Analysis": "/cost-benefit-analysis",
        "Training Effectiveness": "/training-effectiveness",
        "Diversity & Inclusion": "/diversity-dashboard",
        "Work-Life Balance Impact": "/worklife-balance-impact",
        "Career Development": "/career-development"
    }

    # Fetch data
    data = fetch_data(endpoint_mapping[analysis_option])

    if data is None:
        st.error("Failed to fetch data.")
        return

    st.title(f"📊 {analysis_option}")

    # Correlation metric
    if isinstance(data, dict) and "correlation_coefficient" in data:
        st.metric("Correlation Coefficient", data["correlation_coefficient"])
        return

    # Display DataFrame
    if isinstance(data, pd.DataFrame) and not data.empty:
        st.dataframe(data)

        # Generate visualization
        fig = None
        if analysis_option == "Employee Satisfaction":
            fig = px.bar(data, x="DepartmentType", y="Satisfaction Score", 
                         title="Satisfaction Score by Department", color="DepartmentType")
        elif analysis_option == "Department Performance":
            fig = px.line(data, x="DepartmentType", y=["Performance Score", "Current Employee Rating"], 
                          title="Departmental Performance Trends", markers=True)
        elif analysis_option == "Training Analytics":
            fig = px.bar(data, x="Training Program Name", y="Training Outcome", 
                         title="Training Participation by Program", color="Training Program Name")
        elif analysis_option == "Cost-Benefit Analysis":
            fig = px.scatter(data, x="DepartmentType", y="ROI", title="ROI by Department", size="ROI")
        elif analysis_option == "Training Effectiveness":
            fig = px.bar(data, x="Training Program Name", y="Performance Score", 
                         title="Training Effectiveness by Program", color="Training Program Name")
        elif analysis_option == "Diversity & Inclusion":
            fig = px.bar(data, x="Category", y="Count", color="Group",
                         title="Diversity & Inclusion Breakdown", barmode="stack")
        elif analysis_option == "Career Development":
            fig = px.histogram(data, x="Career Movements", title="Career Progression Histogram")

        # Display chart
        if fig:
            st.plotly_chart(fig)