add groupes_management_component

This commit is contained in:
simon lehericey 2023-04-24 15:32:58 +02:00 committed by LeSim
parent 142ac9173d
commit 5b0e0ced3c
5 changed files with 81 additions and 0 deletions

View 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

View file

@ -0,0 +1,8 @@
---
fr:
groupe:
one: "%{count} groupe"
other: "%{count} groupes"
found:
one: "trouvé"
other: "trouvés"

View file

@ -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'

View file

@ -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

View file

@ -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])