Merge pull request #8286 from colinux/instructeurs-table-dsfr
style(instructeurs): dossiers table with dropdown DSFR
This commit is contained in:
commit
2e072702ce
7 changed files with 20 additions and 13 deletions
|
@ -1,5 +1,5 @@
|
||||||
%span.dropdown{ data: { controller: 'menu-button' } }
|
%span.dropdown{ data: { controller: 'menu-button' } }
|
||||||
%button.button.dropdown-button{ data: { menu_button_target: 'button' } }
|
%button.fr-btn.fr-btn--secondary.fr-btn--sm.dropdown-button{ data: { menu_button_target: 'button' } }
|
||||||
- if @count.nil?
|
- if @count.nil?
|
||||||
= t(".download_all")
|
= t(".download_all")
|
||||||
- else
|
- else
|
||||||
|
|
|
@ -9,5 +9,4 @@
|
||||||
%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 }
|
||||||
|
|
||||||
= hidden_field_tag :statut, statut
|
= hidden_field_tag :statut, statut
|
||||||
%br
|
= submit_tag t('.add_filter'), class: 'fr-btn fr-btn--secondary fr-mt-2w'
|
||||||
= submit_tag t('.add_filter'), class: 'button'
|
|
||||||
|
|
|
@ -233,9 +233,10 @@ class ProcedurePresentation < ApplicationRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
def human_value_for_filter(filter)
|
def human_value_for_filter(filter)
|
||||||
case filter[TABLE]
|
if [TYPE_DE_CHAMP, TYPE_DE_CHAMP_PRIVATE].include?(filter[TABLE])
|
||||||
when TYPE_DE_CHAMP, TYPE_DE_CHAMP_PRIVATE
|
|
||||||
find_type_de_champ(filter[COLUMN]).dynamic_type.filter_to_human(filter['value'])
|
find_type_de_champ(filter[COLUMN]).dynamic_type.filter_to_human(filter['value'])
|
||||||
|
elsif filter['column'] == 'state'
|
||||||
|
Dossier.human_attribute_name("state.#{filter['value']}")
|
||||||
else
|
else
|
||||||
filter['value']
|
filter['value']
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,16 +1,15 @@
|
||||||
%span.dropdown{ data: { controller: 'menu-button', popover: 'true' } }
|
%span.dropdown{ data: { controller: 'menu-button', popover: 'true' } }
|
||||||
%button.button.dropdown-button{ data: { menu_button_target: 'button' } }
|
%button.fr-btn.fr-btn--secondary.fr-btn--sm.fr-mr-1w.dropdown-button{ data: { menu_button_target: 'button' } }
|
||||||
= t('views.instructeurs.dossiers.filters.title')
|
= t('views.instructeurs.dossiers.filters.title')
|
||||||
#filter-menu.dropdown-content.left-aligned.fade-in-down{ data: { menu_button_target: 'menu' } }
|
#filter-menu.dropdown-content.left-aligned.fade-in-down{ data: { menu_button_target: 'menu' } }
|
||||||
= render Dossiers::FilterComponent.new(procedure: procedure, procedure_presentation: @procedure_presentation, statut: statut)
|
= render Dossiers::FilterComponent.new(procedure: procedure, procedure_presentation: @procedure_presentation, statut: statut)
|
||||||
|
|
||||||
- current_filters.group_by { |filter| filter['table'] }.each_with_index do |(table, filters), i|
|
- current_filters.group_by { |filter| filter['table'] }.each_with_index do |(table, filters), i|
|
||||||
- if i > 0
|
- if i > 0
|
||||||
et
|
= " et "
|
||||||
- filters.each_with_index do |filter, i|
|
- filters.each_with_index do |filter, i|
|
||||||
- if i > 0
|
- if i > 0
|
||||||
ou
|
= " ou "
|
||||||
%span.filter
|
= link_to remove_filter_instructeur_procedure_path(procedure, { statut: statut, field: "#{filter['table']}/#{filter['column']}", value: filter['value'] }),
|
||||||
= link_to remove_filter_instructeur_procedure_path(procedure, { statut: statut, field: "#{filter['table']}/#{filter['column']}", value: filter['value'] }) do
|
class: "fr-tag fr-tag--dismiss fr-mb-1w", aria: { label: "Retirer le filtre #{filter['column']}" } do
|
||||||
%img.close-icon{ src: image_url("close.svg") }
|
|
||||||
= "#{filter['label'].truncate(50)} : #{procedure_presentation.human_value_for_filter(filter)}"
|
= "#{filter['label'].truncate(50)} : #{procedure_presentation.human_value_for_filter(filter)}"
|
||||||
|
|
|
@ -94,7 +94,7 @@
|
||||||
|
|
||||||
%th.action-col.follow-col
|
%th.action-col.follow-col
|
||||||
%span.dropdown{ data: { controller: 'menu-button', popover: 'true' } }
|
%span.dropdown{ data: { controller: 'menu-button', popover: 'true' } }
|
||||||
%button.button.dropdown-button{ data: { menu_button_target: 'button' } }
|
%button.fr-btn.fr-btn--sm.fr-btn--secondary.dropdown-button{ data: { menu_button_target: 'button' } }
|
||||||
= t('views.instructeurs.dossiers.personalize')
|
= t('views.instructeurs.dossiers.personalize')
|
||||||
#custom-menu.dropdown-content.fade-in-down{ data: { menu_button_target: 'menu' } }
|
#custom-menu.dropdown-content.fade-in-down{ data: { menu_button_target: 'menu' } }
|
||||||
= form_tag update_displayed_fields_instructeur_procedure_path(@procedure), method: :patch, class: 'dropdown-form large columns-form' do
|
= form_tag update_displayed_fields_instructeur_procedure_path(@procedure), method: :patch, class: 'dropdown-form large columns-form' do
|
||||||
|
|
|
@ -784,6 +784,14 @@ describe ProcedurePresentation do
|
||||||
expect(subject).to eq("oui")
|
expect(subject).to eq("oui")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when filter is state' do
|
||||||
|
let(:filters) { { "suivis" => [{ "table" => "self", "column" => "state", "value" => "en_construction" }] } }
|
||||||
|
|
||||||
|
it 'should get i18n value' do
|
||||||
|
expect(subject).to eq("En construction")
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#add_filter" do
|
describe "#add_filter" do
|
||||||
|
|
|
@ -126,7 +126,7 @@ describe "procedure filters" do
|
||||||
end
|
end
|
||||||
|
|
||||||
def remove_filter(filter_value)
|
def remove_filter(filter_value)
|
||||||
find(:xpath, "(//span[contains(@class, 'filter')]/a[contains(@href, '#{CGI.escape(filter_value)}')])[1]").click
|
click_link text: filter_value
|
||||||
end
|
end
|
||||||
|
|
||||||
def add_filter(column_name, filter_value)
|
def add_filter(column_name, filter_value)
|
||||||
|
|
Loading…
Reference in a new issue