change exercise helper

dev_home
SylorHuang 5 years ago
parent 1f33b2531e
commit 41448cee0a

@ -164,7 +164,8 @@ module ExercisesHelper
question_answer_infos.push(answer_option) question_answer_infos.push(answer_option)
end end
elsif ex.question_type == Exercise::COMPLETION #填空题 elsif ex.question_type == Exercise::COMPLETION #填空题
effictive_users_count = effictive_users.where("answer_text is not null and answer_text !=''").pluck(:user_id).uniq.size effictive_users_ids = effictive_users.where("answer_text is not null and answer_text !=''").pluck(:user_id).uniq
effictive_users_count = effictive_users_ids.size
ex_ordered = ex.is_ordered ex_ordered = ex.is_ordered
null_standard_answer = ex.exercise_standard_answers null_standard_answer = ex.exercise_standard_answers
null_stand_choice = null_standard_answer.pluck(:exercise_choice_id) #一个exercise_choice_id可能对应多个answer_text null_stand_choice = null_standard_answer.pluck(:exercise_choice_id) #一个exercise_choice_id可能对应多个answer_text
@ -174,15 +175,16 @@ module ExercisesHelper
all_user_count = 0 all_user_count = 0
if ex_ordered if ex_ordered
null_stand_choice.each_with_index do |s,index| all_null_stand_choice = null_standard_answer.pluck(:exercise_choice_id,:answer_text)
s_choice_text = null_stand_text[index] all_null_stand_choice.each_with_index do |s,index|
# s_choice_text = null_stand_text[index]
user_count = 0 user_count = 0
user_count = user_count + effictive_users.where("exercise_choice_id = ? and answer_text = ?",s,s_choice_text).pluck(:user_id).uniq.size user_count = user_count + effictive_users.where("exercise_choice_id = ? and answer_text = ?",s[0],s[1]).pluck(:user_id).uniq.size
# user_count = user_count + effictive_users.select{|answer| answer.exercise_choice_id == s && answer.answer_text == s_choice_text}.size # user_count = user_count + effictive_users.select{|answer| answer.exercise_choice_id == s && answer.answer_text == s_choice_text}.size
answer_percent = ((effictive_users_count == 0) ? 0.0 : (user_count / effictive_users_count.to_f ).round(3)) answer_percent = ((effictive_users_count == 0) ? 0.0 : (user_count / effictive_users_count.to_f ).round(3))
answer_option = { answer_option = {
:choice_position => index+1, :choice_position => index+1,
:choice_text => s_choice_text, :choice_text => s[1],
:choice_users_count => user_count, :choice_users_count => user_count,
:choice_percent => answer_percent.round(2).to_s, :choice_percent => answer_percent.round(2).to_s,
:right_answer => true :right_answer => true
@ -215,7 +217,8 @@ module ExercisesHelper
# percent = commit_user_ids > 0 ? (all_user_count / commit_user_ids.to_f).round(3)*100 : 0.0 # percent = commit_user_ids > 0 ? (all_user_count / commit_user_ids.to_f).round(3)*100 : 0.0
# user_right_count = effictive_users.where("score > 0.0").pluck(:user_id).uniq # user_right_count = effictive_users.where("score > 0.0").pluck(:user_id).uniq
# unanswer_user_count = effictive_users.where("score < 0.0 and answer_text is null or answer_text = ''").pluck(:user_id).uniq # unanswer_user_count = effictive_users.where("score < 0.0 and answer_text is null or answer_text = ''").pluck(:user_id).uniq
user_wrong_count = effictive_users.where("score < 0.0 and (answer_text is not null or answer_text != '')").pluck(:user_id).uniq.size user_wrong_ids = effictive_users.where("score < 0.0").pluck(:user_id)
user_wrong_count = (user_wrong_ids && effictive_users_ids).uniq.size
# user_wrong_count = (user_wrong_counts - user_right_count - unanswer_user_count).size # user_wrong_count = (user_wrong_counts - user_right_count - unanswer_user_count).size
if effictive_users_count > 0 && user_wrong_count >= 0 if effictive_users_count > 0 && user_wrong_count >= 0

Loading…
Cancel
Save