Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -861,14 +861,119 @@ with gr.Blocks(css=css) as demo:
|
|
| 861 |
category_chart = gr.Plot(value=initial_plot)
|
| 862 |
|
| 863 |
# Make detailed scorecard tab visible by default
|
| 864 |
-
# Initialize with StarCoder2 data
|
| 865 |
default_model = "StarCoder2"
|
| 866 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 867 |
|
| 868 |
with gr.Column(visible=True) as detailed_scorecard_tab:
|
| 869 |
-
model_metadata = gr.HTML(value=
|
| 870 |
-
all_category_cards = gr.HTML(value=
|
| 871 |
-
total_score = gr.Markdown(value=
|
| 872 |
|
| 873 |
def update_dashboard(tab, selected_models, selected_model, selected_categories):
|
| 874 |
# Default visibility states
|
|
|
|
| 861 |
category_chart = gr.Plot(value=initial_plot)
|
| 862 |
|
| 863 |
# Make detailed scorecard tab visible by default
|
| 864 |
+
# Initialize with StarCoder2 data - don't use the update_detailed_scorecard function directly for initialization
|
| 865 |
default_model = "StarCoder2"
|
| 866 |
+
if default_model in models:
|
| 867 |
+
selected_categories = sort_categories(category_choices)
|
| 868 |
+
metadata_html = create_metadata_card(models[default_model]['metadata'])
|
| 869 |
+
overall_summary_html = create_overall_summary(models[default_model], selected_categories)
|
| 870 |
+
combined_header = metadata_html + overall_summary_html
|
| 871 |
+
|
| 872 |
+
# Prepare the initial data for the detailed view (similar to update_detailed_scorecard but without gr.update())
|
| 873 |
+
model = default_model
|
| 874 |
+
all_cards_content = "<div class='container'>"
|
| 875 |
+
total_yes = 0
|
| 876 |
+
total_no = 0
|
| 877 |
+
total_na = 0
|
| 878 |
+
has_non_na = False
|
| 879 |
+
|
| 880 |
+
for category_name in selected_categories:
|
| 881 |
+
if category_name in models[model]['scores']:
|
| 882 |
+
category_data = models[model]['scores'][category_name]
|
| 883 |
+
card_content = f"<div class='card'><div class='card-title'>{category_name}</div>"
|
| 884 |
+
card_content += create_category_summary(category_data)
|
| 885 |
+
|
| 886 |
+
sorted_sections = sorted(category_data.items(),
|
| 887 |
+
key=lambda x: float(re.match(r'^(\d+\.?\d*)', x[0]).group(1)))
|
| 888 |
+
|
| 889 |
+
category_yes = 0
|
| 890 |
+
category_no = 0
|
| 891 |
+
category_na = 0
|
| 892 |
+
|
| 893 |
+
for section, details in sorted_sections:
|
| 894 |
+
status = details['status']
|
| 895 |
+
if status != 'N/A':
|
| 896 |
+
has_non_na = True
|
| 897 |
+
sources = details.get('sources', [])
|
| 898 |
+
questions = details.get('questions', {})
|
| 899 |
+
|
| 900 |
+
section_class = "section-na" if status == "N/A" else "section-active"
|
| 901 |
+
status_class = status.lower()
|
| 902 |
+
status_icon = "●" if status == "Yes" else "○" if status == "N/A" else "×"
|
| 903 |
+
|
| 904 |
+
card_content += f"<div class='section {section_class}'>"
|
| 905 |
+
card_content += f"<div class='section-header'><h3>{section}</h3>"
|
| 906 |
+
card_content += f"<span class='status-badge {status_class}'>{status_icon} {status}</span></div>"
|
| 907 |
+
|
| 908 |
+
if sources:
|
| 909 |
+
card_content += create_source_html(sources)
|
| 910 |
+
|
| 911 |
+
if questions:
|
| 912 |
+
yes_count = sum(1 for v in questions.values() if v)
|
| 913 |
+
total_count = len(questions)
|
| 914 |
+
|
| 915 |
+
card_content += "<details class='question-accordion'>"
|
| 916 |
+
if status == "N/A":
|
| 917 |
+
card_content += f"<summary>View {total_count} N/A items</summary>"
|
| 918 |
+
else:
|
| 919 |
+
card_content += f"<summary>View details ({yes_count}/{total_count} completed)</summary>"
|
| 920 |
+
|
| 921 |
+
card_content += "<div class='questions'>"
|
| 922 |
+
for question, is_checked in questions.items():
|
| 923 |
+
if status == "N/A":
|
| 924 |
+
style_class = "na"
|
| 925 |
+
icon = "○"
|
| 926 |
+
category_na += 1
|
| 927 |
+
total_na += 1
|
| 928 |
+
else:
|
| 929 |
+
if is_checked:
|
| 930 |
+
style_class = "checked"
|
| 931 |
+
icon = "✓"
|
| 932 |
+
category_yes += 1
|
| 933 |
+
total_yes += 1
|
| 934 |
+
else:
|
| 935 |
+
style_class = "unchecked"
|
| 936 |
+
icon = "✗"
|
| 937 |
+
category_no += 1
|
| 938 |
+
total_no += 1
|
| 939 |
+
|
| 940 |
+
card_content += f"<div class='question-item {style_class}'>{icon} {question}</div>"
|
| 941 |
+
card_content += "</div></details>"
|
| 942 |
+
|
| 943 |
+
card_content += "</div>"
|
| 944 |
+
|
| 945 |
+
if category_yes + category_no > 0:
|
| 946 |
+
category_score = category_yes / (category_yes + category_no) * 100
|
| 947 |
+
card_content += f"<div class='category-score'>Completion Score Breakdown: {category_score:.2f}% Yes: {category_yes}, No: {category_no}, N/A: {category_na}</div>"
|
| 948 |
+
elif category_na > 0:
|
| 949 |
+
card_content += f"<div class='category-score'>Completion Score Breakdown: N/A (All {category_na} items not applicable)</div>"
|
| 950 |
+
|
| 951 |
+
card_content += "</div>"
|
| 952 |
+
all_cards_content += card_content
|
| 953 |
+
|
| 954 |
+
all_cards_content += "</div>"
|
| 955 |
+
|
| 956 |
+
# Create total score
|
| 957 |
+
if not has_non_na:
|
| 958 |
+
total_score_text = "No applicable scores (all items N/A)"
|
| 959 |
+
elif total_yes + total_no > 0:
|
| 960 |
+
total_score = total_yes / (total_yes + total_no) * 100
|
| 961 |
+
total_score_text = f"Total Score: {total_score:.2f}% (Yes: {total_yes}, No: {total_no}, N/A: {total_na})"
|
| 962 |
+
else:
|
| 963 |
+
total_score_text = "No applicable scores (all items N/A)"
|
| 964 |
+
|
| 965 |
+
initial_metadata = combined_header
|
| 966 |
+
initial_cards = all_cards_content
|
| 967 |
+
initial_score = total_score_text
|
| 968 |
+
else:
|
| 969 |
+
initial_metadata = "Please select a model to view details."
|
| 970 |
+
initial_cards = ""
|
| 971 |
+
initial_score = ""
|
| 972 |
|
| 973 |
with gr.Column(visible=True) as detailed_scorecard_tab:
|
| 974 |
+
model_metadata = gr.HTML(value=initial_metadata)
|
| 975 |
+
all_category_cards = gr.HTML(value=initial_cards, visible=True if default_model in models else False)
|
| 976 |
+
total_score = gr.Markdown(value=initial_score, visible=True if default_model in models else False)
|
| 977 |
|
| 978 |
def update_dashboard(tab, selected_models, selected_model, selected_categories):
|
| 979 |
# Default visibility states
|