diff --git a/app/components/dossiers/filter_component/filter_component.html.haml b/app/components/dossiers/filter_component/filter_component.html.haml index e58a95b54..e3b5342de 100644 --- a/app/components/dossiers/filter_component/filter_component.html.haml +++ b/app/components/dossiers/filter_component/filter_component.html.haml @@ -1,12 +1,13 @@ -= form_tag add_filter_instructeur_procedure_url(procedure), method: :post, class: 'dropdown-form large', id: 'filter-component', data: { controller: 'dossier-filter' } do += form_tag add_filter_instructeur_procedure_path(procedure), method: :post, class: 'dropdown-form large', id: 'filter-component', data: { turbo: true, controller: 'autosubmit' } do = label_tag :field, t('.column') - = select_tag :field, options_for_select(filterable_fields_for_select, field_id), include_blank: field_id.nil?, data: {action: "dossier-filter#onChange"} + = select_tag :field, options_for_select(filterable_fields_for_select, field_id), include_blank: field_id.nil? + %input.hidden{ type: 'submit', formaction: update_filter_instructeur_procedure_path(procedure), data: { autosubmit_target: 'submitter' } } %br = label_tag :value, t('.value'), for: 'value' - if field_type == :enum - = select_tag :value, options_for_select(options_for_select_of_field), id: 'value', name: 'value' + = select_tag :value, options_for_select(options_for_select_of_field), id: 'value', name: 'value', data: { no_autosubmit: true } - else - %input#value{ type: field_type, name: :value, maxlength: ProcedurePresentation::FILTERS_VALUE_MAX_LENGTH, disabled: field_id.nil? ? true : false } + %input#value{ type: field_type, name: :value, maxlength: ProcedurePresentation::FILTERS_VALUE_MAX_LENGTH, disabled: field_id.nil? ? true : false, data: { no_autosubmit: true } } = hidden_field_tag :statut, statut = submit_tag t('.add_filter'), class: 'fr-btn fr-btn--secondary fr-mt-2w' diff --git a/app/controllers/instructeurs/procedures_controller.rb b/app/controllers/instructeurs/procedures_controller.rb index 3a1428604..7651f800c 100644 --- a/app/controllers/instructeurs/procedures_controller.rb +++ b/app/controllers/instructeurs/procedures_controller.rb @@ -131,19 +131,16 @@ module Instructeurs end def add_filter - respond_to do |format| - format.html do - procedure_presentation.add_filter(statut, params[:field], params[:value]) + procedure_presentation.add_filter(statut, params[:field], params[:value]) - redirect_back(fallback_location: instructeur_procedure_url(procedure)) - end - format.turbo_stream do - @statut = statut - @procedure = procedure - @procedure_presentation = procedure_presentation - @field = params[:field] - end - end + redirect_back(fallback_location: instructeur_procedure_url(procedure)) + end + + def update_filter + @statut = statut + @procedure = procedure + @procedure_presentation = procedure_presentation + @field = params[:field] end def remove_filter diff --git a/app/javascript/controllers/dossier_filter_controller.ts b/app/javascript/controllers/dossier_filter_controller.ts deleted file mode 100644 index 11b8b4113..000000000 --- a/app/javascript/controllers/dossier_filter_controller.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { httpRequest } from '@utils'; -import { ApplicationController } from './application_controller'; - -export class DossierFilterController extends ApplicationController { - onChange() { - const element = this.element as HTMLFormElement; - - httpRequest(element.action, { - method: element.getAttribute('method') ?? '', - body: new FormData(element) - }).turbo(); - } -} diff --git a/app/views/instructeurs/procedures/add_filter.turbo_stream.haml b/app/views/instructeurs/procedures/update_filter.turbo_stream.haml similarity index 76% rename from app/views/instructeurs/procedures/add_filter.turbo_stream.haml rename to app/views/instructeurs/procedures/update_filter.turbo_stream.haml index 05598d95b..55679210d 100644 --- a/app/views/instructeurs/procedures/add_filter.turbo_stream.haml +++ b/app/views/instructeurs/procedures/update_filter.turbo_stream.haml @@ -1,2 +1,2 @@ -= turbo_stream.replace 'filter-component' do += turbo_stream.morph 'filter-component' do = render Dossiers::FilterComponent.new(procedure: @procedure, procedure_presentation: @procedure_presentation, statut: @statut, field_id: @field) diff --git a/config/routes.rb b/config/routes.rb index 3ae74c592..dba9f617f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -394,7 +394,8 @@ Rails.application.routes.draw do patch 'update_displayed_fields' get 'update_sort/:table/:column' => 'procedures#update_sort', as: 'update_sort' post 'add_filter' - get 'remove_filter' => 'procedures#remove_filter', as: 'remove_filter' + post 'update_filter' + get 'remove_filter' get 'download_export' post 'download_export' get 'stats' diff --git a/spec/system/instructeurs/procedure_filters_spec.rb b/spec/system/instructeurs/procedure_filters_spec.rb index cf90566d4..44ef71eb9 100644 --- a/spec/system/instructeurs/procedure_filters_spec.rb +++ b/spec/system/instructeurs/procedure_filters_spec.rb @@ -84,6 +84,7 @@ describe "procedure filters" do find("input#value[type=date]", visible: true) fill_in "Valeur", with: "10/10/2010" click_button "Ajouter le filtre" + expect(page).to have_no_css("select#field", visible: true) # use enum filter click_on 'Sélectionner un filtre' @@ -134,6 +135,7 @@ describe "procedure filters" do select column_name, from: "Colonne" fill_in "Valeur", with: filter_value click_button "Ajouter le filtre" + expect(page).to have_no_css("select#field", visible: true) end def add_column(column_name)