diff --git a/app/helpers/artist_versions_helper.rb b/app/helpers/artist_versions_helper.rb
index 24d1f2527..8947cd0c3 100644
--- a/app/helpers/artist_versions_helper.rb
+++ b/app/helpers/artist_versions_helper.rb
@@ -3,10 +3,12 @@ module ArtistVersionsHelper
diff = artist_version.other_names_diff(artist_version.previous)
html = []
diff[:added_names].each do |name|
- html << '' + h(name) + ''
+ prefix = diff[:obsolete_added_names].include?(name) ? '' : ''
+ html << prefix + h(name) + ''
end
diff[:removed_names].each do |name|
- html << '' + h(name) + ''
+ prefix = diff[:obsolete_removed_names].include?(name) ? '' : ''
+ html << prefix + h(name) + ''
end
diff[:unchanged_names].each do |name|
html << '' + h(name) + ''
@@ -18,10 +20,12 @@ module ArtistVersionsHelper
diff = artist_version.urls_diff(artist_version.previous)
html = []
diff[:added_urls].each do |url|
- html << '' + h(url) + ''
+ prefix = diff[:obsolete_added_urls].include?(url) ? '' : ''
+ html << '' + prefix + h(url) + ''
end
diff[:removed_urls].each do |url|
- html << '' + h(url) + ''
+ prefix = diff[:obsolete_removed_urls].include?(url) ? '' : ''
+ html << '' + prefix + h(url) + ''
end
diff[:unchanged_urls].each do |url|
html << '' + h(url) + ''
diff --git a/app/models/artist.rb b/app/models/artist.rb
index a4de0028d..2b5932d25 100644
--- a/app/models/artist.rb
+++ b/app/models/artist.rb
@@ -43,9 +43,13 @@ class Artist < ActiveRecord::Base
end
end
+ def url_array
+ urls.map(&:url)
+ end
+
def save_url_string
if @url_string
- prev = urls.map(&:url)
+ prev = url_array
curr = @url_string.scan(/\S+/).uniq
duplicates = prev.select{|url| prev.count(url) > 1}.uniq
@@ -69,11 +73,11 @@ class Artist < ActiveRecord::Base
end
def url_string
- @url_string || urls.map {|x| x.url}.join("\n")
+ @url_string || url_array.join("\n")
end
def url_string_changed?
- url_string.scan(/\S+/) != urls.map(&:url)
+ url_string.scan(/\S+/) != url_array
end
end
diff --git a/app/models/artist_version.rb b/app/models/artist_version.rb
index b7f73c2ca..39642596c 100644
--- a/app/models/artist_version.rb
+++ b/app/models/artist_version.rb
@@ -67,26 +67,39 @@ class ArtistVersion < ActiveRecord::Base
end
def urls_diff(version)
+ latest_urls = artist.url_array
new_urls = url_array
old_urls = version.present? ? version.url_array : []
+ latest_urls = latest_urls.map {|url| ArtistUrl.legacy_normalize(url)}
new_urls = new_urls.map {|url| ArtistUrl.legacy_normalize(url)}
old_urls = old_urls.map {|url| ArtistUrl.legacy_normalize(url)}
+ added_urls = new_urls - old_urls
+ removed_urls = old_urls - new_urls
+
return {
- :added_urls => new_urls - old_urls,
- :removed_urls => old_urls - new_urls,
+ :added_urls => added_urls,
+ :removed_urls => removed_urls,
+ :obsolete_added_urls => added_urls - latest_urls,
+ :obsolete_removed_urls => removed_urls & latest_urls,
:unchanged_urls => new_urls & old_urls,
}
end
def other_names_diff(version)
+ latest_names = artist.other_names_array
new_names = other_names_array
old_names = version.present? ? version.other_names_array : []
+ added_names = new_names - old_names
+ removed_names = old_names - new_names
+
return {
- :added_names => new_names - old_names,
- :removed_names => old_names - new_names,
+ :added_names => added_names,
+ :removed_names => removed_names,
+ :obsolete_added_names => added_names - latest_names,
+ :obsolete_removed_names => removed_names & latest_names,
:unchanged_names => new_names & old_names,
}
end