Merge pull request #4339 from BrokenEagle/version-reports

Add alternate version comparisons
This commit is contained in:
evazion
2020-03-20 16:32:28 -05:00
committed by GitHub
45 changed files with 559 additions and 304 deletions

View File

@@ -1,51 +0,0 @@
module Reports
class UploadTags < ::Post
def readonly?
true
end
def api_attributes
[:id, :uploader_id, :uploader_tags, :added_tags, :removed_tags]
end
def uploader_tags_array
@uploader_tags ||= begin
uploader_versions = versions.where(updater_id: uploader_id)
tags = []
uploader_versions.each do |version|
tags += version.changes[:added_tags]
tags -= version.changes[:removed_tags]
end
tags.uniq.sort
end
end
def current_tags_array
latest_tags = tag_array
latest_tags << "rating:#{rating}" if rating.present?
latest_tags << "parent:#{parent_id}" if parent_id.present?
latest_tags << "source:#{source}" if source.present?
latest_tags
end
def added_tags_array
current_tags_array - uploader_tags_array
end
def removed_tags_array
uploader_tags_array - current_tags_array
end
def uploader_tags
uploader_tags_array.join(' ')
end
def added_tags
added_tags_array.join(' ')
end
def removed_tags
removed_tags_array.join(' ')
end
end
end

View File

@@ -1,14 +1,12 @@
class SetDiff
attr_reader :additions, :removals, :added, :removed, :obsolete_added, :obsolete_removed, :changed, :unchanged
attr_reader :additions, :removals, :added, :removed, :changed, :unchanged
def initialize(new, old, latest)
new, old, latest = new.to_a, old.to_a, latest.to_a
def initialize(this_list, other_list)
this, other = this_list.to_a, other_list.to_a
@additions = new - old
@removals = old - new
@unchanged = new & old
@obsolete_added = additions - latest
@obsolete_removed = removals & latest
@additions = this - other
@removals = other - this
@unchanged = this & other
@added, @removed, @changed = changes(additions, removals)
end