|
import gradio as gr |
|
from datetime import datetime, timedelta |
|
import json |
|
|
|
|
|
submissions = [ |
|
{"user": "User1", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(hours=1)}, |
|
{"user": "User2", "task": "task2", "submitted_time": datetime.now() - |
|
timedelta(days=1)}, |
|
{"user": "User3", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(minutes=30)}, |
|
{"user": "User1", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(hours=1)}, |
|
{"user": "User2", "task": "task2", "submitted_time": datetime.now() - |
|
timedelta(days=1)}, |
|
{"user": "User3", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(minutes=30)}, |
|
{"user": "User1", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(hours=1)}, |
|
{"user": "User2", "task": "task2", "submitted_time": datetime.now() - |
|
timedelta(days=1)}, |
|
{"user": "User3", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(minutes=30)}, |
|
{"user": "User2", "task": "task2", "submitted_time": datetime.now() - |
|
timedelta(days=1)}, |
|
{"user": "User3", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(minutes=30)}, |
|
{"user": "User1", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(hours=1)}, |
|
{"user": "User2", "task": "task2", "submitted_time": datetime.now() - |
|
timedelta(days=1)}, |
|
{"user": "User3", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(minutes=30)}, |
|
{"user": "User2", "task": "task2", "submitted_time": datetime.now() - |
|
timedelta(days=1)}, |
|
{"user": "User3", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(minutes=30)}, |
|
{"user": "User1", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(hours=1)}, |
|
{"user": "User2", "task": "task2", "submitted_time": datetime.now() - |
|
timedelta(days=1)}, |
|
{"user": "User3", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(minutes=30)}, |
|
{"user": "User2", "task": "task2", "submitted_time": datetime.now() - |
|
timedelta(days=1)}, |
|
{"user": "User3", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(minutes=30)}, |
|
{"user": "User1", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(hours=1)}, |
|
{"user": "User2", "task": "task2", "submitted_time": datetime.now() - |
|
timedelta(days=1)}, |
|
{"user": "User3", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(minutes=30)}, |
|
{"user": "User2", "task": "task2", "submitted_time": datetime.now() - |
|
timedelta(days=1)}, |
|
{"user": "User3", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(minutes=30)}, |
|
{"user": "User1", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(hours=1)}, |
|
{"user": "User2", "task": "task2", "submitted_time": datetime.now() - |
|
timedelta(days=1)}, |
|
{"user": "User3", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(minutes=30)}, |
|
{"user": "User2", "task": "task2", "submitted_time": datetime.now() - |
|
timedelta(days=1)}, |
|
{"user": "User3", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(minutes=30)}, |
|
{"user": "User1", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(hours=1)}, |
|
{"user": "User2", "task": "task2", "submitted_time": datetime.now() - |
|
timedelta(days=1)}, |
|
{"user": "User3", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(minutes=30)}, |
|
{"user": "User2", "task": "task2", "submitted_time": datetime.now() - |
|
timedelta(days=1)}, |
|
{"user": "User3", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(minutes=30)}, |
|
{"user": "User1", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(hours=1)}, |
|
{"user": "User2", "task": "task2", "submitted_time": datetime.now() - |
|
timedelta(days=1)}, |
|
{"user": "User3", "task": "task1", "submitted_time": datetime.now() - |
|
timedelta(minutes=30)}, |
|
|
|
] |
|
|
|
|
|
def time_ago(submitted_time): |
|
delta = datetime.now() - submitted_time |
|
if delta.days > 0: |
|
return f"{delta.days} days ago" |
|
elif delta.seconds // 3600 > 0: |
|
return f"{delta.seconds // 3600} hours ago" |
|
elif delta.seconds // 60 > 0: |
|
return f"{delta.seconds // 60} minutes ago" |
|
else: |
|
return "just now" |
|
|
|
|
|
def filter_submissions(task_type, search_query): |
|
if search_query == "": |
|
filtered = [s for s in submissions if task_type == |
|
"all" or s["task"] == task_type] |
|
else: |
|
filtered = [s for s in submissions if ( |
|
task_type == "all" or s["task"] == task_type) and search_query.lower() in s["user"].lower()] |
|
return [{"user": s["user"], "task": s["task"], "submitted_time": time_ago(s["submitted_time"])} for s in filtered] |
|
|
|
|
|
def display_submissions(task_type="all", search_query=""): |
|
filtered_submissions = filter_submissions(task_type, search_query) |
|
return [[s["user"], s["task"], s["submitted_time"]] for s in filtered_submissions] |
|
|
|
|
|
def add_submission(file): |
|
try: |
|
new_submissions = json.load(file) |
|
for submission in new_submissions: |
|
submission["submitted_time"] = datetime.strptime( |
|
submission["submitted_time"], "%Y-%m-%d %H:%M:%S") |
|
submissions.append(submission) |
|
return "Submissions added successfully!" |
|
except Exception as e: |
|
return f"Error: {str(e)}" |
|
|
|
|
|
|
|
output_table = gr.Dataframe( |
|
headers=["User", "Task", "Submitted Time"], value=display_submissions(), scale=5,) |
|
task_type_dropdown = gr.Dropdown( |
|
choices=["all", "task1", "task2"], value="all", label="Task Type") |
|
search_box = gr.Textbox(value="", label="Search User") |
|
upload_button = gr.File(label="Upload JSON", file_types=["json"]) |
|
|
|
|
|
with gr.Blocks(title="ImageCLEFmed-MEDVQA-GI-2025 Submissions") as demo: |
|
with gr.Tab("View Submissions"): |
|
gr.Interface( |
|
fn=display_submissions, |
|
inputs=[task_type_dropdown, search_box], |
|
outputs=output_table, |
|
title="ImageCLEFmed-MEDVQA-GI-2025 Submissions", |
|
description="Filter and search submissions by task type and user." |
|
) |
|
with gr.Tab("Upload Submission", visible=False): |
|
gr.Interface( |
|
api_name="UploadSubmission", |
|
fn=add_submission, |
|
inputs=upload_button, |
|
outputs="text", |
|
title="Upload Submissions", |
|
description="Upload a JSON file to add new submissions." |
|
) |
|
|
|
demo.launch() |
|
|