refactor(js): use autosubmit controller in filter_component
This commit is contained in:
parent
5d7284b8da
commit
289d48f697
6 changed files with 19 additions and 31 deletions
|
@ -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')
|
= 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
|
%br
|
||||||
= label_tag :value, t('.value'), for: 'value'
|
= label_tag :value, t('.value'), for: 'value'
|
||||||
- if field_type == :enum
|
- 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
|
- 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
|
= hidden_field_tag :statut, statut
|
||||||
= submit_tag t('.add_filter'), class: 'fr-btn fr-btn--secondary fr-mt-2w'
|
= submit_tag t('.add_filter'), class: 'fr-btn fr-btn--secondary fr-mt-2w'
|
||||||
|
|
|
@ -131,20 +131,17 @@ module Instructeurs
|
||||||
end
|
end
|
||||||
|
|
||||||
def add_filter
|
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))
|
redirect_back(fallback_location: instructeur_procedure_url(procedure))
|
||||||
end
|
end
|
||||||
format.turbo_stream do
|
|
||||||
|
def update_filter
|
||||||
@statut = statut
|
@statut = statut
|
||||||
@procedure = procedure
|
@procedure = procedure
|
||||||
@procedure_presentation = procedure_presentation
|
@procedure_presentation = procedure_presentation
|
||||||
@field = params[:field]
|
@field = params[:field]
|
||||||
end
|
end
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def remove_filter
|
def remove_filter
|
||||||
procedure_presentation.remove_filter(statut, params[:field], params[:value])
|
procedure_presentation.remove_filter(statut, params[:field], params[:value])
|
||||||
|
|
|
@ -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();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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)
|
= render Dossiers::FilterComponent.new(procedure: @procedure, procedure_presentation: @procedure_presentation, statut: @statut, field_id: @field)
|
|
@ -394,7 +394,8 @@ Rails.application.routes.draw do
|
||||||
patch 'update_displayed_fields'
|
patch 'update_displayed_fields'
|
||||||
get 'update_sort/:table/:column' => 'procedures#update_sort', as: 'update_sort'
|
get 'update_sort/:table/:column' => 'procedures#update_sort', as: 'update_sort'
|
||||||
post 'add_filter'
|
post 'add_filter'
|
||||||
get 'remove_filter' => 'procedures#remove_filter', as: 'remove_filter'
|
post 'update_filter'
|
||||||
|
get 'remove_filter'
|
||||||
get 'download_export'
|
get 'download_export'
|
||||||
post 'download_export'
|
post 'download_export'
|
||||||
get 'stats'
|
get 'stats'
|
||||||
|
|
|
@ -84,6 +84,7 @@ describe "procedure filters" do
|
||||||
find("input#value[type=date]", visible: true)
|
find("input#value[type=date]", visible: true)
|
||||||
fill_in "Valeur", with: "10/10/2010"
|
fill_in "Valeur", with: "10/10/2010"
|
||||||
click_button "Ajouter le filtre"
|
click_button "Ajouter le filtre"
|
||||||
|
expect(page).to have_no_css("select#field", visible: true)
|
||||||
|
|
||||||
# use enum filter
|
# use enum filter
|
||||||
click_on 'Sélectionner un filtre'
|
click_on 'Sélectionner un filtre'
|
||||||
|
@ -134,6 +135,7 @@ describe "procedure filters" do
|
||||||
select column_name, from: "Colonne"
|
select column_name, from: "Colonne"
|
||||||
fill_in "Valeur", with: filter_value
|
fill_in "Valeur", with: filter_value
|
||||||
click_button "Ajouter le filtre"
|
click_button "Ajouter le filtre"
|
||||||
|
expect(page).to have_no_css("select#field", visible: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
def add_column(column_name)
|
def add_column(column_name)
|
||||||
|
|
Loading…
Add table
Reference in a new issue