<commit_before>- content_for(:title, "#{@procedure.libelle}")

#procedure-show
  .sub-header
    .container.flex

      .procedure-logo{ style: "background-image: url(#{@procedure.logo_url})",
        role: 'img', 'aria-label': "logo de la démarche #{@procedure.libelle}" }

      .procedure-header
        %h1= procedure_libelle @procedure
        = link_to 'gestion des notifications', email_notifications_instructeur_procedure_path(@procedure), class: 'header-link'
        |
        = link_to 'statistiques', stats_instructeur_procedure_path(@procedure), class: 'header-link', data: { turbolinks: false } # Turbolinks disabled for Chartkick. See Issue #350


        %ul.tabs
          = tab_item('à suivre',
            instructeur_procedure_path(@procedure, statut: 'a-suivre'),
            active: @statut == 'a-suivre',
            badge: @a_suivre_dossiers.count)

          = tab_item(t('pluralize.followed', count: @followed_dossiers.count),
            instructeur_procedure_path(@procedure, statut: 'suivis'),
            active: @statut == 'suivis',
            badge: @followed_dossiers.count,
            notification: current_instructeur.notifications_for_procedure(@procedure, :en_cours).present?)

          = tab_item(t('pluralize.processed', count: @termines_dossiers.count),
            instructeur_procedure_path(@procedure, statut: 'traites'),
            active: @statut == 'traites',
            badge: @termines_dossiers.count,
            notification: current_instructeur.notifications_for_procedure(@procedure, :termine).present?)

          = tab_item('tous les dossiers',
            instructeur_procedure_path(@procedure, statut: 'tous'),
            active: @statut == 'tous',
            badge: @all_state_dossiers.count)

          = tab_item(t('pluralize.archived', count: @archived_dossiers.count),
            instructeur_procedure_path(@procedure, statut: 'archives'),
            active: @statut == 'archives',
            badge: @archived_dossiers.count)

      .procedure-actions
        = render partial: "download_dossiers", locals: { procedure: @procedure }

  .container
    - if @statut == 'a-suivre'
      %p.explication-onglet Aucun instructeur n'est affecté au suivi de ces dossiers. Soyez le premier !
    - if @statut == 'suivis'
      %p.explication-onglet Les dossiers qui sont dans cet onglet sont uniquement ceux que vous suivez. Vous pouvez échanger avec le demandeur jusqu'à pouvoir les accepter, les refuser ou les classer sans suite.
    - if @statut == 'traites'
      %p.explication-onglet Les dossiers dans cet onglet sont terminés : ils ont été acceptés, refusés ou classés sans suite.
    - if @statut == 'tous'
      %p.explication-onglet Tous les dossiers qui ont été déposés sur cette démarche, sans aucun filtre.
    - if @statut == 'archives'
      %p.explication-onglet Les dossiers de cet onglet sont archivés : vous ne pouvez plus y répondre, et les demandeurs ne peuvent plus les modifier.

    - if @dossiers.present? || @current_filters.count > 0
      %span.dropdown
        %button.button.dropdown-button
          Filtrer
        .dropdown-content.left-aligned.fade-in-down
          = form_tag add_filter_instructeur_procedure_path(@procedure), method: :post, class: 'dropdown-form large' do
            = label_tag :field,  "Colonne"
            = select_tag :field, options_for_select(@available_fields_to_filters)
            %br
            = label_tag :value, "Valeur"
            = text_field_tag :value
            = hidden_field_tag :statut, @statut
            %br
            = submit_tag "Ajouter le filtre", class: 'button'

      - @current_filters.group_by { |filter| filter['table'] }.each_with_index do |(table, filters), i|
        - if i > 0
          et
        - filters.each_with_index do |filter, i|
          - if i > 0
            ou
          %span.filter
            = link_to remove_filter_instructeur_procedure_path(@procedure, { statut: @statut, table: filter['table'], column: filter['column'], value: filter['value'] }) do
              %img.close-icon{ src: image_url("close.svg") }
            = "#{filter['label'].truncate(50)} : #{filter['value']}"
      %table.table.dossiers-table.hoverable
        %thead
          %tr
            - if @statut == 'suivis' || @statut == 'tous'
              = render partial: "header_field", locals: { field: { "label" => "●", "table" => "notifications", "column" => "notifications" }, classname: "notification-col" }
            - else
              %th.notification-col

            = render partial: "header_field", locals: { field: { "label" => "Nº dossier", "table" => "self", "column" => "id" }, classname: "number-col" }

            - @procedure_presentation.displayed_fields.each do |field|
              = render partial: "header_field", locals: { field: field, classname: "" }

            = render partial: "header_field", locals: { field: { "label" => "Statut", "table" => "self", "column" => "state" },  classname: "status-col" }

            %th.action-col.follow-col
              %span.dropdown
                %button.button.dropdown-button
                  Personnaliser
                .dropdown-content.fade-in-down
                  = form_tag update_displayed_fields_instructeur_procedure_path(@procedure), method: :patch, class: 'dropdown-form columns-form' do
                    = select_tag :values,
                      options_for_select(@procedure_presentation.fields_for_select,
                        selected: @displayed_fields_values),
                      multiple: true,
                      class: 'select2-limited'
                    = submit_tag "Enregistrer", class: 'button'

        %tbody
          - @dossiers.each do |dossier|
            %tr
              %td.folder-col<commit_msg>Allow sorting Dossiers by “has notifications” in `traites`<commit_after>- content_for(:title, "#{@procedure.libelle}")

#procedure-show
  .sub-header
    .container.flex

      .procedure-logo{ style: "background-image: url(#{@procedure.logo_url})",
        role: 'img', 'aria-label': "logo de la démarche #{@procedure.libelle}" }

      .procedure-header
        %h1= procedure_libelle @procedure
        = link_to 'gestion des notifications', email_notifications_instructeur_procedure_path(@procedure), class: 'header-link'
        |
        = link_to 'statistiques', stats_instructeur_procedure_path(@procedure), class: 'header-link', data: { turbolinks: false } # Turbolinks disabled for Chartkick. See Issue #350


        %ul.tabs
          = tab_item('à suivre',
            instructeur_procedure_path(@procedure, statut: 'a-suivre'),
            active: @statut == 'a-suivre',
            badge: @a_suivre_dossiers.count)

          = tab_item(t('pluralize.followed', count: @followed_dossiers.count),
            instructeur_procedure_path(@procedure, statut: 'suivis'),
            active: @statut == 'suivis',
            badge: @followed_dossiers.count,
            notification: current_instructeur.notifications_for_procedure(@procedure, :en_cours).present?)

          = tab_item(t('pluralize.processed', count: @termines_dossiers.count),
            instructeur_procedure_path(@procedure, statut: 'traites'),
            active: @statut == 'traites',
            badge: @termines_dossiers.count,
            notification: current_instructeur.notifications_for_procedure(@procedure, :termine).present?)

          = tab_item('tous les dossiers',
            instructeur_procedure_path(@procedure, statut: 'tous'),
            active: @statut == 'tous',
            badge: @all_state_dossiers.count)

          = tab_item(t('pluralize.archived', count: @archived_dossiers.count),
            instructeur_procedure_path(@procedure, statut: 'archives'),
            active: @statut == 'archives',
            badge: @archived_dossiers.count)

      .procedure-actions
        = render partial: "download_dossiers", locals: { procedure: @procedure }

  .container
    - if @statut == 'a-suivre'
      %p.explication-onglet Aucun instructeur n'est affecté au suivi de ces dossiers. Soyez le premier !
    - if @statut == 'suivis'
      %p.explication-onglet Les dossiers qui sont dans cet onglet sont uniquement ceux que vous suivez. Vous pouvez échanger avec le demandeur jusqu'à pouvoir les accepter, les refuser ou les classer sans suite.
    - if @statut == 'traites'
      %p.explication-onglet Les dossiers dans cet onglet sont terminés : ils ont été acceptés, refusés ou classés sans suite.
    - if @statut == 'tous'
      %p.explication-onglet Tous les dossiers qui ont été déposés sur cette démarche, sans aucun filtre.
    - if @statut == 'archives'
      %p.explication-onglet Les dossiers de cet onglet sont archivés : vous ne pouvez plus y répondre, et les demandeurs ne peuvent plus les modifier.

    - if @dossiers.present? || @current_filters.count > 0
      %span.dropdown
        %button.button.dropdown-button
          Filtrer
        .dropdown-content.left-aligned.fade-in-down
          = form_tag add_filter_instructeur_procedure_path(@procedure), method: :post, class: 'dropdown-form large' do
            = label_tag :field,  "Colonne"
            = select_tag :field, options_for_select(@available_fields_to_filters)
            %br
            = label_tag :value, "Valeur"
            = text_field_tag :value
            = hidden_field_tag :statut, @statut
            %br
            = submit_tag "Ajouter le filtre", class: 'button'

      - @current_filters.group_by { |filter| filter['table'] }.each_with_index do |(table, filters), i|
        - if i > 0
          et
        - filters.each_with_index do |filter, i|
          - if i > 0
            ou
          %span.filter
            = link_to remove_filter_instructeur_procedure_path(@procedure, { statut: @statut, table: filter['table'], column: filter['column'], value: filter['value'] }) do
              %img.close-icon{ src: image_url("close.svg") }
            = "#{filter['label'].truncate(50)} : #{filter['value']}"
      %table.table.dossiers-table.hoverable
        %thead
          %tr
            - if @statut.in? %w(suivis traites tous)
              = render partial: "header_field", locals: { field: { "label" => "●", "table" => "notifications", "column" => "notifications" }, classname: "notification-col" }
            - else
              %th.notification-col

            = render partial: "header_field", locals: { field: { "label" => "Nº dossier", "table" => "self", "column" => "id" }, classname: "number-col" }

            - @procedure_presentation.displayed_fields.each do |field|
              = render partial: "header_field", locals: { field: field, classname: "" }

            = render partial: "header_field", locals: { field: { "label" => "Statut", "table" => "self", "column" => "state" },  classname: "status-col" }

            %th.action-col.follow-col
              %span.dropdown
                %button.button.dropdown-button
                  Personnaliser
                .dropdown-content.fade-in-down
                  = form_tag update_displayed_fields_instructeur_procedure_path(@procedure), method: :patch, class: 'dropdown-form columns-form' do
                    = select_tag :values,
                      options_for_select(@procedure_presentation.fields_for_select,
                        selected: @displayed_fields_values),
                      multiple: true,
                      class: 'select2-limited'
                    = submit_tag "Enregistrer", class: 'button'

        %tbody
          - @dossiers.each do |dossier|
            %tr
              %td.folder-col
{'fraction_non_alphanumeric': 0.12004822597313124, 'fraction_numerical': 0.001722356183258698, 'mean_word_length': 2.5084592145015105, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 27, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '363920', 'n_tokens_mistral': 3599, 'n_tokens_neox': 3448, 'n_words': 790}