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))
|
||||
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
|
||||
|
||||
def toggle_routing
|
||||
|
|
|
@ -10,3 +10,5 @@
|
|||
instructeurs: @instructeurs,
|
||||
available_instructeur_emails: @available_instructeur_emails,
|
||||
disabled_as_super_admin: administrateur_as_manager?)
|
||||
- else
|
||||
= render Procedure::GroupesManagementComponent.new(procedure: @procedure, groupe_instructeurs: @groupes_instructeurs, query: params[:q])
|
||||
|
|
Loading…
Add table
Reference in a new issue