ESG / ui /filters.py
alirezamousio's picture
Upload 21 files
bcfaedb verified
Raw
History Blame Contribute Delete
6.14 kB
import gradio as gr
from ui.state import STATE
#Filter SDG
SDG_IMAGE_DIR = "assets/sdg_icons"
sdg_icons = {
i: f"{SDG_IMAGE_DIR}/E_PRINT_{i:02d}.jpg"
for i in range(1, 18)
}
sdg_images = [sdg_icons[i] for i in range(1, 18)]
def filter_sdg(evt: gr.SelectData):
df = STATE.get("df")
sdg_num = evt.index + 1
pattern = f"SDG_{sdg_num}:"
filtered = df[df["17 SDG Alignment"].astype(str).str.contains(pattern, na=False)]
title = f"Showing results for SDG {sdg_num}"
return filtered, title
#Filter GRI
GRI_IMAGE_DIR = "assets/gri_icons"
gri_topics = ["General", "Economic", "Environmental", "Social"]
gri_images = [
f"{GRI_IMAGE_DIR}/General.PNG",
f"{GRI_IMAGE_DIR}/Economic.PNG",
f"{GRI_IMAGE_DIR}/Environmental.PNG",
f"{GRI_IMAGE_DIR}/Social.PNG"
]
def filter_gri(evt: gr.SelectData):
df = STATE.get("df")
selected_idx = evt.index
topic = gri_topics[selected_idx] # Social / Economic / ...
filtered = df[df["GRI Topic Alignment"].astype(str) == topic]
title = f"Showing results for GRI Topic: {topic}"
return filtered, title
# TOGGLE FILTERS
def toggle_filters(tasks):
if tasks is None:
tasks = []
if isinstance(tasks, str):
tasks = [tasks]
show_sdg = "17 SDG Alignment" in tasks
show_gri = "GRI Topic Alignment" in tasks
return (
gr.update(visible=show_sdg),
gr.update(visible=show_gri)
)
# Filter QUALITY Disclosure
QUALITY_IMAGE_DIR = "assets/quality_icons"
quality_icons = {
"Informative": f"{QUALITY_IMAGE_DIR}/Informative.PNG",
"Non-informative/Vague": f"{QUALITY_IMAGE_DIR}/Vague.PNG",
"Qualitative": f"{QUALITY_IMAGE_DIR}/Qul.PNG",
"Quantitative": f"{QUALITY_IMAGE_DIR}/Qun.PNG",
"High Potential Greenwashing": f"{QUALITY_IMAGE_DIR}/HPG.PNG",
"Low Potential Greenwashing": f"{QUALITY_IMAGE_DIR}/LPG.PNG"
}
quality_task_1_gallery = [quality_icons["Informative"], quality_icons["Non-informative/Vague"]]
quality_task_2_gallery = [quality_icons["Qualitative"], quality_icons["Quantitative"]]
quality_task_3_gallery = [quality_icons["High Potential Greenwashing"], quality_icons["Low Potential Greenwashing"]]
def filter_quality_1(evt: gr.SelectData):
df = STATE.get("df")
label = "Informative" if evt.index == 0 else "Non-informative/Vague"
filtered = df[df["Informative & Non-Informative/Vague Sustainability Text Identification"].astype(str) == label]
title = f"Showing results: {label}"
return filtered, title
def filter_quality_2(evt: gr.SelectData):
df = STATE.get("df")
label = "Qualitative" if evt.index == 0 else "Quantitative"
filtered = df[df["Qualitative & Quantitative Sustainability Text Identification"].astype(str) == label]
title = f"Showing results: {label}"
return filtered, title
def filter_quality_3(evt: gr.SelectData):
df = STATE.get("df")
label = "High Potential Greenwashing" if evt.index == 0 else "Low Potential Greenwashing"
filtered = df[df["High Potential Greenwashing Detection"].astype(str) == label]
title = f"Showing results: {label}"
return filtered, title
# TOGGLE FILTERS
def toggle_quality_filters(tasks):
if tasks is None:
tasks = []
if isinstance(tasks, str):
tasks = [tasks]
show_info = (
"Informative & Non-Informative/Vague Sustainability Text Identification"
in tasks
)
show_qq = (
"Qualitative & Quantitative Sustainability Text Identification"
in tasks
)
show_gw = (
"High Potential Greenwashing Detection"
in tasks
)
return (
gr.update(visible=show_info),
gr.update(visible=show_qq),
gr.update(visible=show_gw)
)
# Filter Climate
CLIMATE_DIR = "assets/climate_icons"
climate_icons = {
"Climate": f"{CLIMATE_DIR}/C.PNG",
"Non-Climate": f"{CLIMATE_DIR}/NC.PNG"
}
gri_climate_icons = {
"GRI 101": f"{CLIMATE_DIR}/GRI101.PNG",
"GRI 2": f"{CLIMATE_DIR}/GRI102.PNG",
"GRI 201": f"{CLIMATE_DIR}/GRI201.PNG",
"GRI 302": f"{CLIMATE_DIR}/GRI302.PNG",
"GRI 303": f"{CLIMATE_DIR}/GRI303.PNG",
"GRI 305": f"{CLIMATE_DIR}/GRI305.PNG",
"GRI 306": f"{CLIMATE_DIR}/GRI306.PNG",
}
sdg13_icons = {
"Climate Action (SDG13)": f"{CLIMATE_DIR}/CA.PNG",
"Non-Climate Action": f"{CLIMATE_DIR}/NCA.PNG"
}
gri_sdg13_icons = {
"Economical Aspect (GRI 201)": f"{CLIMATE_DIR}/EcCA.PNG",
"Environmental Aspect (GRI 305)": f"{CLIMATE_DIR}/EnCA.PNG",
"General Aspect (GRI 2)": f"{CLIMATE_DIR}/GCA.PNG"
}
climate_images = list(climate_icons.values())
gri_climate_images = list(gri_climate_icons.values())
sdg13_images = list(sdg13_icons.values())
gri_sdg13_images = list(gri_sdg13_icons.values())
def filter_climate(evt: gr.SelectData):
df = STATE.get("df")
label = list(climate_icons.keys())[evt.index]
filtered = df[df["Climate Alignment"].astype(str) == label]
return filtered, f"Showing: {label}"
def filter_gri_climate(evt: gr.SelectData):
df = STATE.get("df")
label = list(gri_climate_icons.keys())[evt.index]
filtered = df[df["GRI Climate Alignment"].astype(str) == label]
return filtered, f"Showing: {label}"
def filter_sdg13(evt: gr.SelectData):
df = STATE.get("df")
label = list(sdg13_icons.keys())[evt.index]
filtered = df[df["Climate Action (SDG13) Alignment"].astype(str) == label]
return filtered, f"Showing: {label}"
def filter_gri_sdg13(evt: gr.SelectData):
df = STATE.get("df")
label = list(gri_sdg13_icons.keys())[evt.index]
filtered = df[df["GRI Climate Action (SDG13) Alignment"].astype(str) == label]
return filtered, f"Showing: {label}"
# TOGGLE FILTERS
def toggle_climate(tasks):
if tasks is None:
tasks = []
if isinstance(tasks, str):
tasks = [tasks]
return (
gr.update(visible="Climate Alignment" in tasks),
gr.update(visible="GRI Climate Alignment" in tasks),
gr.update(visible="Climate Action (SDG13) Alignment" in tasks),
gr.update(visible="GRI Climate Action (SDG13) Alignment" in tasks)
)