Development-Project-Synergy-Finder / modules /allprojects_result_table.py
annikwag's picture
Upload 1639 files
883557f verified
raw
history blame
No virus
4.14 kB
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,
)