commit
aca557551b
4 changed files with 30 additions and 19 deletions
|
@ -25,11 +25,11 @@ defmodule Chiya.Notes.Note do
|
||||||
|
|
||||||
many_to_many :links_from, Chiya.Notes.Note,
|
many_to_many :links_from, Chiya.Notes.Note,
|
||||||
join_through: Chiya.Notes.NoteNote,
|
join_through: Chiya.Notes.NoteNote,
|
||||||
join_keys: [target_id: :id, source_id: :id]
|
join_keys: [source_id: :id, target_id: :id]
|
||||||
|
|
||||||
many_to_many :links_to, Chiya.Notes.Note,
|
many_to_many :links_to, Chiya.Notes.Note,
|
||||||
join_through: Chiya.Notes.NoteNote,
|
join_through: Chiya.Notes.NoteNote,
|
||||||
join_keys: [source_id: :id, target_id: :id]
|
join_keys: [target_id: :id, source_id: :id]
|
||||||
|
|
||||||
many_to_many :tags, Chiya.Tags.Tag,
|
many_to_many :tags, Chiya.Tags.Tag,
|
||||||
join_through: Chiya.Notes.NoteTag,
|
join_through: Chiya.Notes.NoteTag,
|
||||||
|
|
|
@ -76,16 +76,23 @@ defmodule Chiya.Notes.References do
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_references({:ok, note}, attrs) do
|
def update_references({:ok, note}, attrs) do
|
||||||
|
note = Chiya.Notes.preload_note(note)
|
||||||
|
|
||||||
new_reference_slugs = get_reference_ids(attrs["content"])
|
new_reference_slugs = get_reference_ids(attrs["content"])
|
||||||
|
Logger.info("New references")
|
||||||
|
Logger.info(inspect(new_reference_slugs))
|
||||||
|
|
||||||
old_reference_slugs = Enum.map(note.links_from, fn n -> n.slug end)
|
old_reference_slugs = Enum.map(note.links_from, fn n -> n.slug end)
|
||||||
|
Logger.info("Old references")
|
||||||
|
Logger.info(inspect(old_reference_slugs))
|
||||||
|
|
||||||
references_to_add = new_reference_slugs -- old_reference_slugs
|
references_to_add = new_reference_slugs -- old_reference_slugs
|
||||||
|
Logger.info("References to add: #{Enum.count(references_to_add)}")
|
||||||
|
Logger.info(inspect(references_to_add))
|
||||||
|
|
||||||
references_to_remove = old_reference_slugs -- new_reference_slugs
|
references_to_remove = old_reference_slugs -- new_reference_slugs
|
||||||
|
Logger.info("References to remove: #{Enum.count(references_to_remove)}")
|
||||||
Logger.debug("References to add: #{Enum.count(references_to_add)}")
|
Logger.info(inspect(references_to_remove))
|
||||||
Logger.debug(inspect(references_to_add))
|
|
||||||
|
|
||||||
Logger.debug("References to remove: #{Enum.count(references_to_remove)}")
|
|
||||||
Logger.debug(inspect(references_to_remove))
|
|
||||||
|
|
||||||
add_note_links(note, references_to_add)
|
add_note_links(note, references_to_add)
|
||||||
remove_note_links(note, references_to_remove)
|
remove_note_links(note, references_to_remove)
|
||||||
|
@ -108,12 +115,16 @@ defmodule Chiya.Notes.References do
|
||||||
end
|
end
|
||||||
|
|
||||||
defp add_note_link(slug, origin_note, linked_note) do
|
defp add_note_link(slug, origin_note, linked_note) do
|
||||||
with attrs <- get_attrs(origin_note.id, linked_note.id),
|
attrs = get_attrs(origin_note.id, linked_note.id)
|
||||||
{:ok, _note_note} <- Chiya.Notes.create_note_note(attrs) do
|
|
||||||
|
case Chiya.Notes.create_note_note(attrs) do
|
||||||
|
{:ok, _note_note} ->
|
||||||
Logger.info("Reference to '#{slug}' created")
|
Logger.info("Reference to '#{slug}' created")
|
||||||
else
|
|
||||||
error ->
|
{:error, changelog} ->
|
||||||
Logger.warn(error)
|
Logger.warn("Reference was not added.")
|
||||||
|
Logger.error(inspect(changelog))
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -11,17 +11,17 @@
|
||||||
</:actions>
|
</:actions>
|
||||||
</.header>
|
</.header>
|
||||||
|
|
||||||
<section class="flex flex-row flex-wrap mt-4 gap-3">
|
<section class="flex flex-row flex-wrap mt-4 -mb-6 gap-3">
|
||||||
<a
|
<a
|
||||||
href={~p"/admin/notes"}
|
href={~p"/admin/notes"}
|
||||||
class="text-sm dark:text-gray-300 rounded-full bg-gray-300 hover:bg-gray-400 dark:bg-gray-700 dark:hover:bg-gray-600 px-2 py-1"
|
class="text-sm dark:text-gray-300 rounded-full bg-gray-100 hover:bg-gray-200 dark:bg-gray-800 dark:hover:bg-gray-700 px-2 py-1 border border-gray-300 dark:border-gray-600 shadow-sm transition"
|
||||||
>
|
>
|
||||||
All
|
All
|
||||||
</a>
|
</a>
|
||||||
<%= for channel <- @channels do %>
|
<%= for channel <- @channels do %>
|
||||||
<a
|
<a
|
||||||
href={~p"/admin/notes?channel=#{channel.slug}"}
|
href={~p"/admin/notes?channel=#{channel.slug}"}
|
||||||
class="text-sm dark:text-gray-300 rounded-full bg-gray-300 hover:bg-gray-400 dark:bg-gray-700 dark:hover:bg-gray-600 px-2 py-1"
|
class="text-sm dark:text-gray-300 rounded-full bg-gray-100 hover:bg-gray-200 dark:bg-gray-800 dark:hover:bg-gray-700 px-2 py-1 border border-gray-300 dark:border-gray-600 shadow-sm transition"
|
||||||
>
|
>
|
||||||
<%= channel.name %>
|
<%= channel.name %>
|
||||||
<span class="text-gray-600 dark:text-gray-500">(<%= Enum.count(channel.notes) %>)</span>
|
<span class="text-gray-600 dark:text-gray-500">(<%= Enum.count(channel.notes) %>)</span>
|
||||||
|
|
|
@ -36,8 +36,8 @@ defmodule ChiyaWeb.NoteShowLive do
|
||||||
<:item title="Kind"><%= @note.kind %></:item>
|
<:item title="Kind"><%= @note.kind %></:item>
|
||||||
<:item title="Url"><%= @note.url %></:item>
|
<:item title="Url"><%= @note.url %></:item>
|
||||||
<:item title="Tags"><%= note_tags(@note.tags) %></:item>
|
<:item title="Tags"><%= note_tags(@note.tags) %></:item>
|
||||||
<:item title="Links outgoing"><%= note_links(@note.links_to) %></:item>
|
<:item title="Links outgoing"><%= note_links(@note.links_from) %></:item>
|
||||||
<:item title="Links incoming"><%= note_links(@note.links_from) %></:item>
|
<:item title="Links incoming"><%= note_links(@note.links_to) %></:item>
|
||||||
</.list>
|
</.list>
|
||||||
|
|
||||||
<.line />
|
<.line />
|
||||||
|
|
Loading…
Reference in a new issue