From 4d1cbb2219b173f18cdcc85de3104c3a9043da17 Mon Sep 17 00:00:00 2001
From: alexisben <alexiben7@gmail.com>
Date: Wed, 8 Jun 2022 16:24:14 +0200
Subject: [PATCH] Datable block wip

---
 .../communication/block/component/array.rb    |  7 ++++
 .../communication/block/template/base.rb      |  4 ++
 .../communication/block/template/datatable.rb |  4 +-
 .../block/template/datatable/row.rb           |  6 +++
 .../block/template/datatable/row/cell.rb      |  5 +++
 .../admin/communication/blocks/edit.html.erb  |  2 +-
 .../blocks/templates/datatable/_edit.html.erb | 42 +++++++++++++++++++
 db/schema.rb                                  | 19 +--------
 8 files changed, 68 insertions(+), 21 deletions(-)
 create mode 100644 app/models/communication/block/component/array.rb
 create mode 100644 app/models/communication/block/template/datatable/row.rb
 create mode 100644 app/models/communication/block/template/datatable/row/cell.rb

diff --git a/app/models/communication/block/component/array.rb b/app/models/communication/block/component/array.rb
new file mode 100644
index 000000000..019d1d0bb
--- /dev/null
+++ b/app/models/communication/block/component/array.rb
@@ -0,0 +1,7 @@
+class Communication::Block::Component::Array < Communication::Block::Component::Base
+
+  def default_data
+    [""]
+  end
+
+end
diff --git a/app/models/communication/block/template/base.rb b/app/models/communication/block/template/base.rb
index e8af04c5e..dd3ea1abc 100644
--- a/app/models/communication/block/template/base.rb
+++ b/app/models/communication/block/template/base.rb
@@ -29,6 +29,10 @@ class Communication::Block::Template::Base
     has_component property, :number
   end
 
+  def self.has_array(property)
+    has_component property, :array
+  end
+
   def self.has_layouts(list)
     self.layouts = list
     has_component :layout, :layout
diff --git a/app/models/communication/block/template/datatable.rb b/app/models/communication/block/template/datatable.rb
index 579750d21..8e0e40f3b 100644
--- a/app/models/communication/block/template/datatable.rb
+++ b/app/models/communication/block/template/datatable.rb
@@ -1,4 +1,4 @@
 class Communication::Block::Template::Datatable < Communication::Block::Template::Base
-  def build_git_dependencies
-  end
+  has_array :columns
+  has_elements Communication::Block::Template::Datatable::Row
 end
diff --git a/app/models/communication/block/template/datatable/row.rb b/app/models/communication/block/template/datatable/row.rb
new file mode 100644
index 000000000..1a6dd075c
--- /dev/null
+++ b/app/models/communication/block/template/datatable/row.rb
@@ -0,0 +1,6 @@
+class Communication::Block::Template::Datatable::Row < Communication::Block::Template::Base
+
+    # has_elements Communication::Block::Template::Datatable::Row::Cell
+    has_array :cells
+
+end
diff --git a/app/models/communication/block/template/datatable/row/cell.rb b/app/models/communication/block/template/datatable/row/cell.rb
new file mode 100644
index 000000000..dfb1c661e
--- /dev/null
+++ b/app/models/communication/block/template/datatable/row/cell.rb
@@ -0,0 +1,5 @@
+class Communication::Block::Template::Datatable::Row::Cell < Communication::Block::Template::Base
+
+    has_string :text
+
+end
diff --git a/app/views/admin/communication/blocks/edit.html.erb b/app/views/admin/communication/blocks/edit.html.erb
index b16d37e9a..a719d1bc4 100644
--- a/app/views/admin/communication/blocks/edit.html.erb
+++ b/app/views/admin/communication/blocks/edit.html.erb
@@ -13,7 +13,7 @@
       </div>
     </div>
     <%= render "admin/communication/blocks/templates/#{@block.template_kind}/edit", f: f %>
-    <textarea name="communication_block[data]" rows="20" cols="200" class="d-none">
+    <textarea name="communication_block[data]" rows="20" cols="200" class="d-non">
       {{ JSON.stringify(data) }}
     </textarea>
     <% content_for :action_bar_right do %>
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 e69de29bb..d935c0e17 100644
--- a/app/views/admin/communication/blocks/templates/datatable/_edit.html.erb
+++ b/app/views/admin/communication/blocks/templates/datatable/_edit.html.erb
@@ -0,0 +1,42 @@
+<a  class="<%= button_classes('mb-4 me-2') %>"
+    v-on:click="data.columns.push('')">
+    Ajouter une colonne
+</a>
+
+<a  class="<%= button_classes('mb-4 me-2 btn-danger') %>"
+    v-on:click="data.columns.pop()">
+      Supprimer une colonne <i class="fas fa-times"></i>
+</a>
+
+<a  class="<%= button_classes('mb-4 me-2') %>"
+    v-on:click="data.elements.push({cells: []})">
+    Ajouter une ligne
+</a>
+
+<div class="row">
+  <table class="table">
+    <thead>
+      <tr>
+        <td v-for="(column, index) in data.columns">
+          <input 
+              type="text"
+              v-model="data.columns[index]">
+        </td>
+      </tr>
+    </thead>
+    <tbody>
+      <tr v-for="row in data.elements">
+        <td v-for="(column, index) in data.columns">
+          <input 
+              type="text"
+              v-model="row.cells[index]">
+        </td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+<%#= block_component_add_element "Ajouter une ligne" %> 
+<%# Comportement non attendu dans ce context  %>
+
+
diff --git a/db/schema.rb b/db/schema.rb
index 2b98e8d52..45ca2a503 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -502,23 +502,6 @@ ActiveRecord::Schema.define(version: 2022_05_30_094714) do
     t.index ["university_id"], name: "index_education_schools_on_university_id"
   end
 
-  create_table "external_organizations", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
-    t.string "title"
-    t.text "description"
-    t.string "address"
-    t.string "zipcode"
-    t.string "city"
-    t.string "country"
-    t.string "website"
-    t.string "phone"
-    t.string "mail"
-    t.boolean "active"
-    t.string "sirene"
-    t.integer "kind"
-    t.datetime "created_at", precision: 6, null: false
-    t.datetime "updated_at", precision: 6, null: false
-  end
-
   create_table "imports", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
     t.integer "number_of_lines"
     t.jsonb "processing_errors"
@@ -713,8 +696,8 @@ ActiveRecord::Schema.define(version: 2022_05_30_094714) do
     t.string "linkedin"
     t.boolean "is_alumnus", default: false
     t.text "description_short"
-    t.string "name"
     t.boolean "is_author"
+    t.string "name"
     t.integer "gender"
     t.date "birthdate"
     t.string "phone_professional"
-- 
GitLab