aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/question.rb')
-rw-r--r--app/models/question.rb20
1 files changed, 20 insertions, 0 deletions
diff --git a/app/models/question.rb b/app/models/question.rb
index 084f826..294e03e 100644
--- a/app/models/question.rb
+++ b/app/models/question.rb
@@ -160,6 +160,26 @@ class Question < ActiveRecord::Base
after_create :notify_new_question
after_update :notify_approved_question
+ # Returns hash with:
+ # :values - string with coma-separated values
+ # :labels - string with coma-separated, quoted labels for values
+ def feedback_chart_data
+ classes = Answer.new.feedback.class.values - ['']
+ delta = 0.00001
+ result = {}
+ counts = classes.collect{ |opt| answers.with_feedback(opt).count }
+
+ result[:values] = counts.inject(nil) do |res, cur|
+ res.nil? ? (cur + delta).to_s : "#{res}, #{cur + delta}"
+ end
+
+ result[:labels] = classes.inject(nil) do |res, cur|
+ res.nil? ? "\"%%.%% - #{cur} (##)\"" : "#{res}, \"%%.%% - #{cur} (##)\""
+ end
+
+ result
+ end
+
protected
# Sends notification about new question (TODO: check for group).
def notify_new_question