[Pools] Simplify pool versions post changes

It unconditionally took values from the passed pool version
This commit is contained in:
Earlopain 2024-02-25 14:14:30 +01:00
parent 3f57ed5c6d
commit 5140bea658
No known key found for this signature in database
GPG Key ID: 48860312319ADF61
6 changed files with 16 additions and 44 deletions

View File

@ -13,12 +13,6 @@ class PoolVersionsController < ApplicationController
def diff
@pool_version = PoolVersion.find(params[:id])
if params[:other_id]
@other_version = PoolVersion.find(params[:other_id])
else
@other_version = @pool_version.previous
end
end
private

View File

@ -1,16 +1,14 @@
module PoolVersionsHelper
def pool_version_diff(pool_version, previous = nil, options = {})
def pool_version_posts_diff(pool_version)
html = ""
diff = pool_version.build_diff(previous)
html << diff[:added_post_ids].map do |post_id|
html << pool_version.added_post_ids.map do |post_id|
'<ins><a href="/posts/' + post_id.to_s + '">' + post_id.to_s + '</a></ins>'
end.join(" ")
html << " "
html << diff[:removed_post_ids].map do |post_id|
html << pool_version.removed_post_ids.map do |post_id|
'<del><a href="/posts/' + post_id.to_s + '">' + post_id.to_s + '</a></del>'
end.join(" ")

View File

@ -54,40 +54,20 @@ class PoolVersion < ApplicationRecord
end
def fill_changes
prev = previous
if prev
self.added_post_ids = post_ids - prev.post_ids
self.removed_post_ids = prev.post_ids - post_ids
else
self.added_post_ids = post_ids
self.removed_post_ids = []
end
self.description_changed = prev.nil? || description != prev.try(:description)
self.name_changed = prev.nil? || name != prev.try(:name)
end
def build_diff(other = nil)
diff = {}
prev = previous
if prev.nil?
diff[:added_post_ids] = added_post_ids
diff[:removed_post_ids] = removed_post_ids
diff[:added_desc] = description
if previous
self.added_post_ids = post_ids - previous.post_ids
self.removed_post_ids = previous.post_ids - post_ids
else
diff[:added_post_ids] = added_post_ids
diff[:removed_post_ids] = removed_post_ids
diff[:added_desc] = description
diff[:removed_desc] = prev.description
self.added_post_ids = post_ids
self.removed_post_ids = []
end
diff
self.description_changed = previous.nil? ? true : description != previous.description
self.name_changed = previous.nil? ? true : name != previous.name
end
def previous
PoolVersion.where("pool_id = ? and version < ?", pool_id, version).order("version desc").first
@previous ||= PoolVersion.where("pool_id = ? and version < ?", pool_id, version).order("version desc").first
end
def pool

View File

@ -21,7 +21,7 @@
<tr>
<td><%= link_to pool_version.pretty_name, pool_path(pool_version.pool_id) %></td>
<td><%= link_to pool_version.post_ids.size, pool_versions_path(:search => {:pool_id => pool_version.pool_id}) %></td>
<td class="col-expand"><%= pool_version_diff(pool_version) %></td>
<td class="col-expand"><%= pool_version_posts_diff(pool_version) %></td>
<td><%= link_to_if pool_version.description_changed, pool_version.description_changed, diff_pool_version_path(pool_version.id) %></td>
<td>
<% if pool_version.updater %>

View File

@ -18,7 +18,7 @@
<tr id="pool-version-<%= pool_version.id %>">
<td><%= link_to pool_version.pretty_name, pool_path(pool_version.pool_id) %></td>
<td><%= link_to pool_version.post_ids.size, pool_versions_path(:search => {:pool_id => pool_version.pool_id}) %></td>
<td class="col-expand"><%= pool_version_diff(pool_version) %></td>
<td class="col-expand"><%= pool_version_posts_diff(pool_version) %></td>
<td><%= link_to_if pool_version.description_changed, pool_version.description_changed, diff_pool_version_path(pool_version.id) %></td>
<td>
<% if pool_version.updater %>

View File

@ -3,9 +3,9 @@
<h1>Pool Version Comparison: <%= @pool_version.name %></h1>
<ul>
<li><strong>Posts</strong>: <%= pool_version_diff(@pool_version, @other_version) %></li>
<% if @other_version %>
<li><strong>Old Desc</strong>: <%= @other_version.description %></li>
<li><strong>Posts</strong>: <%= pool_version_posts_diff(@pool_version) %></li>
<% if @pool_version.previous %>
<li><strong>Old Desc</strong>: <%= @pool_version.previous.description %></li>
<% end %>
<li><strong>New Desc</strong>: <%= @pool_version.description %></li>
</ul>