import pandas as pd
import numpy as np
from renumics import spotlight
from renumics.spotlight.analysis.typing import DataIssue


if __name__ == "__main__":
    df = pd.read_json("df.json")
    # df[
    #     "GitHub"
    # ] = '<a href="https://github.com/Renumics/spotlight" target="_blank">⭐ Check Out Spotlight on GitHub</a>'

    issues = pd.read_json("issues.json")

    spotlight_issues = []
    for _, issue in issues.sort_values("metric").iterrows():
        issue_metric = issue["metric"]
        issue_title = (
            f"Metric: {issue_metric:.2f} | Cause: {issue['predicates'][0]['column']}"
        )

        predicate_strings = [
            f"{x['minimum']:.1f}  < {x['column']} < {x['maximum']:.1f}"
            for x in issue["predicates"]
            if ("minimum" in x and "maximum" in x)
        ]
        issue_explanation = "Feature Importances:\n" + issue["explanation"]

        if len(predicate_strings) > 0:
            issue_explanation = (
                issue_explanation + "\n\nFeature Ranges:\n" + "; ".join(predicate_strings)
            )

        data_issue = DataIssue(
            severity="high" if issue_metric < 0.5 else "medium",
            title=issue_title,
            description=issue_explanation,
            rows=issue["rows"],
            columns=[x["column"] for x in issue["predicates"]],
        )
        spotlight_issues.append(data_issue)

    while True:
        dtypes = {
            "image": spotlight.Image,
            "sg_emb_image": spotlight.Embedding,
            "sg_projection": spotlight.Embedding,
        }
        view = spotlight.show(
            df,
            dtype=dtypes,
            port=7860,
            host="0.0.0.0",
            allow_filebrowsing=False,
            issues=spotlight_issues,
            layout="spotlight-layout.json",
        )

        view.close()