From dabbc1242b6c67ad7b3b701699fc3b733226b9c3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Gaya?= <sebastien.gaya@gmail.com>
Date: Mon, 26 Dec 2022 11:59:11 +0100
Subject: [PATCH] Description + Alphabetical order in datatable elements

---
 app/models/communication/block/template/datatable.rb   | 10 ++++++++++
 .../blocks/templates/datatable/_edit.html.erb          | 10 ++++++++++
 .../blocks/templates/datatable/_preview.html.erb       |  4 ++++
 .../blocks/templates/datatable/_static.html.erb        |  1 +
 config/locales/communication/fr.yml                    |  4 ++++
 5 files changed, 29 insertions(+)

diff --git a/app/models/communication/block/template/datatable.rb b/app/models/communication/block/template/datatable.rb
index a6f3d5ec3..fce292fe3 100644
--- a/app/models/communication/block/template/datatable.rb
+++ b/app/models/communication/block/template/datatable.rb
@@ -3,5 +3,15 @@ class Communication::Block::Template::Datatable < Communication::Block::Template
   has_elements
   has_component :columns, :array
   has_component :caption, :text
+  has_component :description, :rich_text
+  has_component :alphabetical, :boolean
 
+  def elements
+    if alphabetical
+      @elements.sort_by! do |element|
+        "#{element.cells&.first&.to_s&.parameterize&.downcase}"
+      end
+    end
+    @elements
+  end
 end
diff --git a/app/views/admin/communication/blocks/templates/datatable/_edit.html.erb b/app/views/admin/communication/blocks/templates/datatable/_edit.html.erb
index d1111ef09..0b7a2e792 100644
--- a/app/views/admin/communication/blocks/templates/datatable/_edit.html.erb
+++ b/app/views/admin/communication/blocks/templates/datatable/_edit.html.erb
@@ -1,3 +1,13 @@
+<div class="row">
+  <div class="col-xl-6">
+    <%= block_component_edit :description %>
+  </div>
+  <div class="col-xl-6">
+    <label class="form-label">&nbsp;</label>
+    <%= block_component_edit :alphabetical %>
+  </div>
+</div>
+
 <div class="table-responsive mb-5">
   <div class="fake-table table">
     <div class="thead">
diff --git a/app/views/admin/communication/blocks/templates/datatable/_preview.html.erb b/app/views/admin/communication/blocks/templates/datatable/_preview.html.erb
index 8ae4ebc8c..0f2d97f82 100644
--- a/app/views/admin/communication/blocks/templates/datatable/_preview.html.erb
+++ b/app/views/admin/communication/blocks/templates/datatable/_preview.html.erb
@@ -1,3 +1,7 @@
+<div class="description">
+  <%= block_component_preview :description %>
+</div>
+
 <div class="table-responsive">
   <caption><%= block_component_preview :caption %></caption>
   <table class="<%= table_classes %>">
diff --git a/app/views/admin/communication/blocks/templates/datatable/_static.html.erb b/app/views/admin/communication/blocks/templates/datatable/_static.html.erb
index 3036a3844..b14460605 100644
--- a/app/views/admin/communication/blocks/templates/datatable/_static.html.erb
+++ b/app/views/admin/communication/blocks/templates/datatable/_static.html.erb
@@ -1,3 +1,4 @@
+<%= block_component_static :description %>
 <%= block_component_static :columns %>
       rows:
 <% block.template.elements.each do |element| %>
diff --git a/config/locales/communication/fr.yml b/config/locales/communication/fr.yml
index 8b859957e..e40d7e023 100644
--- a/config/locales/communication/fr.yml
+++ b/config/locales/communication/fr.yml
@@ -277,9 +277,13 @@ fr:
           datatable:
             description: Un tableau de données, aussi responsive et accessible que possible.
             edit:
+              alphabetical:
+                  label: Ordre alphabétique
               caption:
                 label: Transcription textuelle
                 placeholder: Entrer ici la transcription textuelle du tableau
+              description:
+                label: Description
           definitions:
             description: Une liste de termes et leur définition. Un genre de dictionnaire, finalement.
             edit:
-- 
GitLab