youngtsai commited on
Commit
55c7f93
·
1 Parent(s): 6cc56bb

download_df_to_csv

Browse files
Files changed (1) hide show
  1. 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