Skip to content

Commit 86e398d

Browse files
committed
refactor(gradebook): restructure external assessment management + import UI
- unify manage and configure-weights into a GradebookSettingsDialog - decompose import wizard into ColumnMappingTable + useImportMapping hook - extract importValidation module with dedicated unit tests - rework ExternalAssessmentImportService header/identifier handling - refresh en/ko/zh locales for the new settings surface
1 parent f47f9e5 commit 86e398d

51 files changed

Lines changed: 5115 additions & 5475 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/controllers/course/external_assessment_imports_controller.rb

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,28 +26,23 @@ def component
2626

2727
def build_service
2828
permitted_params = import_params
29-
weighted_view_enabled = gradebook_settings.weighted_view_enabled
3029
Service.new(
3130
course: current_course,
3231
actor: current_user,
33-
components: permitted_params[:components].map do |c|
34-
{ name: c[:name],
35-
weightage: weighted_view_enabled ? c[:weightage].to_i : 0,
36-
maximum_grade: c[:maximumGrade].to_f }
37-
end,
3832
identifier_mode: permitted_params[:identifierMode],
39-
csv_data: permitted_params[:csvData]
33+
identifier_column: permitted_params[:identifierColumn],
34+
csv_data: permitted_params[:csvData],
35+
mappings: (permitted_params[:mappings] || []).map do |m|
36+
{ header: m[:header], action: m[:action], target: m[:target],
37+
max_grade: m[:maxGrade].presence&.to_f, weight: m[:weight].presence&.to_f }
38+
end
4039
)
4140
end
4241

43-
def gradebook_settings
44-
@gradebook_settings ||= Course::Settings::GradebookComponent.new(component)
45-
end
46-
4742
def import_params
48-
@import_params ||= params.slice(:identifierMode, :csvData, :onConflict, :components).permit(
49-
:identifierMode, :csvData, :onConflict,
50-
components: [:name, :weightage, :maximumGrade]
43+
@import_params ||= params.permit(
44+
:identifierMode, :identifierColumn, :csvData, :onConflict,
45+
mappings: [:header, :action, :target, :maxGrade, :weight]
5146
)
5247
end
5348
end

app/controllers/course/gradebook_controller.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,10 @@ def persist_weight_updates(updates)
5454
def persist_cap_total
5555
return unless params.key?(:capTotal)
5656

57-
@settings.cap_weighted_total = params[:capTotal]
57+
new_value = ActiveRecord::Type::Boolean.new.cast(params[:capTotal])
58+
return if @settings.cap_weighted_total == new_value
59+
60+
@settings.cap_weighted_total = new_value
5861
current_course.save!
5962
end
6063

0 commit comments

Comments
 (0)