Spaces:
Sleeping
Sleeping
download_df_to_csv
Browse files- assignment_ui.py +29 -1
assignment_ui.py
CHANGED
@@ -223,7 +223,7 @@ def create_assignment_ui(user_data, assignment_service, submission_service, dash
|
|
223 |
def generate_submission_html(submission_json):
|
224 |
html_parts = []
|
225 |
|
226 |
-
#
|
227 |
html_parts.append("""
|
228 |
<div style="background-color: #f8f9fa; padding: 30px; border-radius: 15px; font-family: 'Helvetica', sans-serif;">
|
229 |
<h2 style="color: #007bff; font-size: 28px; margin-bottom: 20px;">📝 學生回傳作業</h2>
|
@@ -545,13 +545,21 @@ def create_assignment_ui(user_data, assignment_service, submission_service, dash
|
|
545 |
assignments_df = gr.Dataframe(
|
546 |
label="作業列表",
|
547 |
wrap=True,
|
|
|
548 |
)
|
|
|
|
|
|
|
549 |
|
550 |
with gr.Row():
|
551 |
submissions_df = gr.Dataframe(
|
552 |
label="所有提交的作業",
|
553 |
wrap=True,
|
|
|
554 |
)
|
|
|
|
|
|
|
555 |
|
556 |
def update_dashboard(user_data):
|
557 |
# 獲取作業列表
|
@@ -564,10 +572,30 @@ def create_assignment_ui(user_data, assignment_service, submission_service, dash
|
|
564 |
|
565 |
return assignments_df, submissions_df
|
566 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
567 |
refresh_dashboard_button.click(
|
568 |
fn=update_dashboard,
|
569 |
inputs=[user_data],
|
570 |
outputs=[assignments_df, submissions_df]
|
571 |
)
|
572 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
573 |
return assignment_interface
|
|
|
223 |
def generate_submission_html(submission_json):
|
224 |
html_parts = []
|
225 |
|
226 |
+
# 添加外层结构的开始标签
|
227 |
html_parts.append("""
|
228 |
<div style="background-color: #f8f9fa; padding: 30px; border-radius: 15px; font-family: 'Helvetica', sans-serif;">
|
229 |
<h2 style="color: #007bff; font-size: 28px; margin-bottom: 20px;">📝 學生回傳作業</h2>
|
|
|
545 |
assignments_df = gr.Dataframe(
|
546 |
label="作業列表",
|
547 |
wrap=True,
|
548 |
+
interactive=False,
|
549 |
)
|
550 |
+
with gr.Row():
|
551 |
+
download_assignments_button = gr.Button("下載作業列表 CSV")
|
552 |
+
assignments_df_file = gr.File(height=10)
|
553 |
|
554 |
with gr.Row():
|
555 |
submissions_df = gr.Dataframe(
|
556 |
label="所有提交的作業",
|
557 |
wrap=True,
|
558 |
+
interactive=False,
|
559 |
)
|
560 |
+
with gr.Row():
|
561 |
+
download_submissions_button = gr.Button("下載提交作業 CSV")
|
562 |
+
submissions_df_file = gr.File(height=20)
|
563 |
|
564 |
def update_dashboard(user_data):
|
565 |
# 獲取作業列表
|
|
|
572 |
|
573 |
return assignments_df, submissions_df
|
574 |
|
575 |
+
def download_df_to_csv(df):
|
576 |
+
import uuid
|
577 |
+
unique_filename = str(uuid.uuid4())
|
578 |
+
file_path = f"/tmp/{unique_filename}.csv"
|
579 |
+
df.to_csv(file_path, index=False)
|
580 |
+
return file_path
|
581 |
+
|
582 |
+
|
583 |
refresh_dashboard_button.click(
|
584 |
fn=update_dashboard,
|
585 |
inputs=[user_data],
|
586 |
outputs=[assignments_df, submissions_df]
|
587 |
)
|
588 |
|
589 |
+
download_assignments_button.click(
|
590 |
+
fn=download_df_to_csv,
|
591 |
+
inputs=[assignments_df],
|
592 |
+
outputs=[assignments_df_file]
|
593 |
+
)
|
594 |
+
|
595 |
+
download_submissions_button.click(
|
596 |
+
fn=download_df_to_csv,
|
597 |
+
inputs=[submissions_df],
|
598 |
+
outputs=[submissions_df_file]
|
599 |
+
)
|
600 |
+
|
601 |
return assignment_interface
|