| from dataclasses import dataclass | |
| import pandas as pd | |
| # These classes are for user facing column names, to avoid having to change them | |
| # all around the code when a modif is needed | |
| class ColumnContent: | |
| name: str | |
| type: str | |
| def fields(raw_class): | |
| return [v for k, v in raw_class.__dict__.items() if k[:2] != "__" and k[-2:] != "__"] | |
| def make_clickable_model(df): | |
| df["Model"] = df.apply( | |
| lambda row: f'<a target="_blank" href="{row["link"]}" style="color: var(--link-text-color); text-decoration: underline; text-decoration-style: dotted;">{row["model"]} ({row["Parameters"]})</a>' if pd.notna(row["Parameters"]) else f'<a target="_blank" href="{row["link"]}" style="color: var(--link-text-color); text-decoration: underline; text-decoration-style: dotted;">{row["model"]}</a>', | |
| axis=1 | |
| ) | |
| return df | |
| def styled_error(error): | |
| return f"<p style='color: red; font-size: 20px; text-align: center;'>{error}</p>" | |
| def styled_warning(warn): | |
| return f"<p style='color: orange; font-size: 20px; text-align: center;'>{warn}</p>" | |
| def styled_message(message): | |
| return f"<p style='color: green; font-size: 20px; text-align: center;'>{message}</p>" | |