Skip to content

Commit

Permalink
only use recent numbers
Browse files Browse the repository at this point in the history
  • Loading branch information
hexylena committed Feb 21, 2024
1 parent 3c76071 commit 8b47aa9
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 5 deletions.
2 changes: 1 addition & 1 deletion _layouts/tutorial_hands_on.html
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ <h4 class="alert-heading">Under Development!</h4>

{% assign feedback_count = site | get_feedback_count: own_material_id %}
{% if feedback_count > 0 %}
<div><strong>{% icon rating %} Rating:</strong> <a href="#feedback-responses">{{ site | get_rating:own_material_id }}</a> ({{ site | get_feedback_count: own_material_id }} ratings)</div>
<div><strong>{% icon rating %} Rating:</strong> <a href="#feedback-responses">{{ site | get_rating_recent:own_material_id }}</a> ({{ site | get_feedback_count_recent: own_material_id }} recent ratings, {{ feedback_count }} all time)</div>
{% endif %}
<div><strong>{% icon version %} Revision:</strong> {{ page | get_version_number }} </div>

Expand Down
31 changes: 27 additions & 4 deletions _plugins/gtn.rb
Original file line number Diff line number Diff line change
Expand Up @@ -376,10 +376,10 @@ def get_version_number(page)
Gtn::ModificationTimes.obtain_modification_count(page['path'])
end

def get_rating_histogram(site, material_id)
def get_rating_histogram(site, material_id, recent: false)
return {} if material_id.nil?

feedbacks = get_feedbacks(site, material_id)
feedbacks = recent ? get_recent_feedbacks_time(site, material_id) : get_feedbacks(site, material_id)

return {} if feedbacks.nil? || feedbacks.empty?

Expand All @@ -398,12 +398,17 @@ def get_rating_histogram_chart(site, material_id)
.to_h
end

def get_rating(site, material_id)
f = get_rating_histogram(site, material_id)
def get_rating(site, material_id, recent: false)
f = get_rating_histogram(site, material_id, recent: recent)
rating = f.map { |k, v| k * v }.sum / f.map { |_k, v| v }.sum.to_f
rating.round(1)
end

def get_rating_recent(site, material_id)
r = get_rating(site, material_id, recent: true)
r.nan? ? get_rating(site, material_id, recent: false) : r
end

# Only accepts an integer rating
def to_stars(rating)
if rating.nil? || (rating.to_i < 1) || (rating == '0') || rating.zero?
Expand Down Expand Up @@ -453,6 +458,24 @@ def get_feedback_count(site, material_id)
get_feedbacks(site, material_id).length
end

def get_feedback_count_recent(site, material_id)
get_recent_feedbacks_time(site, material_id).length
end

def get_recent_feedbacks_time(site, material_id)
feedbacks = get_feedbacks(site, material_id)
.select do |f|
f['pro']&.length&.positive? ||
f['con']&.length&.positive?
end
.map do |f|
f['f_date'] = Date.parse(f['date']).strftime('%B %Y')
f
end

feedbacks.select { |f| Date.parse(f['date']) > Date.today - 365 }
end

def get_recent_feedbacks(site, material_id)
feedbacks = get_feedbacks(site, material_id)
.select do |f|
Expand Down

0 comments on commit 8b47aa9

Please sign in to comment.