class Papercall::Analysis

Attributes

accepted[R]
confirmed[R]
highly_rated[R]
low_rated[R]
maybe[R]
rejected[R]
reviewers[R]
submissions[R]
summary[R]
talks_missing_reviews[R]
talks_with_many_reviews[R]
talks_without_feedback[R]
talks_without_reviews[R]
waitlisted[R]

Public Class Methods

new(submissions) click to toggle source
# File lib/papercall/analysis.rb, line 18
def initialize submissions
  @output = Papercall.configuration.output
  @submissions = submissions
  @reviewers = {}
  @talks_without_reviews = []
  @talks_missing_reviews = []
  @talks_with_many_reviews = []
  @talks_without_feedback = []
  @highly_rated = []
  @low_rated = []
  @maybe = []
  @accepted = []
  @waitlisted = []
  @rejected = []
  @confirmed = []
  analyze
end

Public Instance Methods

number_accepted() click to toggle source
# File lib/papercall/analysis.rb, line 76
def number_accepted
  @accepted.size
end
number_completed() click to toggle source
# File lib/papercall/analysis.rb, line 48
def number_completed
  @submissions.size - @talks_missing_reviews.size
end
number_confirmed() click to toggle source
# File lib/papercall/analysis.rb, line 88
def number_confirmed
  @confirmed.size
end
number_of_active_reviewers() click to toggle source
# File lib/papercall/analysis.rb, line 40
def number_of_active_reviewers
  @reviewers.size
end
number_of_highly_rated() click to toggle source
# File lib/papercall/analysis.rb, line 52
def number_of_highly_rated
  @highly_rated.size
end
number_of_low_rated() click to toggle source
# File lib/papercall/analysis.rb, line 56
def number_of_low_rated
  @low_rated.size
end
number_of_maybes() click to toggle source
# File lib/papercall/analysis.rb, line 60
def number_of_maybes
  @maybe.size
end
number_of_submissions() click to toggle source
# File lib/papercall/analysis.rb, line 36
def number_of_submissions
  @submissions.size
end
number_of_waitlisted() click to toggle source
# File lib/papercall/analysis.rb, line 80
def number_of_waitlisted
  @waitlisted.size
end
number_rejected() click to toggle source
# File lib/papercall/analysis.rb, line 84
def number_rejected
  @rejected.size
end
number_with_few_reviews() click to toggle source
# File lib/papercall/analysis.rb, line 64
def number_with_few_reviews
  @talks_missing_reviews.size
end
number_with_many_reviews() click to toggle source
# File lib/papercall/analysis.rb, line 68
def number_with_many_reviews
  @talks_with_many_reviews.size
end
number_without_feedback() click to toggle source
# File lib/papercall/analysis.rb, line 44
def number_without_feedback
  @talks_without_feedback.size
end
number_without_reviews() click to toggle source
# File lib/papercall/analysis.rb, line 72
def number_without_reviews
  @talks_without_reviews.size
end

Private Instance Methods

analyze() click to toggle source
# File lib/papercall/analysis.rb, line 95
def analyze
  start_time = Time.now
  print 'Performing analysis...' if @output
  @submissions.each do |submission|
    submission.ratings.each do |rating|
      if !(@reviewers.include? rating.user.name)
        @reviewers[rating.user.name] = [{ id: rating.submission_id }]
      else
        @reviewers[rating.user.name] << { id: rating.submission_id }
      end
    end
    @talks_without_reviews << { id: submission.id, submission: submission } if submission.no_reviews?
    @talks_with_many_reviews << { id: submission.id, submission: submission } if submission.too_many_reviews?
    @talks_missing_reviews << {id: submission.id, submission: submission} unless submission.enough_reviews?
    @talks_without_feedback << { id: submission.id, submission: submission } if submission.no_feedback?
    @highly_rated << { id: submission.id, submission: submission } if submission.highly_rated?
    @low_rated << { id: submission.id, submission: submission } if submission.low_rated?
    @maybe << { id: submission.id, submission: submission } if submission.maybe?
    @accepted << { id: submission.id, submission: submission } if submission.accepted?
    @waitlisted << { id: submission.id, submission: submission } if submission.waitlisted?
    @rejected << { id: submission.id, submission: submission } if submission.rejected?
    @confirmed << { id: submission.id, submission: submission } if submission.confirmed?
  end
  @summary = build_summary
  puts "finished in #{Time.now - start_time} seconds." if @output
end
build_summary() click to toggle source
# File lib/papercall/analysis.rb, line 122
def build_summary
  summary = {}
  summary['numSubmissions'] = @submissions.size
  summary['numActiveReviewers'] = @reviewers.size
  summary['numWithoutFeedback'] = @talks_without_feedback.size
  summary['numCompleted'] = @submissions.size - @talks_missing_reviews.size
  summary['numHighlyRated'] = @highly_rated.size
  summary['numLowRated'] = @low_rated.size
  summary['numMaybe'] = @maybe.size
  summary['numLessThanThreeReviews'] = @talks_missing_reviews.size
  summary['numWithFourOrMoreReviews'] = @talks_with_many_reviews.size
  summary['numWithoutReviews'] = @talks_without_reviews.size
  summary['numAccepted'] = @accepted.size
  summary['numWaitlisted'] = @waitlisted.size
  summary['numRejected'] = @rejected.size
  summary['numConfirmed'] = @confirmed.size
  summary
end