From b1e174eb2ef18dbc27fc167aca284c14bf193ec6 Mon Sep 17 00:00:00 2001 From: KKlochko Date: Fri, 18 Apr 2025 11:15:23 +0300 Subject: [PATCH] Update the FormComponent for Book to reorder BookIds and AuthorRoles. --- assets/js/app.js | 5 ++++- assets/js/authorRoleSort.js | 14 ++++++++++++++ assets/js/bidSort.js | 14 ++++++++++++++ .../live/book_live/form_component.ex | 12 ++++++++++++ 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 assets/js/authorRoleSort.js create mode 100644 assets/js/bidSort.js diff --git a/assets/js/app.js b/assets/js/app.js index f4acdd6..d5639d0 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -23,11 +23,14 @@ import {LiveSocket} from "phoenix_live_view" import topbar from "../vendor/topbar" import "flowbite/dist/flowbite.phoenix.js"; +import bidSort from "./bidSort"; +import authorRoleSort from "./authorRoleSort"; let csrfToken = document.querySelector("meta[name='csrf-token']").getAttribute("content") let liveSocket = new LiveSocket("/live", Socket, { longPollFallbackMs: 2500, - params: {_csrf_token: csrfToken} + params: {_csrf_token: csrfToken}, + hooks: { bidSort, authorRoleSort } }) // Show progress bar on live navigation and form submits diff --git a/assets/js/authorRoleSort.js b/assets/js/authorRoleSort.js new file mode 100644 index 0000000..4e30d7d --- /dev/null +++ b/assets/js/authorRoleSort.js @@ -0,0 +1,14 @@ +import Sortable from 'sortablejs'; + +export default { + mounted() { + var sortable = new Sortable(this.el, { + handle: ".handle", + draggable: "tr", + ghostClass: "bg-gray-100", + onSort: (e) => { + this.pushEventTo(this.el, "reorder-author-role", { order: sortable.toArray(e.to) }) + } + }) + } +} diff --git a/assets/js/bidSort.js b/assets/js/bidSort.js new file mode 100644 index 0000000..3b0af78 --- /dev/null +++ b/assets/js/bidSort.js @@ -0,0 +1,14 @@ +import Sortable from 'sortablejs'; + +export default { + mounted() { + var sortable = new Sortable(this.el, { + handle: ".handle", + draggable: "tr", + ghostClass: "bg-gray-100", + onSort: (e) => { + this.pushEventTo(this.el, "reorder-bids", { order: sortable.toArray(e.to) }) + } + }) + } +} diff --git a/lib/decentralised_book_index_web/live/book_live/form_component.ex b/lib/decentralised_book_index_web/live/book_live/form_component.ex index c7b5f24..b52cf04 100644 --- a/lib/decentralised_book_index_web/live/book_live/form_component.ex +++ b/lib/decentralised_book_index_web/live/book_live/form_component.ex @@ -85,6 +85,7 @@ defmodule DecentralisedBookIndexWeb.BookLive.FormComponent do + @@ -93,6 +94,11 @@ defmodule DecentralisedBookIndexWeb.BookLive.FormComponent do <.inputs_for :let={bid_form} field={@form[:bids]}> +
Type Id
+ + <.input field={bid_form[:type]} /> @@ -164,6 +170,7 @@ defmodule DecentralisedBookIndexWeb.BookLive.FormComponent do + @@ -172,6 +179,11 @@ defmodule DecentralisedBookIndexWeb.BookLive.FormComponent do <.inputs_for :let={author_roles_form} field={@form[:author_roles]}> +
Author Role
+ + <.input field={author_roles_form[:author_id]} />