Skip to content

Commit

Permalink
improve handeling of missing keys
Browse files Browse the repository at this point in the history
  • Loading branch information
alexskr committed Feb 4, 2025
1 parent 7a46e09 commit 379e72a
Showing 1 changed file with 14 additions and 9 deletions.
23 changes: 14 additions & 9 deletions lib/ontologies_linked_data/models/ontology.rb
Original file line number Diff line number Diff line change
Expand Up @@ -280,18 +280,23 @@ def rank(weight_analytics=DEFAULT_RANK_WEIGHT_ANALYTICS, weight_umls=DEFAULT_RAN
end

# A static method for retrieving Analytics for a combination of ontologies, year, month
def self.analytics(year=nil, month=nil, acronyms=nil)
def self.analytics(year = nil, month = nil, acronyms = nil)
analytics = self.load_analytics_data

unless analytics.empty?
analytics.delete_if { |acronym, _| !acronyms.include? acronym } unless acronyms.nil?
analytics.values.each do |ont_analytics|
ont_analytics.delete_if { |key, _| key != year.to_s } unless year.nil?
ont_analytics.each { |_, val| val.delete_if { |key, __| key != month.to_s } } unless month.nil?
end
# sort results by the highest traffic values
analytics = Hash[analytics.sort_by {|_, v| v[year.to_s][month.to_s]}.reverse] if year && month
return analytics if analytics.empty?

# Filter by acronyms
analytics = analytics.select { |acronym, _| acronyms.include?(acronym) } if acronyms

# Filter by year and month safely
analytics.each_value do |ont_analytics|
ont_analytics.select! { |key, _| key == year.to_s } if year
ont_analytics.each_value { |val| val.select! { |key, _| key == month.to_s } } if month
end

# Sort by highest traffic values
analytics = analytics.sort_by { |_, v| v.dig(year.to_s, month.to_s) || 0 }.reverse.to_h if year && month

analytics
end

Expand Down

0 comments on commit 379e72a

Please sign in to comment.