import streamlit as st
import pandas as pd

"""
Result table for the All Projects Page
"""

def show_all_projects_table(projects_df, result_df):
    result_df['crs_3_code_list'] = result_df['crs_3_name'].apply(
        lambda x: [""] if pd.isna(x) else (str(x).split(";")[:-1] if str(x).endswith(";") else str(x).split(";"))
    )
    result_df['crs_5_code_list'] = result_df['crs_5_name'].apply(
        lambda x: [""] if pd.isna(x) else (str(x).split(";")[:-1] if str(x).endswith(";") else str(x).split(";"))
    )
    result_df['sdg_list'] = result_df['sgd_pred_code'].apply(
        lambda x: [""] if pd.isna(x) else (str(x).split(";")[:-1] if str(x).endswith(";") else str(x).split(";"))
    )

    # Convert orga_abbreviation to uppercase for the selected project
    result_df['orga_abbreviation'] = result_df['orga_abbreviation'].str.upper()

    # Set country_flag to None if country_name is missing
    result_df['country_flag'] = result_df.apply(
        lambda row: None if pd.isna(row['country_name']) else row['country_flag'],
        axis=1
    )

    # Convert the Project Link column to clickable Markdown links
    #result_df['Project Link'] = result_df['Project Link'].apply(lambda x: f"[Link]({x})")

    if len(result_df) == 0:
        st.write("No results found!")
    else:
        result_df = result_df.reset_index(drop=True)

        st.dataframe(
            result_df[["iati_id", "title_main", "orga_abbreviation", "description_main", "country_name", "country_flag", "sdg_list", "crs_3_code_list", "crs_5_code_list", "Project Link"]],
            use_container_width=True,
            height=35 + 35 * len(result_df),
            column_config={
                "iati_id": st.column_config.TextColumn(
                    "IATI ID",
                    help="IATI Project ID",
                    disabled=True,
                    width="small"
                ),
                "orga_abbreviation": st.column_config.TextColumn(
                    "Organization",
                    help="If description not in English, description in other language provided",
                    disabled=True,
                    width="small"
                ),
                "title_main": st.column_config.TextColumn(
                    "Title",
                    help="If title not in English, title in other language provided",
                    disabled=True,
                    width="large"
                ),
                "description_main": st.column_config.TextColumn(
                    "Description",
                    help="If description not in English, description in other language provided",
                    disabled=True,
                    width="large"
                ),
                "country_name": st.column_config.TextColumn(
                    "Country",
                    help="Country of project",
                    disabled=True,
                    width="small"
                ),
                "country_flag": st.column_config.ImageColumn(
                    "Flag",
                    help="country flag",
                    width="small"
                ),
                "sdg_list": st.column_config.ListColumn(
                    "SDG Prediction",
                    help="Prediction of SDG's",
                    width="small"
                ),
                "crs_3_code_list": st.column_config.ListColumn(
                    "CRS 3",
                    help="CRS 3 code given by organization",
                    width="medium"
                ),
                "crs_5_code_list": st.column_config.ListColumn(
                    "CRS 5",
                    help="CRS 5 code given by organization",
                    width="medium"
                ),
                "Project Link": st.column_config.TextColumn(
                    "Project Link",
                    help="Link to the project",
                    disabled=True,
                    width="small"
                ),
            },
            hide_index=True,
        )