add groupes_management_component
This commit is contained in:
parent
142ac9173d
commit
5b0e0ced3c
5 changed files with 81 additions and 0 deletions
26
app/components/procedure/groupes_management_component.rb
Normal file
26
app/components/procedure/groupes_management_component.rb
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class Procedure::GroupesManagementComponent < ApplicationComponent
|
||||||
|
def initialize(procedure:, groupe_instructeurs:, query:)
|
||||||
|
@procedure = procedure
|
||||||
|
@groupe_instructeurs = groupe_instructeurs
|
||||||
|
@query = query
|
||||||
|
@total = groupe_instructeurs.total_count
|
||||||
|
end
|
||||||
|
|
||||||
|
def table_header
|
||||||
|
if @query.present?
|
||||||
|
if @groupe_instructeurs.length != @total
|
||||||
|
"#{t('.groupe', count: @groupe_instructeurs.length)} sur #{@total} #{t('.found', count: @total)}"
|
||||||
|
else
|
||||||
|
"#{t('.groupe', count: @groupe_instructeurs.length)} #{t('.found', count: @groupe_instructeurs.length)}"
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if @groupe_instructeurs.length != @total
|
||||||
|
"#{t('.groupe', count: @groupe_instructeurs.length)} sur #{@total}"
|
||||||
|
else
|
||||||
|
t('.groupe', count: @groupe_instructeurs.length)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
---
|
||||||
|
fr:
|
||||||
|
groupe:
|
||||||
|
one: "%{count} groupe"
|
||||||
|
other: "%{count} groupes"
|
||||||
|
found:
|
||||||
|
one: "trouvé"
|
||||||
|
other: "trouvés"
|
|
@ -0,0 +1,40 @@
|
||||||
|
- content_for(:title, 'Groupes')
|
||||||
|
%h1 Gestion des groupes
|
||||||
|
|
||||||
|
= render Procedure::GroupesSearchComponent.new(procedure: @procedure, query: @query, to_configure_count: @procedure.groupe_instructeurs.filter(&:routing_to_configure?).count)
|
||||||
|
|
||||||
|
.fr-table.fr-table--no-caption.fr-table--layout-fixed.fr-mt-2w
|
||||||
|
%table
|
||||||
|
%caption= table_header
|
||||||
|
%thead
|
||||||
|
%tr
|
||||||
|
%th{ scope: "col" }
|
||||||
|
.flex
|
||||||
|
.flex.auto= table_header
|
||||||
|
%span.fr-icon.fr-icon-user-line
|
||||||
|
%tbody
|
||||||
|
- @groupe_instructeurs.each do |gi|
|
||||||
|
%tr
|
||||||
|
%td
|
||||||
|
.flex
|
||||||
|
.flex.auto
|
||||||
|
= link_to admin_procedure_groupe_instructeur_path(@procedure, gi), class: 'fr-link' do
|
||||||
|
%span= gi.label
|
||||||
|
- if gi.closed
|
||||||
|
%p.fr-badge.fr-badge--info.fr-badge--sm.fr-ml-1w inactif
|
||||||
|
- elsif gi.routing_to_configure?
|
||||||
|
%p.fr-badge.fr-badge--warning.fr-badge--sm.fr-ml-1w à configurer
|
||||||
|
|
||||||
|
%div{ style: 'width: 25px; text-align: center;' }
|
||||||
|
#{gi.instructeurs.count}
|
||||||
|
%p= gi.routing_rule&.to_s(@procedure.active_revision.types_de_champ)
|
||||||
|
.fr-mt-1w
|
||||||
|
= paginate @groupe_instructeurs
|
||||||
|
|
||||||
|
= form_tag admin_procedure_update_defaut_groupe_instructeur_path,
|
||||||
|
class: 'fr-my-3w',
|
||||||
|
data: { controller: 'autosave' } do
|
||||||
|
= label_tag :defaut_groupe_instructeur_id, 'Et si aucune règle ne correspond, router vers :', class: 'fr-label'
|
||||||
|
= select_tag :defaut_groupe_instructeur_id,
|
||||||
|
options_for_select(@procedure.groupe_instructeurs.pluck(:label, :id), selected: @procedure.defaut_groupe_instructeur.id),
|
||||||
|
class: 'fr-select'
|
|
@ -86,6 +86,11 @@ class GroupeInstructeur < ApplicationRecord
|
||||||
dossiers.empty? && (procedure.groupe_instructeurs.active.many? || (procedure.groupe_instructeurs.active.one? && closed))
|
dossiers.empty? && (procedure.groupe_instructeurs.active.many? || (procedure.groupe_instructeurs.active.one? && closed))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def routing_to_configure?
|
||||||
|
rule = routing_rule
|
||||||
|
!(rule.is_a?(Logic::Eq) && rule.left.is_a?(Logic::ChampValue) && rule.right.is_a?(Logic::Constant))
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def toggle_routing
|
def toggle_routing
|
||||||
|
|
|
@ -10,3 +10,5 @@
|
||||||
instructeurs: @instructeurs,
|
instructeurs: @instructeurs,
|
||||||
available_instructeur_emails: @available_instructeur_emails,
|
available_instructeur_emails: @available_instructeur_emails,
|
||||||
disabled_as_super_admin: administrateur_as_manager?)
|
disabled_as_super_admin: administrateur_as_manager?)
|
||||||
|
- else
|
||||||
|
= render Procedure::GroupesManagementComponent.new(procedure: @procedure, groupe_instructeurs: @groupes_instructeurs, query: params[:q])
|
||||||
|
|
Loading…
Reference in a new issue