diff --git a/app/components/instructeurs/column_table_header_component.rb b/app/components/instructeurs/column_table_header_component.rb index 0318da05e..6a1575f38 100644 --- a/app/components/instructeurs/column_table_header_component.rb +++ b/app/components/instructeurs/column_table_header_component.rb @@ -2,11 +2,24 @@ class Instructeurs::ColumnTableHeaderComponent < ApplicationComponent def initialize(procedure_presentation:) - @procedure_presentation = procedure_presentation + @procedure = procedure_presentation.procedure @columns = procedure_presentation.displayed_fields_for_headers @sorted_column = procedure_presentation.sorted_column end + private + + def update_sort_path(column) + column_id = column.id + order = opposite_order_for(column) + + update_sort_instructeur_procedure_path(@procedure, column_id:, order:) + end + + def opposite_order_for(column) + @sorted_column.column == column ? @sorted_column.opposite_order : 'asc' + end + def label_and_arrow(column) return column.label if @sorted_column.column != column diff --git a/app/components/instructeurs/column_table_header_component/column_table_header_component.html.haml b/app/components/instructeurs/column_table_header_component/column_table_header_component.html.haml index 1542f0140..e7cfa0eac 100644 --- a/app/components/instructeurs/column_table_header_component/column_table_header_component.html.haml +++ b/app/components/instructeurs/column_table_header_component/column_table_header_component.html.haml @@ -1,4 +1,3 @@ - @columns.each do |column| %th{ aria_sort(column), scope: "col", class: column.classname } - = link_to update_sort_instructeur_procedure_path(@procedure_presentation.procedure, column_id: column.id, order: @procedure_presentation.opposite_order_for(column.table, column.column)) do - = label_and_arrow(column) + = link_to label_and_arrow(column), update_sort_path(column) diff --git a/app/models/sorted_column.rb b/app/models/sorted_column.rb index ad96d7ac6..9da384002 100644 --- a/app/models/sorted_column.rb +++ b/app/models/sorted_column.rb @@ -10,6 +10,8 @@ class SortedColumn def ascending? = @order == 'asc' + def opposite_order = ascending? ? 'desc' : 'asc' + def ==(other) other&.column == column && other.order == order end