diff --git a/app/helpers/pool_versions_helper.rb b/app/helpers/pool_versions_helper.rb
index dfe665eb3..e80871825 100644
--- a/app/helpers/pool_versions_helper.rb
+++ b/app/helpers/pool_versions_helper.rb
@@ -1,14 +1,17 @@
module PoolVersionsHelper
- def pool_version_diff(current)
- prev = PoolVersion.where(["pool_id = ? and updated_at < ?", current.pool_id, current.updated_at]).order("updated_at desc").first
+ def pool_version_diff(pool_version)
+ html = ""
- if prev.nil?
- return current.post_id_array.map {|x| '' + x.to_s + ''}.join(" ").html_safe
- end
+ html << pool_version.changes[:added_posts].map do |post_id|
+ '' + post_id.to_s + ''
+ end.join(" ")
- added = current.post_id_array - prev.post_id_array
- removed = prev.post_id_array - current.post_id_array
+ html << " "
- (added.map {|x| '' + x.to_s + ''}.join(" ") + " " + removed.map {|x| '' + x.to_s + ''}.join(" ")).html_safe
+ html << pool_version.changes[:removed_posts].map do |post_id|
+ '' + post_id.to_s + ''
+ end.join(" ")
+
+ return html.html_safe
end
end
diff --git a/app/models/pool_version.rb b/app/models/pool_version.rb
index c63a11207..341e4714b 100644
--- a/app/models/pool_version.rb
+++ b/app/models/pool_version.rb
@@ -49,4 +49,23 @@ class PoolVersion < ActiveRecord::Base
def post_id_array
@post_id_array ||= post_ids.scan(/\d+/).map(&:to_i)
end
+
+ def diff(version)
+ new_posts = post_id_array
+ old_posts = version.present? ? version.post_id_array : []
+
+ return {
+ :added_posts => new_posts - old_posts,
+ :removed_posts => old_posts - new_posts,
+ :unchanged_posts => new_posts & old_posts
+ }
+ end
+
+ def changes
+ @changes ||= diff(previous)
+ end
+
+ def previous
+ PoolVersion.where(["pool_id = ? and updated_at < ?", pool_id, updated_at]).order("updated_at desc").first
+ end
end