| import os |
| import pandas as pd |
| import streamlit as st |
| import base64 |
| import json |
|
|
| |
| def nav_to(url): |
| nav_script = """ |
| <meta http-equiv="refresh" content="0; url='%s'"> |
| """ % (url) |
| st.write(nav_script, unsafe_allow_html=True) |
|
|
|
|
| @st.cache_data |
| def df_to_html(df): |
|
|
| df = df.fillna("") |
|
|
| |
| styles = [ |
| {'selector': 'tr', 'props': [('border-bottom', '1px solid #ccc')]}, |
| {'selector': 'td, th', 'props': [('border', 'none'), ("text-align", "center"), ('font-size', 'smaller')]}, |
| |
| {'selector': 'a:hover', 'props': [('color', 'darkblue')]}, |
| {'selector': '.responsive-table', 'props': [('width', '100%')]}, |
| {'selector': 'thead', 'props': [('border', 'none')]}, |
| {'selector': 'tbody td', 'props': [('border-left', 'none'), ('border-right', 'none')]}, |
| {'selector': 'tr:not(:first-child) td', 'props': [('border-left', 'none'), ('border-right', 'none'), ('border-top', 'none')]}, |
| {'selector': 'table', 'props': [('table-layout', 'fixed')]}, |
| ] |
|
|
| |
| styled_html = '<div style="max-width: 100%; overflow-x: auto;">' + df.style.hide(axis="index").set_table_styles(styles).to_html(escape=False, index=False, bold_rows=True, justify='center').replace('<td>', '<td align="center" class="responsive-table">') + '</div>' |
| |
| return styled_html |
|
|
|
|
|
|
|
|
|
|
|
|
| @st.cache_data |
| def render_svg(svg): |
| """Renders the given svg string.""" |
| b64 = base64.b64encode(svg.encode("utf-8")).decode("utf-8") |
| html = rf'<p align="center"> <img src="data:image/svg+xml;base64,{b64}", width="40%"/> </p>' |
| c = st.container() |
| c.write(html, unsafe_allow_html=True) |
|
|
|
|
|
|
| @st.cache_resource |
| def combine_json_files(folder_path): |
| combined_data = {} |
|
|
| |
| for filename in os.listdir(folder_path): |
| file_path = os.path.join(folder_path, filename) |
|
|
| |
| if filename.endswith('.json'): |
| with open(file_path, 'r') as file: |
| |
| data = {filename.replace('.json', ''): json.load(file)} |
|
|
| |
| combined_data.update(data) |
|
|
| return combined_data |
|
|
|
|
| @st.cache_data |
| def render_metadata(): |
| """Renders the metadata.""" |
| html = r"""<p align="center"> |
| <a href="https://github.com/cisnlp/GlotWeb"><img alt="GlotWeb Pipeline" src="https://img.shields.io/badge/π¦ GlotWeb Pipeline-ccccff"></a> |
| <a href="https://github.com/cisnlp/GlotWeb/blob/main/LICENSE"><img alt="GitHub license" src="https://img.shields.io/github/license/cisnlp/GlotWeb"></a> |
| <a href="https://arxiv.org/abs/xxxx.xxxxx"><img alt="arXiv" src="https://img.shields.io/badge/arXiv-xxxx.xxxxx-b31b1b.svg"></a> |
| </p>""" |
| c = st.container() |
| c.write(html, unsafe_allow_html=True) |
|
|
|
|
|
|
|
|
| |
| def color_mapping(listx): |
|
|
| bins = len(listx) |
| mean = sum(listx) / (1.0 * bins) |
|
|
| if mean == 0: |
| return "π₯" |
| elif mean < 1.0/bins + 0.01: |
| return "π§" |
| elif mean < 2.0/bins + 0.01: |
| return "π¨" |
| else: |
| return "π©" |
|
|
|
|