Class: Hyrax::Statistic
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Hyrax::Statistic
show all
- Extended by:
- ActionDispatch::Routing::PolymorphicRoutes
- Defined in:
- app/models/hyrax/statistic.rb
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.build_for(object, attrs) ⇒ Object
16
17
18
|
# File 'app/models/hyrax/statistic.rb', line 16
def build_for(object, attrs)
new attrs.merge(filter(object))
end
|
.convert_date(date_time) ⇒ Object
20
21
22
|
# File 'app/models/hyrax/statistic.rb', line 20
def convert_date(date_time)
date_time.to_datetime.to_i * 1000
end
|
.ga_statistics(start_date, object) ⇒ Object
Hyrax::Download is sent to Hyrax::Analytics.profile as #hyrax__download see Legato::ProfileMethods.method_name_from_klass
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# File 'app/models/hyrax/statistic.rb', line 30
def ga_statistics(start_date, object)
path = polymorphic_path(object)
profile = Hyrax::Analytics.profile
unless profile
Rails.logger.error("Google Analytics profile has not been established. Unable to fetch statistics.")
return []
end
profile.hyrax__analytics__google__pageviews(sort: 'date',
start_date: start_date,
end_date: Date.yesterday,
limit: 10_000)
.for_path(path)
end
|
.query_works(query) ⇒ Object
44
45
46
47
|
# File 'app/models/hyrax/statistic.rb', line 44
def query_works(query)
models = Hyrax.config.curation_concerns.map { |m| "\"#{m}\"" }
ActiveFedora::SolrService.query("has_model_ssim:(#{models.join(' OR ')})", fl: query, rows: 100_000)
end
|
.resource_types ⇒ Object
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
# File 'app/models/hyrax/statistic.rb', line 54
def resource_types
results = query_works("resource_type_tesim")
resource_types = []
results.each do |y|
if y["resource_type_tesim"].nil? || (y["resource_type_tesim"] == [""])
resource_types.push("Unknown")
elsif y["resource_type_tesim"].count > 1
y["resource_type_tesim"].each do |t|
resource_types.push(t)
end
else
resource_types.push(y["resource_type_tesim"].join(""))
end
end
resource_types.group_by { |rt| rt }.transform_values(&:count)
end
|
.statistics(object, start_date, user_id = nil) ⇒ Object
24
25
26
|
# File 'app/models/hyrax/statistic.rb', line 24
def statistics(object, start_date, user_id = nil)
combined_stats object, start_date, cache_column, event_type, user_id
end
|
.statistics_for(object) ⇒ Object
12
13
14
|
# File 'app/models/hyrax/statistic.rb', line 12
def statistics_for(object)
where(filter(object))
end
|
.work_types ⇒ Object
49
50
51
52
|
# File 'app/models/hyrax/statistic.rb', line 49
def work_types
results = query_works("human_readable_type_tesim")
results.group_by { |result| result['human_readable_type_tesim'].join('') }.transform_values(&:count)
end
|
Instance Method Details
#to_flot ⇒ Object
94
95
96
|
# File 'app/models/hyrax/statistic.rb', line 94
def to_flot
[self.class.convert_date(date), send(cache_column)]
end
|