From 23f4232bd2872aabdb38dcfd913fc8863feb36f1 Mon Sep 17 00:00:00 2001 From: Type-kun Date: Sun, 28 Aug 2016 23:12:35 +0500 Subject: [PATCH] Style obsolete artist changes (fixes #1171) --- app/helpers/artist_versions_helper.rb | 12 ++++++++---- app/models/artist.rb | 10 +++++++--- app/models/artist_version.rb | 21 +++++++++++++++++---- 3 files changed, 32 insertions(+), 11 deletions(-) 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