From fcfc2077580b6b2b92a2d582196f1649cf1bbf07 Mon Sep 17 00:00:00 2001
From: alexisben <alexiben7@gmail.com>
Date: Tue, 17 May 2022 19:02:59 +0200
Subject: [PATCH] Block key_figures

---
 .../blocks/templates/key_figures.jpg          | Bin 0 -> 18027 bytes
 app/models/communication/block.rb             |   1 +
 .../block/template/key_figure.rb              |  15 ++++++
 .../templates/key_figures/_edit.html.erb      |  50 ++++++++++++++++++
 .../templates/key_figures/_preview.html.erb   |   0
 .../templates/key_figures/_static.html.erb    |   9 ++++
 config/locales/communication/en.yml           |  10 ++++
 config/locales/communication/fr.yml           |  10 ++++
 8 files changed, 95 insertions(+)
 create mode 100644 app/assets/images/communication/blocks/templates/key_figures.jpg
 create mode 100644 app/models/communication/block/template/key_figure.rb
 create mode 100644 app/views/admin/communication/blocks/templates/key_figures/_edit.html.erb
 create mode 100644 app/views/admin/communication/blocks/templates/key_figures/_preview.html.erb
 create mode 100644 app/views/admin/communication/blocks/templates/key_figures/_static.html.erb

diff --git a/app/assets/images/communication/blocks/templates/key_figures.jpg b/app/assets/images/communication/blocks/templates/key_figures.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..de66f462ccf6e2ca5a376e7c32a6da9919036d5b
GIT binary patch
literal 18027
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
QTHlEKjkNwEkNdCv8~r7>lK=n!

literal 0
HcmV?d00001

diff --git a/app/models/communication/block.rb b/app/models/communication/block.rb
index 733a971a2..7e9d8a1e1 100644
--- a/app/models/communication/block.rb
+++ b/app/models/communication/block.rb
@@ -46,6 +46,7 @@ class Communication::Block < ApplicationRecord
     partners: 200,
     posts: 500,
     pages: 600,
+    key_figures: 56,
   }
 
   before_save :update_template_images
diff --git a/app/models/communication/block/template/key_figure.rb b/app/models/communication/block/template/key_figure.rb
new file mode 100644
index 000000000..0c4abee7d
--- /dev/null
+++ b/app/models/communication/block/template/key_figure.rb
@@ -0,0 +1,15 @@
+class Communication::Block::Template::KeyFigure < Communication::Block::Template
+  def build_git_dependencies
+  end
+
+  def figures
+    @figures ||= elements.map { |element| figure(element) }
+                              .compact
+  end
+
+  protected
+
+  def figure(element)
+    element.to_dot
+  end
+end
diff --git a/app/views/admin/communication/blocks/templates/key_figures/_edit.html.erb b/app/views/admin/communication/blocks/templates/key_figures/_edit.html.erb
new file mode 100644
index 000000000..dcd9e2463
--- /dev/null
+++ b/app/views/admin/communication/blocks/templates/key_figures/_edit.html.erb
@@ -0,0 +1,50 @@
+<a  class="<%= button_classes('mb-4') %>"
+    v-on:click="data.elements.push({number: 0, unit: '', description: ''})">
+    <%= t '.add_key' %>
+</a>
+
+<draggable :list="data.elements" handle=".dragHandle" class="row">
+  <div v-for="(key, index) in data.elements" class="col-md-4">
+    <div class="card">
+      <div class="card-body">
+        <div class="d-flex">
+          <div>
+            <a class="btn ps-0 pt-0 dragHandle">
+              <i class="fa fa-bars handle"></i>
+            </a>
+          </div>
+          <div class="flex-fill">
+            <label    class="form-label"
+                      :for="'key-' + index + '-number'"><%= t '.number_label' %></label>
+            <input class="form-control mb-3"
+                      v-model="key.number"
+                      placeholder="<%= t '.number_placeholder' %>"
+                      type="number"
+                      :id="'key-' + index + '-number'" />
+
+            <label    class="form-label"
+                      :for="'key-' + index + '-unit'"><%= t '.unit_label' %></label>
+            <input class="form-control mb-3"
+                      v-model="key.unit"
+                      placeholder="<%= t '.unit_placeholder' %>"
+                      :id="'key-' + index + '-unit'">
+
+            <label    class="form-label"
+                      :for="'key-' + index + '-description'"><%= t '.description_label' %></label>
+            <input class="form-control mb-3"
+                      v-model="key.description"
+                      placeholder="<%= t '.description_placeholder' %>"
+                      :id="'key-' + index + '-description'">
+          </div>
+          <div>
+            <a  class="btn btn-sm btn-danger ms-3"
+                v-on:click="data.elements.splice(data.elements.indexOf(key), 1)"
+                title="<%= t '.remove_key' %>">
+                <i class="fas fa-times"></i>
+            </a>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</draggable>
diff --git a/app/views/admin/communication/blocks/templates/key_figures/_preview.html.erb b/app/views/admin/communication/blocks/templates/key_figures/_preview.html.erb
new file mode 100644
index 000000000..e69de29bb
diff --git a/app/views/admin/communication/blocks/templates/key_figures/_static.html.erb b/app/views/admin/communication/blocks/templates/key_figures/_static.html.erb
new file mode 100644
index 000000000..6870d3caa
--- /dev/null
+++ b/app/views/admin/communication/blocks/templates/key_figures/_static.html.erb
@@ -0,0 +1,9 @@
+      figures:
+<% block.template.figures.each do |figure| %>
+        - number: >-
+            <%= prepare_text_for_static figure.number, 6 %>
+          unit: >-
+            <%= prepare_text_for_static figure.unit, 6 %>
+          description: >-
+            <%= prepare_text_for_static figure.description, 6 %>
+<% end %>
diff --git a/config/locales/communication/en.yml b/config/locales/communication/en.yml
index 03e75b921..6fca96732 100644
--- a/config/locales/communication/en.yml
+++ b/config/locales/communication/en.yml
@@ -196,6 +196,16 @@ en:
               text_label: Text
               text_placeholder: Enter text
               remove_image: Remove image
+          key_figures:
+            edit:
+              add_key: Add key figure
+              unit_label: Unit
+              unit_placeholder: Enter unit here
+              number_label: Number
+              number_placeholder: Enter key figure's value here
+              description_label: Description
+              description_placeholder: Enter description here
+              remove_key: Remove key figure
           organization_chart:
             edit:
               add_person: Add person
diff --git a/config/locales/communication/fr.yml b/config/locales/communication/fr.yml
index a406c0e00..1b62eae7a 100644
--- a/config/locales/communication/fr.yml
+++ b/config/locales/communication/fr.yml
@@ -197,6 +197,16 @@ fr:
               text_label: Texte
               text_placeholder: Entrer le texte
               remove_image: Enlever l'image
+          key_figures:
+            edit:
+              add_key: Add key figure
+              unit_label: Unit
+              unit_placeholder: Enter unit here
+              number_label: Number
+              number_placeholder: Enter key figure's value here
+              description_label: Description
+              description_placeholder: Enter description here
+              remove_key: Remove key figure
           organization_chart:
             edit:
               add_person: Ajouter une personne
-- 
GitLab