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