班级作业的最终得分设置修改,由用户决定教师、助教和匿评的百分比计算
This commit is contained in:
parent
6ca6713a64
commit
2a7a8fcdb4
|
@ -176,11 +176,8 @@ class HomeworkCommonController < ApplicationController
|
||||||
end
|
end
|
||||||
anonymous = params[:homework_common][:anonymous_comment] ? params[:homework_common][:anonymous_comment].to_i : 1
|
anonymous = params[:homework_common][:anonymous_comment] ? params[:homework_common][:anonymous_comment].to_i : 1
|
||||||
if anonymous != @homework.anonymous_comment
|
if anonymous != @homework.anonymous_comment
|
||||||
if anonymous == 1
|
homework_detail_manual.te_proportion = 1.0
|
||||||
homework_detail_manual.ta_proportion = @homework.homework_type == 2 ? 0.4 : 1.0
|
homework_detail_manual.ta_proportion = 0
|
||||||
else
|
|
||||||
homework_detail_manual.ta_proportion = @homework.homework_type == 2 ? 0.3 : 0.6
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@homework.save_attachments(params[:attachments])
|
@homework.save_attachments(params[:attachments])
|
||||||
|
@ -192,11 +189,7 @@ class HomeworkCommonController < ApplicationController
|
||||||
@homework_detail_programing = @homework.homework_detail_programing
|
@homework_detail_programing = @homework.homework_detail_programing
|
||||||
@homework_detail_programing.language = params[:language_type].to_i if params[:language_type]
|
@homework_detail_programing.language = params[:language_type].to_i if params[:language_type]
|
||||||
if anonymous != @homework.anonymous_comment
|
if anonymous != @homework.anonymous_comment
|
||||||
if anonymous == 1
|
@homework_detail_programing.ta_proportion = 0
|
||||||
@homework_detail_programing.ta_proportion = 0.6
|
|
||||||
else
|
|
||||||
@homework_detail_programing.ta_proportion = 0.5
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@homework.homework_samples.delete_all if params[:sample]
|
@homework.homework_samples.delete_all if params[:sample]
|
||||||
|
|
|
@ -1225,15 +1225,13 @@ class StudentWorkController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
teacher_priority = params[:teacher_priority].to_i
|
if (params[:te_proportion] && params[:te_proportion].to_s != homework_detail_manual.te_proportion.to_s) || (params[:ta_proportion] && params[:ta_proportion].to_s != homework_detail_manual.ta_proportion.to_s) || (homework_detail_programing && homework_detail_programing.ta_proportion.to_s != params[:sy_proportion].to_s)
|
||||||
if homework_detail_manual.ta_proportion.to_s != params[:ta_proportion].to_s || @homework.teacher_priority.to_s != teacher_priority.to_s || (homework_detail_programing && homework_detail_programing.ta_proportion.to_s != params[:sy_proportion].to_s)
|
homework_detail_manual.te_proportion = params[:te_proportion]
|
||||||
homework_detail_manual.ta_proportion = params[:ta_proportion]
|
homework_detail_manual.ta_proportion = params[:ta_proportion]
|
||||||
homework_detail_programing.ta_proportion = params[:sy_proportion] if homework_detail_programing
|
homework_detail_programing.ta_proportion = params[:sy_proportion] if homework_detail_programing
|
||||||
@homework.update_column('teacher_priority', teacher_priority)
|
|
||||||
|
|
||||||
homework_detail_manual.save if homework_detail_manual
|
homework_detail_manual.save if homework_detail_manual
|
||||||
homework_detail_programing.save if homework_detail_programing
|
homework_detail_programing.save if homework_detail_programing
|
||||||
|
|
||||||
@homework.save
|
@homework.save
|
||||||
@homework = HomeworkCommon.find @homework.id
|
@homework = HomeworkCommon.find @homework.id
|
||||||
@homework.student_works.each do |student_work|
|
@homework.student_works.each do |student_work|
|
||||||
|
@ -1820,95 +1818,88 @@ class StudentWorkController < ApplicationController
|
||||||
#成绩计算
|
#成绩计算
|
||||||
def set_final_score homework,student_work
|
def set_final_score homework,student_work
|
||||||
if homework && homework.homework_detail_manual
|
if homework && homework.homework_detail_manual
|
||||||
|
tea_ass_proportion = homework.homework_detail_manual.ta_proportion
|
||||||
|
tea_proportion = homework.homework_detail_manual.te_proportion
|
||||||
if homework.homework_type != 2 #非编程作业
|
if homework.homework_type != 2 #非编程作业
|
||||||
if homework.teacher_priority == 1 #教师优先
|
if student_work.teacher_score
|
||||||
if student_work.teacher_score
|
if student_work.teaching_asistant_score.nil?
|
||||||
student_work.final_score = student_work.teacher_score
|
if student_work.student_score.nil?
|
||||||
student_work.work_score = student_work.teacher_score - student_work.absence_penalty - student_work.late_penalty
|
student_work.final_score = student_work.teacher_score
|
||||||
else
|
|
||||||
if student_work.teaching_asistant_score.nil?
|
|
||||||
student_work.final_score = student_work.student_score
|
|
||||||
elsif student_work.student_score.nil?
|
|
||||||
student_work.final_score = student_work.teaching_asistant_score
|
|
||||||
else
|
else
|
||||||
ta_proportion = homework.homework_detail_manual.ta_proportion
|
te_proportion = tea_proportion + tea_ass_proportion / 2
|
||||||
final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{ta_proportion}")
|
final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{te_proportion}")
|
||||||
final_s_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}"))
|
final_s_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{te_proportion}"))
|
||||||
final_score = final_ta_score + final_s_score
|
final_score = final_te_score + final_s_score
|
||||||
student_work.final_score = format("%.2f",final_score.to_f)
|
student_work.final_score = format("%.2f",final_score.to_f)
|
||||||
end
|
end
|
||||||
if student_work.final_score
|
else
|
||||||
score = student_work.final_score - student_work.absence_penalty - student_work.late_penalty - student_work.appeal_penalty
|
if student_work.student_score.nil?
|
||||||
student_work.work_score = format("%.2f",(score < 0 ? 0 : score).to_f) if score
|
te_proportion = tea_proportion + (1.0 - tea_proportion - tea_ass_proportion) / 2
|
||||||
|
final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{te_proportion}")
|
||||||
|
final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{te_proportion}"))
|
||||||
|
final_score = final_te_score + final_ta_score
|
||||||
|
student_work.final_score = format("%.2f",final_score.to_f)
|
||||||
else
|
else
|
||||||
student_work.work_score = nil
|
final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{tea_proportion}")
|
||||||
|
final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{tea_ass_proportion}")
|
||||||
|
final_s_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{tea_proportion}") - BigDecimal.new("#{tea_ass_proportion}"))
|
||||||
|
final_score = final_te_score + final_ta_score + final_s_score
|
||||||
|
student_work.final_score = format("%.2f",final_score.to_f)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else #不考虑教师评分
|
else
|
||||||
if student_work.teaching_asistant_score.nil?
|
if student_work.teaching_asistant_score.nil?
|
||||||
student_work.final_score = student_work.student_score
|
student_work.final_score = student_work.student_score
|
||||||
elsif student_work.student_score.nil?
|
elsif student_work.student_score.nil?
|
||||||
student_work.final_score = student_work.teaching_asistant_score
|
student_work.final_score = student_work.teaching_asistant_score
|
||||||
else
|
else
|
||||||
ta_proportion = homework.homework_detail_manual.ta_proportion
|
ta_proportion = tea_ass_proportion + tea_proportion / 2
|
||||||
final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{ta_proportion}")
|
final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{ta_proportion}")
|
||||||
final_s_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}"))
|
final_s_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}"))
|
||||||
final_score = final_ta_score + final_s_score
|
final_score = final_ta_score + final_s_score
|
||||||
student_work.final_score = format("%.2f",final_score.to_f)
|
student_work.final_score = format("%.2f",final_score.to_f)
|
||||||
end
|
end
|
||||||
if student_work.final_score
|
|
||||||
score = student_work.final_score - student_work.absence_penalty - student_work.late_penalty - student_work.appeal_penalty
|
|
||||||
student_work.work_score = format("%.2f",(score < 0 ? 0 : score).to_f) if score
|
|
||||||
else
|
|
||||||
student_work.work_score = nil
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
elsif homework.homework_type == 2 && homework.homework_detail_programing #编程作业-----设定:系统评分必定不为空
|
elsif homework.homework_type == 2 && homework.homework_detail_programing #编程作业-----设定:系统评分必定不为空
|
||||||
if homework.teacher_priority == 1 #教师优先
|
#if homework.teacher_priority == 1 #教师优先
|
||||||
if student_work.teacher_score
|
sy_proportion = homework.homework_detail_programing.ta_proportion
|
||||||
student_work.final_score = student_work.teacher_score
|
if student_work.teacher_score
|
||||||
student_work.work_score = student_work.teacher_score - student_work.absence_penalty - student_work.late_penalty - student_work.appeal_penalty
|
if student_work.teaching_asistant_score.nil? #教辅未评分
|
||||||
else
|
if student_work.student_score.nil?
|
||||||
if student_work.teaching_asistant_score.nil? #教辅未评分
|
ta_proportion = tea_proportion + (1 - tea_proportion - sy_proportion) / 2
|
||||||
if student_work.student_score.nil?
|
final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{ta_proportion}")
|
||||||
student_work.final_score = student_work.system_score
|
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}"))
|
||||||
else
|
final_score = final_sy_score + final_te_score
|
||||||
ta_proportion = homework.homework_detail_programing.ta_proportion + homework.homework_detail_manual.ta_proportion / 2
|
student_work.final_score = format("%.2f",final_score.to_f)
|
||||||
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{ta_proportion}")
|
|
||||||
final_st_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}"))
|
|
||||||
final_score = final_sy_score + final_st_score
|
|
||||||
student_work.final_score = format("%.2f",final_score.to_f)
|
|
||||||
end
|
|
||||||
elsif student_work.student_score.nil? #学生未评分
|
|
||||||
if student_work.teaching_asistant_score.nil?
|
|
||||||
student_work.final_score = student_work.system_score
|
|
||||||
else
|
|
||||||
ta_proportion = homework.homework_detail_programing.ta_proportion + (1.0 - homework.homework_detail_manual.ta_proportion - homework.homework_detail_programing.ta_proportion) / 2
|
|
||||||
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{ta_proportion}")
|
|
||||||
final_ts_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}"))
|
|
||||||
final_score = final_sy_score + final_ts_score
|
|
||||||
student_work.final_score = format("%.2f",final_score.to_f)
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{homework.homework_detail_programing.ta_proportion}")
|
rest_proportion = tea_ass_proportion / 3
|
||||||
final_ts_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{homework.homework_detail_manual.ta_proportion}")
|
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{sy_proportion + rest_proportion}")
|
||||||
final_st_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{homework.homework_detail_programing.ta_proportion}") - BigDecimal.new("#{homework.homework_detail_manual.ta_proportion}"))
|
final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{tea_proportion + rest_proportion}")
|
||||||
final_score = final_sy_score + final_ts_score + final_st_score
|
final_st_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{sy_proportion + rest_proportion}") - BigDecimal.new("#{tea_proportion + rest_proportion}"))
|
||||||
|
final_score = final_sy_score + final_te_score + final_st_score
|
||||||
student_work.final_score = format("%.2f",final_score.to_f)
|
student_work.final_score = format("%.2f",final_score.to_f)
|
||||||
end
|
end
|
||||||
if student_work.final_score
|
elsif student_work.student_score.nil? #学生未评分
|
||||||
score = student_work.final_score - student_work.absence_penalty - student_work.late_penalty - student_work.appeal_penalty
|
rest_proportion = (1 - tea_proportion - sy_proportion - tea_ass_proportion) / 3
|
||||||
student_work.work_score = format("%.2f",(score < 0 ? 0 : score).to_f) if score
|
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{sy_proportion + rest_proportion}")
|
||||||
else
|
final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{tea_proportion + rest_proportion}")
|
||||||
student_work.work_score = nil
|
final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{sy_proportion + rest_proportion}") - BigDecimal.new("#{tea_proportion + rest_proportion}"))
|
||||||
end
|
final_score = final_sy_score + final_te_score + final_ta_score
|
||||||
|
student_work.final_score = format("%.2f",final_score.to_f)
|
||||||
|
else
|
||||||
|
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{sy_proportion}")
|
||||||
|
final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{tea_proportion}")
|
||||||
|
final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{tea_ass_proportion}")
|
||||||
|
final_s_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{sy_proportion}") - BigDecimal.new("#{tea_proportion}") - BigDecimal.new("#{tea_ass_proportion}"))
|
||||||
|
final_score = final_sy_score + final_ta_score + final_te_score + final_st_score
|
||||||
|
student_work.final_score = format("%.2f",final_score.to_f)
|
||||||
end
|
end
|
||||||
else #不考虑教师评分
|
else
|
||||||
if student_work.teaching_asistant_score.nil? #教辅未评分
|
if student_work.teaching_asistant_score.nil? #教辅未评分
|
||||||
if student_work.student_score.nil?
|
if student_work.student_score.nil?
|
||||||
student_work.final_score = student_work.system_score
|
student_work.final_score = student_work.system_score
|
||||||
else
|
else
|
||||||
ta_proportion = homework.homework_detail_programing.ta_proportion + homework.homework_detail_manual.ta_proportion / 2
|
ta_proportion = sy_proportion + (tea_ass_proportion + tea_proportion) / 2
|
||||||
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{ta_proportion}")
|
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{ta_proportion}")
|
||||||
final_st_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}"))
|
final_st_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}"))
|
||||||
final_score = final_sy_score + final_st_score
|
final_score = final_sy_score + final_st_score
|
||||||
|
@ -1918,27 +1909,29 @@ class StudentWorkController < ApplicationController
|
||||||
if student_work.teaching_asistant_score.nil?
|
if student_work.teaching_asistant_score.nil?
|
||||||
student_work.final_score = student_work.system_score
|
student_work.final_score = student_work.system_score
|
||||||
else
|
else
|
||||||
ta_proportion = homework.homework_detail_programing.ta_proportion + (1.0 - homework.homework_detail_manual.ta_proportion - homework.homework_detail_programing.ta_proportion) / 2
|
ta_proportion = sy_proportion + (1.0 - tea_ass_proportion - sy_proportion) / 2
|
||||||
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{ta_proportion}")
|
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{ta_proportion}")
|
||||||
final_ts_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}"))
|
final_ts_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}"))
|
||||||
final_score = final_sy_score + final_ts_score
|
final_score = final_sy_score + final_ts_score
|
||||||
student_work.final_score = format("%.2f",final_score.to_f)
|
student_work.final_score = format("%.2f",final_score.to_f)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{homework.homework_detail_programing.ta_proportion}")
|
rest_proportion = tea_proportion / 3
|
||||||
final_ts_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{homework.homework_detail_manual.ta_proportion}")
|
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{sy_proportion + rest_proportion}")
|
||||||
final_st_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{homework.homework_detail_programing.ta_proportion}") - BigDecimal.new("#{homework.homework_detail_manual.ta_proportion}"))
|
final_ts_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{tea_ass_proportion + rest_proportion}")
|
||||||
|
final_st_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{sy_proportion + rest_proportion}") - BigDecimal.new("#{tea_ass_proportion + rest_proportion}"))
|
||||||
final_score = final_sy_score + final_ts_score + final_st_score
|
final_score = final_sy_score + final_ts_score + final_st_score
|
||||||
student_work.final_score = format("%.2f",final_score.to_f)
|
student_work.final_score = format("%.2f",final_score.to_f)
|
||||||
end
|
end
|
||||||
if student_work.final_score
|
|
||||||
score = student_work.final_score - student_work.absence_penalty - student_work.late_penalty - student_work.appeal_penalty
|
|
||||||
student_work.work_score = format("%.2f",(score < 0 ? 0 : score).to_f) if score
|
|
||||||
else
|
|
||||||
student_work.work_score = nil
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if student_work.final_score
|
||||||
|
score = student_work.final_score - student_work.absence_penalty - student_work.late_penalty - student_work.appeal_penalty
|
||||||
|
student_work.work_score = format("%.2f",(score < 0 ? 0 : score).to_f) if score
|
||||||
|
else
|
||||||
|
student_work.work_score = nil
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1408,11 +1408,9 @@ class UsersController < ApplicationController
|
||||||
render_attachment_warning_if_needed(homework)
|
render_attachment_warning_if_needed(homework)
|
||||||
|
|
||||||
homework_detail_manual = HomeworkDetailManual.new
|
homework_detail_manual = HomeworkDetailManual.new
|
||||||
if homework.anonymous_comment == 1
|
homework_detail_manual.te_proportion = 1.0
|
||||||
homework_detail_manual.ta_proportion = homework.homework_type == 2 ? 0.4 : 1.0
|
homework_detail_manual.ta_proportion = 0
|
||||||
else
|
|
||||||
homework_detail_manual.ta_proportion = homework.homework_type == 2 ? 0.3 : 0.6
|
|
||||||
end
|
|
||||||
if params[:homework_common][:end_time] == ""
|
if params[:homework_common][:end_time] == ""
|
||||||
homework_detail_manual.comment_status = 0
|
homework_detail_manual.comment_status = 0
|
||||||
else
|
else
|
||||||
|
@ -1446,11 +1444,7 @@ class UsersController < ApplicationController
|
||||||
if homework.homework_type == 2
|
if homework.homework_type == 2
|
||||||
homework_detail_programing = HomeworkDetailPrograming.new
|
homework_detail_programing = HomeworkDetailPrograming.new
|
||||||
homework.homework_detail_programing = homework_detail_programing
|
homework.homework_detail_programing = homework_detail_programing
|
||||||
if homework.anonymous_comment == 1
|
homework_detail_programing.ta_proportion = 0
|
||||||
homework_detail_programing.ta_proportion = 0.6
|
|
||||||
else
|
|
||||||
homework_detail_programing.ta_proportion = 0.5
|
|
||||||
end
|
|
||||||
homework_detail_programing.language = params[:language_type].to_i
|
homework_detail_programing.language = params[:language_type].to_i
|
||||||
|
|
||||||
sample_inputs = params[:sample][:input]
|
sample_inputs = params[:sample][:input]
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#手动评分作业表
|
#手动评分作业表
|
||||||
#comment_status: 1:未开启匿评,2:开启匿评,3:匿评结束
|
#comment_status: 1:未开启匿评,2:开启匿评,3:匿评结束
|
||||||
class HomeworkDetailManual < ActiveRecord::Base
|
class HomeworkDetailManual < ActiveRecord::Base
|
||||||
attr_accessible :ta_proportion, :comment_status, :evaluation_start, :evaluation_end, :evaluation_num, :absence_penalty, :homework_common_id, :no_anon_penalty
|
attr_accessible :te_proportion, :ta_proportion, :comment_status, :evaluation_start, :evaluation_end, :evaluation_num, :absence_penalty, :homework_common_id, :no_anon_penalty
|
||||||
|
|
||||||
belongs_to :homework_common
|
belongs_to :homework_common
|
||||||
end
|
end
|
||||||
|
|
|
@ -50,97 +50,88 @@ class StudentWork < ActiveRecord::Base
|
||||||
#成绩计算
|
#成绩计算
|
||||||
def set_final_score homework,student_work
|
def set_final_score homework,student_work
|
||||||
if homework && homework.homework_detail_manual
|
if homework && homework.homework_detail_manual
|
||||||
|
tea_ass_proportion = homework.homework_detail_manual.ta_proportion
|
||||||
|
tea_proportion = homework.homework_detail_manual.te_proportion
|
||||||
if homework.homework_type != 2 #非编程作业
|
if homework.homework_type != 2 #非编程作业
|
||||||
if homework.teacher_priority == 1 #教师优先
|
if student_work.teacher_score
|
||||||
if student_work.teacher_score
|
if student_work.teaching_asistant_score.nil?
|
||||||
student_work.final_score = student_work.teacher_score
|
if student_work.student_score.nil?
|
||||||
student_work.work_score = student_work.teacher_score - student_work.absence_penalty - student_work.late_penalty - student_work.appeal_penalty
|
student_work.final_score = student_work.teacher_score
|
||||||
else
|
|
||||||
if student_work.teaching_asistant_score.nil?
|
|
||||||
student_work.final_score = student_work.student_score
|
|
||||||
elsif student_work.student_score.nil?
|
|
||||||
student_work.final_score = student_work.teaching_asistant_score
|
|
||||||
else
|
else
|
||||||
ta_proportion = homework.homework_detail_manual.ta_proportion
|
te_proportion = tea_proportion + tea_ass_proportion / 2
|
||||||
final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{ta_proportion}")
|
final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{te_proportion}")
|
||||||
final_s_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}"))
|
final_s_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{te_proportion}"))
|
||||||
final_score = final_ta_score + final_s_score
|
final_score = final_te_score + final_s_score
|
||||||
student_work.final_score = format("%.2f",final_score.to_f)
|
student_work.final_score = format("%.2f",final_score.to_f)
|
||||||
end
|
end
|
||||||
if student_work.final_score
|
else
|
||||||
score = student_work.final_score - student_work.absence_penalty - student_work.late_penalty - student_work.appeal_penalty
|
if student_work.student_score.nil?
|
||||||
student_work.work_score = format("%.2f",(score < 0 ? 0 : score).to_f) if score
|
te_proportion = tea_proportion + (1.0 - tea_proportion - tea_ass_proportion) / 2
|
||||||
|
final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{te_proportion}")
|
||||||
|
final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{te_proportion}"))
|
||||||
|
final_score = final_te_score + final_ta_score
|
||||||
|
student_work.final_score = format("%.2f",final_score.to_f)
|
||||||
else
|
else
|
||||||
student_work.work_score = nil
|
final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{tea_proportion}")
|
||||||
|
final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{tea_ass_proportion}")
|
||||||
|
final_s_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{tea_proportion}") - BigDecimal.new("#{tea_ass_proportion}"))
|
||||||
|
final_score = final_te_score + final_ta_score + final_s_score
|
||||||
|
student_work.final_score = format("%.2f",final_score.to_f)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else #不考虑教师评分
|
else
|
||||||
if student_work.student_score.nil? && student_work.teaching_asistant_score.nil?
|
if student_work.teaching_asistant_score.nil?
|
||||||
student_work.final_score = student_work.teacher_score
|
|
||||||
elsif student_work.teaching_asistant_score.nil?
|
|
||||||
student_work.final_score = student_work.student_score
|
student_work.final_score = student_work.student_score
|
||||||
elsif student_work.student_score.nil?
|
elsif student_work.student_score.nil?
|
||||||
student_work.final_score = student_work.teaching_asistant_score
|
student_work.final_score = student_work.teaching_asistant_score
|
||||||
else
|
else
|
||||||
ta_proportion = homework.homework_detail_manual.ta_proportion
|
ta_proportion = tea_ass_proportion + tea_proportion / 2
|
||||||
final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{ta_proportion}")
|
final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{ta_proportion}")
|
||||||
final_s_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}"))
|
final_s_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}"))
|
||||||
final_score = final_ta_score + final_s_score
|
final_score = final_ta_score + final_s_score
|
||||||
student_work.final_score = format("%.2f",final_score.to_f)
|
student_work.final_score = format("%.2f",final_score.to_f)
|
||||||
end
|
end
|
||||||
if student_work.final_score
|
|
||||||
score = student_work.final_score - student_work.absence_penalty - student_work.late_penalty - student_work.appeal_penalty
|
|
||||||
student_work.work_score = format("%.2f",(score < 0 ? 0 : score).to_f) if score
|
|
||||||
else
|
|
||||||
student_work.work_score = nil
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
elsif homework.homework_type == 2 && homework.homework_detail_programing #编程作业-----设定:系统评分必定不为空
|
elsif homework.homework_type == 2 && homework.homework_detail_programing #编程作业-----设定:系统评分必定不为空
|
||||||
if homework.teacher_priority == 1 #教师优先
|
#if homework.teacher_priority == 1 #教师优先
|
||||||
if student_work.teacher_score
|
sy_proportion = homework.homework_detail_programing.ta_proportion
|
||||||
student_work.final_score = student_work.teacher_score
|
if student_work.teacher_score
|
||||||
student_work.work_score = student_work.teacher_score - student_work.absence_penalty - student_work.late_penalty - student_work.appeal_penalty
|
if student_work.teaching_asistant_score.nil? #教辅未评分
|
||||||
else
|
if student_work.student_score.nil?
|
||||||
if student_work.teaching_asistant_score.nil? #教辅未评分
|
ta_proportion = tea_proportion + (1 - tea_proportion - sy_proportion) / 2
|
||||||
if student_work.student_score.nil?
|
final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{ta_proportion}")
|
||||||
student_work.final_score = student_work.system_score
|
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}"))
|
||||||
else
|
final_score = final_sy_score + final_te_score
|
||||||
ta_proportion = homework.homework_detail_programing.ta_proportion + homework.homework_detail_manual.ta_proportion / 2
|
student_work.final_score = format("%.2f",final_score.to_f)
|
||||||
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{ta_proportion}")
|
|
||||||
final_st_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}"))
|
|
||||||
final_score = final_sy_score + final_st_score
|
|
||||||
student_work.final_score = format("%.2f",final_score.to_f)
|
|
||||||
end
|
|
||||||
elsif student_work.student_score.nil? #学生未评分
|
|
||||||
if student_work.teaching_asistant_score.nil?
|
|
||||||
student_work.final_score = student_work.system_score
|
|
||||||
else
|
|
||||||
ta_proportion = homework.homework_detail_programing.ta_proportion + (1.0 - homework.homework_detail_manual.ta_proportion - homework.homework_detail_programing.ta_proportion) / 2
|
|
||||||
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{ta_proportion}")
|
|
||||||
final_ts_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}"))
|
|
||||||
final_score = final_sy_score + final_ts_score
|
|
||||||
student_work.final_score = format("%.2f",final_score.to_f)
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{homework.homework_detail_programing.ta_proportion}")
|
rest_proportion = tea_ass_proportion / 3
|
||||||
final_ts_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{homework.homework_detail_manual.ta_proportion}")
|
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{sy_proportion + rest_proportion}")
|
||||||
final_st_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{homework.homework_detail_programing.ta_proportion}") - BigDecimal.new("#{homework.homework_detail_manual.ta_proportion}"))
|
final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{tea_proportion + rest_proportion}")
|
||||||
final_score = final_sy_score + final_ts_score + final_st_score
|
final_st_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{sy_proportion + rest_proportion}") - BigDecimal.new("#{tea_proportion + rest_proportion}"))
|
||||||
|
final_score = final_sy_score + final_te_score + final_st_score
|
||||||
student_work.final_score = format("%.2f",final_score.to_f)
|
student_work.final_score = format("%.2f",final_score.to_f)
|
||||||
end
|
end
|
||||||
if student_work.final_score
|
elsif student_work.student_score.nil? #学生未评分
|
||||||
score = student_work.final_score - student_work.absence_penalty - student_work.late_penalty - student_work.appeal_penalty
|
rest_proportion = (1 - tea_proportion - sy_proportion - tea_ass_proportion) / 3
|
||||||
student_work.work_score = format("%.2f",(score < 0 ? 0 : score).to_f) if score
|
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{sy_proportion + rest_proportion}")
|
||||||
else
|
final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{tea_proportion + rest_proportion}")
|
||||||
student_work.work_score = nil
|
final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{sy_proportion + rest_proportion}") - BigDecimal.new("#{tea_proportion + rest_proportion}"))
|
||||||
end
|
final_score = final_sy_score + final_te_score + final_ta_score
|
||||||
|
student_work.final_score = format("%.2f",final_score.to_f)
|
||||||
|
else
|
||||||
|
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{sy_proportion}")
|
||||||
|
final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{tea_proportion}")
|
||||||
|
final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{tea_ass_proportion}")
|
||||||
|
final_s_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{sy_proportion}") - BigDecimal.new("#{tea_proportion}") - BigDecimal.new("#{tea_ass_proportion}"))
|
||||||
|
final_score = final_sy_score + final_ta_score + final_te_score + final_st_score
|
||||||
|
student_work.final_score = format("%.2f",final_score.to_f)
|
||||||
end
|
end
|
||||||
else #不考虑教师评分
|
else
|
||||||
if student_work.teaching_asistant_score.nil? #教辅未评分
|
if student_work.teaching_asistant_score.nil? #教辅未评分
|
||||||
if student_work.student_score.nil?
|
if student_work.student_score.nil?
|
||||||
student_work.final_score = student_work.system_score
|
student_work.final_score = student_work.system_score
|
||||||
else
|
else
|
||||||
ta_proportion = homework.homework_detail_programing.ta_proportion + homework.homework_detail_manual.ta_proportion / 2
|
ta_proportion = sy_proportion + (tea_ass_proportion + tea_proportion) / 2
|
||||||
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{ta_proportion}")
|
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{ta_proportion}")
|
||||||
final_st_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}"))
|
final_st_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}"))
|
||||||
final_score = final_sy_score + final_st_score
|
final_score = final_sy_score + final_st_score
|
||||||
|
@ -150,27 +141,29 @@ class StudentWork < ActiveRecord::Base
|
||||||
if student_work.teaching_asistant_score.nil?
|
if student_work.teaching_asistant_score.nil?
|
||||||
student_work.final_score = student_work.system_score
|
student_work.final_score = student_work.system_score
|
||||||
else
|
else
|
||||||
ta_proportion = homework.homework_detail_programing.ta_proportion + (1.0 - homework.homework_detail_manual.ta_proportion - homework.homework_detail_programing.ta_proportion) / 2
|
ta_proportion = sy_proportion + (1.0 - tea_ass_proportion - sy_proportion) / 2
|
||||||
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{ta_proportion}")
|
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{ta_proportion}")
|
||||||
final_ts_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}"))
|
final_ts_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}"))
|
||||||
final_score = final_sy_score + final_ts_score
|
final_score = final_sy_score + final_ts_score
|
||||||
student_work.final_score = format("%.2f",final_score.to_f)
|
student_work.final_score = format("%.2f",final_score.to_f)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{homework.homework_detail_programing.ta_proportion}")
|
rest_proportion = tea_proportion / 3
|
||||||
final_ts_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{homework.homework_detail_manual.ta_proportion}")
|
final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{sy_proportion + rest_proportion}")
|
||||||
final_st_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{homework.homework_detail_programing.ta_proportion}") - BigDecimal.new("#{homework.homework_detail_manual.ta_proportion}"))
|
final_ts_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{tea_ass_proportion + rest_proportion}")
|
||||||
|
final_st_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{sy_proportion + rest_proportion}") - BigDecimal.new("#{tea_ass_proportion + rest_proportion}"))
|
||||||
final_score = final_sy_score + final_ts_score + final_st_score
|
final_score = final_sy_score + final_ts_score + final_st_score
|
||||||
student_work.final_score = format("%.2f",final_score.to_f)
|
student_work.final_score = format("%.2f",final_score.to_f)
|
||||||
end
|
end
|
||||||
if student_work.final_score
|
|
||||||
score = student_work.final_score - student_work.absence_penalty - student_work.late_penalty - student_work.appeal_penalty
|
|
||||||
student_work.work_score = format("%.2f",(score < 0 ? 0 : score).to_f) if score
|
|
||||||
else
|
|
||||||
student_work.work_score = nil
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if student_work.final_score
|
||||||
|
score = student_work.final_score - student_work.absence_penalty - student_work.late_penalty - student_work.appeal_penalty
|
||||||
|
student_work.work_score = format("%.2f",(score < 0 ? 0 : score).to_f) if score
|
||||||
|
else
|
||||||
|
student_work.work_score = nil
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -103,37 +103,29 @@
|
||||||
|
|
||||||
<li class="mb10 mt10 fl">
|
<li class="mb10 mt10 fl">
|
||||||
<label class="pop_box_label fl">最终得分 : </label>
|
<label class="pop_box_label fl">最终得分 : </label>
|
||||||
<input type="radio" class="fl" value="1" id="teacher_score" name="teacher_priority"/><label for="teacher_score" class=" fl ml5">教师评分</label>
|
<ul class="fl ml5">
|
||||||
</li>
|
|
||||||
<div class="fl ml20 clear popup_tip_box fontGrey2 mb10 mt10 w230" style="margin-left: 141px;">
|
|
||||||
<em></em>
|
|
||||||
<span></span>
|
|
||||||
<p>教师评分-迟交扣分-缺评扣分-违规匿评扣分</p>
|
|
||||||
</div>
|
|
||||||
<li class="mb10 fl">
|
|
||||||
<label class="pop_box_label fl"> </label>
|
|
||||||
<ul class="fl">
|
|
||||||
<li class="clear">
|
<li class="clear">
|
||||||
<input type="radio" class="fl" id="other_score" value="0" name="teacher_priority"/>
|
<span class="fl">教师评分</span>
|
||||||
<label for="other_score" class="fl ml5">助教评分+学生匿评</label>
|
<%= select_tag :te_proportion,options_for_select(ta_proportion_option,homework.homework_detail_manual.te_proportion), {:class => "w61 fl ml15"} %>
|
||||||
</li>
|
</li>
|
||||||
<li class="clear">
|
<li class="clear mt5">
|
||||||
<%= select_tag :ta_proportion,options_for_select(ta_proportion_option_to(100),homework.homework_detail_manual.ta_proportion), {:class => "w61 fl ml15"} %>
|
<span class="fl">助教评分</span>
|
||||||
<span class="fl ml5">助教评分</span>
|
<%= select_tag :ta_proportion,options_for_select(ta_proportion_option_to(100-(homework.homework_detail_manual.te_proportion * 100).to_i),homework.homework_detail_manual.ta_proportion), {:class => "w61 fl ml15"} %>
|
||||||
</li>
|
</li>
|
||||||
<li class="clear">
|
<li class="clear mt5">
|
||||||
<input type="text" style="width: 49px; padding-left: 10px;" id="student_proportion" value="<%= (100 - homework.homework_detail_manual.ta_proportion * 100).to_i%>%" class="fl ml15" readonly>
|
<span class="fl">学生匿评</span>
|
||||||
<span class="fl ml5">学生匿评</span>
|
<input type="text" style="width: 49px; padding-left: 10px;" id="student_proportion" value="<%= 100 - (homework.homework_detail_manual.te_proportion * 100).to_i - (homework.homework_detail_manual.ta_proportion * 100).to_i%>%" class="fl ml15" readonly>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="fl clear popup_tip_box fontGrey2 w230" style="margin-left: 78px;">
|
|
||||||
<em></em>
|
|
||||||
<span></span>
|
|
||||||
<p >助教评分*其百分比+ <br/>
|
|
||||||
学生匿评平均分*其百分比- <br/>
|
|
||||||
( 迟交扣分+缺评扣分+违规匿评扣分 )</p>
|
|
||||||
</div>
|
|
||||||
</li>
|
</li>
|
||||||
|
<div class="fl ml20 clear popup_tip_box fontGrey2 mb10 mt10 w230" style="margin-left: 78px;">
|
||||||
|
<em></em>
|
||||||
|
<span></span>
|
||||||
|
<p>教师评分 * 其百分比+ <br/>
|
||||||
|
助教评分 * 其百分比+ <br/>
|
||||||
|
学生匿评平均分 * 其百分比 - <br/>
|
||||||
|
( 迟交扣分+缺评扣分+违规匿评扣分 )</p>
|
||||||
|
</div>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<a href="javascript:void(0);" class="fr sy_btn_blue mr50" onclick="set_score_rule_submit();">确定</a>
|
<a href="javascript:void(0);" class="fr sy_btn_blue mr50" onclick="set_score_rule_submit();">确定</a>
|
||||||
|
@ -145,9 +137,16 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
$(function(){
|
$(function(){
|
||||||
$("#ta_proportion").change(function(){
|
$("#te_proportion").die();
|
||||||
var ta_proportion = parseFloat($("#ta_proportion").val());
|
$("#ta_proportion").die();
|
||||||
$("#student_proportion").val((100 - parseFloat(parseInt(ta_proportion * 100))) + "%");
|
$("#te_proportion").live('change', function(){
|
||||||
|
var ta_proportion = 100 - parseInt(parseFloat($("#te_proportion").val()) * 100);
|
||||||
|
$("#ta_proportion").replaceWith(build_selector(ta_proportion));
|
||||||
|
$("#student_proportion").val("0%");
|
||||||
|
});
|
||||||
|
$("#ta_proportion").live('change', function(){
|
||||||
|
var ta_proportion = 100 - parseInt(parseFloat($("#te_proportion").val()) * 100) - parseInt(parseFloat($("#ta_proportion").val()) * 100);
|
||||||
|
$("#student_proportion").val(ta_proportion + "%");
|
||||||
});
|
});
|
||||||
<% if homework.teacher_priority == 1 %>
|
<% if homework.teacher_priority == 1 %>
|
||||||
$("#teacher_score").attr("checked", "checked");
|
$("#teacher_score").attr("checked", "checked");
|
||||||
|
|
|
@ -41,25 +41,25 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<span class="separator_short"></span>
|
<span class="separator_short"></span>
|
||||||
<li class="mb10">
|
<li class="mb10 fl">
|
||||||
<label class="pop_box_label fl">最终得分 : </label>
|
<label class="pop_box_label fl">最终得分 : </label>
|
||||||
<input type="radio" class="fl" value="1" id="teacher_score" name="teacher_priority"/>
|
<!--<input type="radio" class="fl" value="1" id="teacher_score" name="teacher_priority"/>-->
|
||||||
<label for="teacher_score" class=" fl ml5">教师评分</label>
|
<ul class="fl ml5">
|
||||||
|
<li class="clear">
|
||||||
|
<span class="fl">教师评分</span>
|
||||||
|
<%= select_tag :te_proportion,options_for_select(ta_proportion_option,homework.homework_detail_manual.te_proportion), {:class => "w61 fl ml15"} %>
|
||||||
|
</li>
|
||||||
|
<li class="clear mt5">
|
||||||
|
<span class="fl">助教评分</span>
|
||||||
|
<input type="hidden" name="ta_proportion" value="<%= homework.homework_detail_manual.ta_proportion %>">
|
||||||
|
<input type="text" style="width: 49px; padding-left: 10px;" id="ta_proportion" value="<%= (homework.homework_detail_manual.ta_proportion * 100).to_i %>%" class="fl ml15" readonly>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<div class="fl clear popup_tip_box fontGrey2 mb10 w190" style="margin-left: 92px;">
|
<div class="fl clear popup_tip_box fontGrey2 mb10 w190" style="margin-left: 29px;">
|
||||||
<em></em>
|
<em></em>
|
||||||
<span></span>
|
<span></span>
|
||||||
<p >教师评分 - 迟交扣分 </p>
|
<p >教师评分 * 其百分比 + <br/>助教评分 * 其百分比 - <br/> 迟交扣分 </p>
|
||||||
</div>
|
|
||||||
<li class="mb10">
|
|
||||||
<label class="pop_box_label fl"> </label>
|
|
||||||
<input type="radio" class="fl" id="other_score" value="0" name="teacher_priority"/>
|
|
||||||
<label for="other_score" class="fl ml5">助教评分</label>
|
|
||||||
</li>
|
|
||||||
<div class="fl clear popup_tip_box fontGrey2 mb10 w190" style="margin-left: 92px;">
|
|
||||||
<em></em>
|
|
||||||
<span></span>
|
|
||||||
<p >助教评分 - 迟交扣分 </p>
|
|
||||||
</div>
|
</div>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
|
@ -72,6 +72,14 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
$(function(){
|
$(function(){
|
||||||
|
$("#te_proportion").die();
|
||||||
|
|
||||||
|
$("#te_proportion").live('change', function(){
|
||||||
|
var ta_proportion = 100 - parseInt(parseFloat($("#te_proportion").val()) * 100);
|
||||||
|
$("#ta_proportion").val(ta_proportion + "%");
|
||||||
|
$("input[name='ta_proportion']").val(ta_proportion/100);
|
||||||
|
});
|
||||||
|
|
||||||
<% if homework.teacher_priority == 1 %>
|
<% if homework.teacher_priority == 1 %>
|
||||||
$("#teacher_score").attr("checked", "checked");
|
$("#teacher_score").attr("checked", "checked");
|
||||||
<% else %>
|
<% else %>
|
||||||
|
|
|
@ -103,42 +103,34 @@
|
||||||
|
|
||||||
<li class="mb10 mt10 fl">
|
<li class="mb10 mt10 fl">
|
||||||
<label class="pop_box_label fl">最终得分 : </label>
|
<label class="pop_box_label fl">最终得分 : </label>
|
||||||
<input type="radio" class="fl" value="1" id="teacher_score" name="teacher_priority"/><label for="teacher_score" class=" fl ml5">教师评分</label>
|
<ul class="fl ml5">
|
||||||
</li>
|
|
||||||
<div class="fl ml20 clear popup_tip_box fontGrey2 mb10 mt10 w230" style="margin-left: 141px;">
|
|
||||||
<em></em>
|
|
||||||
<span></span>
|
|
||||||
<p>教师评分-迟交扣分-缺评扣分-违规匿评扣分</p>
|
|
||||||
</div>
|
|
||||||
<li class="mb10 fl">
|
|
||||||
<label class="pop_box_label fl"> </label>
|
|
||||||
<ul class="fl">
|
|
||||||
<li class="clear">
|
<li class="clear">
|
||||||
<input type="radio" class="fl" id="other_score" value="0" name="teacher_priority"/>
|
<span class="fl">教师评分</span>
|
||||||
<label for="other_score" class="fl ml5">系统评分+助教评分+学生匿评</label>
|
<%= select_tag :te_proportion,options_for_select(ta_proportion_option,homework.homework_detail_manual.te_proportion), {:class => "w61 fl ml15"} %>
|
||||||
</li>
|
</li>
|
||||||
<li class="clear">
|
<li class="clear mt5">
|
||||||
<%= select_tag :sy_proportion,options_for_select(ta_proportion_option,homework.homework_detail_programing.ta_proportion), {:class => "w61 fl ml15"} %>
|
<span class="fl">助教评分</span>
|
||||||
<span class="fl ml5">系统评分</span>
|
<%= select_tag :ta_proportion,options_for_select(ta_proportion_option_to(100-(homework.homework_detail_manual.te_proportion * 100).to_i),homework.homework_detail_manual.ta_proportion), {:class => "w61 fl ml15"} %>
|
||||||
</li>
|
</li>
|
||||||
<li class="clear">
|
<li class="clear mt5">
|
||||||
<%= select_tag :ta_proportion,options_for_select(ta_proportion_option_to(100-(homework.homework_detail_programing.ta_proportion * 100).to_i),homework.homework_detail_manual.ta_proportion), {:class => "w61 fl ml15"} %>
|
<span class="fl">系统评分</span>
|
||||||
<span class="fl ml5">助教评分</span>
|
<%= select_tag :sy_proportion,options_for_select(ta_proportion_option_to(100-(homework.homework_detail_manual.te_proportion * 100).to_i-(homework.homework_detail_manual.ta_proportion * 100).to_i),homework.homework_detail_programing.ta_proportion), {:class => "w61 fl ml15"} %>
|
||||||
</li>
|
</li>
|
||||||
<li class="clear">
|
<li class="clear mt5">
|
||||||
<input type="text" style="width: 49px; padding-left: 10px;" id="student_proportion" value="<%= (100 - homework.homework_detail_manual.ta_proportion * 100).to_i - (homework.homework_detail_programing.ta_proportion * 100).to_i%>" class="fl ml15" readonly>
|
<span class="fl">学生匿评</span>
|
||||||
<span class="fl ml5">学生匿评</span>
|
<input type="text" style="width: 49px; padding-left: 10px;" id="student_proportion" value="<%= 100 - (homework.homework_detail_manual.te_proportion * 100).to_i - (homework.homework_detail_manual.ta_proportion * 100).to_i - (homework.homework_detail_programing.ta_proportion * 100).to_i%>%" class="fl ml15" readonly>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="fl clear popup_tip_box fontGrey2 w230" style="margin-left: 27px;">
|
|
||||||
<em></em>
|
|
||||||
<span></span>
|
|
||||||
<p>系统评分*其百分比+ <br/>
|
|
||||||
助教评 *其百分比+ <br/>
|
|
||||||
学生匿评平均分*其百分比 - <br/>
|
|
||||||
( 迟交扣分+缺评扣分+违规匿评扣分 )</p>
|
|
||||||
</div>
|
|
||||||
</li>
|
</li>
|
||||||
|
<div class="fl ml20 clear popup_tip_box fontGrey2 mb10 mt10 w230" style="margin-left: 73px;">
|
||||||
|
<em></em>
|
||||||
|
<span></span>
|
||||||
|
<p>教师评分 * 其百分比 + <br/>
|
||||||
|
助教评分 * 其百分比 + <br/>
|
||||||
|
系统评分 * 其百分比 + <br/>
|
||||||
|
学生匿评平均分 * 其百分比 - <br/>
|
||||||
|
( 迟交扣分+缺评扣分+违规匿评扣分 )</p>
|
||||||
|
</div>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<a href="javascript:void(0);" class="fr sy_btn_blue mr50" onclick="set_score_rule_submit();">确定</a>
|
<a href="javascript:void(0);" class="fr sy_btn_blue mr50" onclick="set_score_rule_submit();">确定</a>
|
||||||
|
@ -150,14 +142,24 @@
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
$(function(){
|
$(function(){
|
||||||
$("#sy_proportion").live('change', function(){
|
$("#te_proportion").die();
|
||||||
var ta_proportion = 100 - parseInt(parseFloat($("#sy_proportion").val()) * 100);
|
$("#ta_proportion").die();
|
||||||
|
$("#sy_proportion").die();
|
||||||
|
|
||||||
|
$("#te_proportion").live('change', function(){
|
||||||
|
var ta_proportion = 100 - parseInt(parseFloat($("#te_proportion").val()) * 100);
|
||||||
$("#ta_proportion").replaceWith(build_selector(ta_proportion));
|
$("#ta_proportion").replaceWith(build_selector(ta_proportion));
|
||||||
|
$("#sy_proportion").replaceWith(build_selector_sy(0));
|
||||||
$("#student_proportion").val("0%");
|
$("#student_proportion").val("0%");
|
||||||
});
|
});
|
||||||
$("#ta_proportion").live("change",function(){
|
$("#ta_proportion").live("change",function(){
|
||||||
var ta_proportion = 100 - parseInt(parseFloat($("#sy_proportion").val()) * 100) - parseInt(parseFloat($("#ta_proportion").val()) * 100);
|
var sy_proportion = 100 - parseInt(parseFloat($("#te_proportion").val()) * 100) - parseInt(parseFloat($("#ta_proportion").val()) * 100);
|
||||||
$("#student_proportion").val(ta_proportion + "%");
|
$("#sy_proportion").replaceWith(build_selector_sy(sy_proportion));
|
||||||
|
$("#student_proportion").val("0%");
|
||||||
|
});
|
||||||
|
$("#sy_proportion").live("change",function(){
|
||||||
|
var sy_proportion = 100 - parseInt(parseFloat($("#te_proportion").val()) * 100) - parseInt(parseFloat($("#ta_proportion").val()) * 100) - parseInt(parseFloat($("#sy_proportion").val()) * 100);
|
||||||
|
$("#student_proportion").val(sy_proportion + "%");
|
||||||
});
|
});
|
||||||
<% if homework.teacher_priority == 1 %>
|
<% if homework.teacher_priority == 1 %>
|
||||||
$("#teacher_score").attr("checked", "checked");
|
$("#teacher_score").attr("checked", "checked");
|
||||||
|
|
|
@ -43,37 +43,28 @@
|
||||||
<span class="separator_short"></span>
|
<span class="separator_short"></span>
|
||||||
<li class="mb10 fl">
|
<li class="mb10 fl">
|
||||||
<label class="pop_box_label fl">最终得分 : </label>
|
<label class="pop_box_label fl">最终得分 : </label>
|
||||||
<input type="radio" class="fl" value="1" id="teacher_score" name="teacher_priority"/>
|
<!--<input type="radio" class="fl" value="1" id="teacher_score" name="teacher_priority"/>-->
|
||||||
<label for="teacher_score" class=" fl ml5">教师评分</label>
|
<ul class="fl ml5">
|
||||||
</li>
|
|
||||||
<div class="fl clear popup_tip_box fontGrey2 mb10 w190" style="margin-left: 92px;">
|
|
||||||
<em></em>
|
|
||||||
<span></span>
|
|
||||||
<p >教师评分 - 迟交扣分 </p>
|
|
||||||
</div>
|
|
||||||
<li class="mb10 fl">
|
|
||||||
<label class="pop_box_label fl"> </label>
|
|
||||||
<ul class="fl">
|
|
||||||
<li class="clear">
|
<li class="clear">
|
||||||
<input type="radio" class="fl" id="other_score" value="0" name="teacher_priority"/><label for="other_score" class="fl ml5">系统评分+助教评分</label>
|
<span class="fl">教师评分</span>
|
||||||
|
<%= select_tag :te_proportion,options_for_select(ta_proportion_option,homework.homework_detail_manual.te_proportion), {:class => "w61 fl ml15"} %>
|
||||||
</li>
|
</li>
|
||||||
<li class="clear">
|
<li class="clear mt5">
|
||||||
<%= select_tag :sy_proportion,options_for_select(ta_proportion_option,homework.homework_detail_programing.ta_proportion), {:class => "w61 fl ml15"} %>
|
<span class="fl">助教评分</span>
|
||||||
<span class="fl ml5">系统评分</span>
|
<%= select_tag :ta_proportion,options_for_select(ta_proportion_option_to(100-(homework.homework_detail_manual.te_proportion * 100).to_i),homework.homework_detail_manual.ta_proportion), {:class => "w61 fl ml15"} %>
|
||||||
</li>
|
</li>
|
||||||
<li class="clear">
|
<li class="clear mt5">
|
||||||
<%= select_tag :ta_proportion,options_for_select(ta_proportion_option_to(100-(homework.homework_detail_programing.ta_proportion * 100).to_i),homework.homework_detail_manual.ta_proportion), {:class => "w61 fl ml15"} %>
|
<span class="fl">系统评分</span>
|
||||||
<span class="fl ml5">助教评分</span>
|
<input name="sy_proportion" type="hidden" value="<%= homework.homework_detail_programing.ta_proportion %>">
|
||||||
|
<input type="text" style="width: 49px; padding-left: 10px;" id="sy_proportion" value="<%= (homework.homework_detail_programing.ta_proportion * 100).to_i %>%" class="fl ml15" readonly>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="fl clear popup_tip_box fontGrey2 mb10 w190 ml30">
|
|
||||||
<em></em>
|
|
||||||
<span></span>
|
|
||||||
<p >系统评分 * 其百分比 + <br/>
|
|
||||||
助教评分 * 其百分比 - <br/>
|
|
||||||
迟交扣分 </p>
|
|
||||||
</div>
|
|
||||||
</li>
|
</li>
|
||||||
|
<div class="fl clear popup_tip_box fontGrey2 mb10 w190" style="margin-left: 29px;">
|
||||||
|
<em></em>
|
||||||
|
<span></span>
|
||||||
|
<p >教师评分 * 其百分比 + <br/>助教评分 * 其百分比 + <br/>系统评分 * 其百分比 - <br/> 迟交扣分 </p>
|
||||||
|
</div>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<a href="javascript:void(0);" class="fr sy_btn_blue mr40" onclick="set_score_rule_submit();">确定</a>
|
<a href="javascript:void(0);" class="fr sy_btn_blue mr40" onclick="set_score_rule_submit();">确定</a>
|
||||||
|
@ -86,13 +77,19 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
$(function(){
|
$(function(){
|
||||||
$("#sy_proportion").live('change', function(){
|
$("#te_proportion").die();
|
||||||
var ta_proportion = 100 - parseInt(parseFloat($("#sy_proportion").val()) * 100);
|
$("#ta_proportion").die();
|
||||||
|
|
||||||
|
$("#te_proportion").live('change', function(){
|
||||||
|
var ta_proportion = 100 - parseInt(parseFloat($("#te_proportion").val()) * 100);
|
||||||
$("#ta_proportion").replaceWith(build_selector(ta_proportion));
|
$("#ta_proportion").replaceWith(build_selector(ta_proportion));
|
||||||
|
$("#sy_proportion").val("0%");
|
||||||
|
$("input[name='sy_proportion']").val(0);
|
||||||
});
|
});
|
||||||
$("#ta_proportion").live('change', function(){
|
$("#ta_proportion").live('change', function(){
|
||||||
var sy_proportion = 100 - parseInt(parseFloat($("#ta_proportion").val()) * 100);
|
var ta_proportion = 100 - parseInt(parseFloat($("#te_proportion").val()) * 100) - parseInt(parseFloat($("#ta_proportion").val()) * 100);
|
||||||
$("#sy_proportion").replaceWith(build_selector_sy(sy_proportion));
|
$("#sy_proportion").val(ta_proportion + "%");
|
||||||
|
$("input[name='sy_proportion']").val(ta_proportion/100);
|
||||||
});
|
});
|
||||||
<% if homework.teacher_priority == 1 %>
|
<% if homework.teacher_priority == 1 %>
|
||||||
$("#teacher_score").attr("checked", "checked");
|
$("#teacher_score").attr("checked", "checked");
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
class AddTeProportionToHomework < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :homework_detail_manuals, :te_proportion, :float, :default => 1.0
|
||||||
|
|
||||||
|
count = HomeworkDetailManual.all.count / 30 + 2
|
||||||
|
transaction do
|
||||||
|
for i in 1 ... count do i
|
||||||
|
HomeworkDetailManual.page(i).per(30).each do |homework|
|
||||||
|
if homework.homework_common
|
||||||
|
homework_common = homework.homework_common
|
||||||
|
homework_detail_programing = homework_common.homework_detail_programing
|
||||||
|
if homework_common.teacher_priority == 1
|
||||||
|
if homework_detail_programing
|
||||||
|
homework_detail_programing.update_column("ta_proportion", 0.0)
|
||||||
|
end
|
||||||
|
homework.update_column("ta_proportion", 0.0)
|
||||||
|
else
|
||||||
|
homework.update_column("te_proportion", 0.0)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
homework.destroy
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -658,7 +658,7 @@ function build_selector(max_num){
|
||||||
}
|
}
|
||||||
function build_selector_sy(max_num){
|
function build_selector_sy(max_num){
|
||||||
var html = "<select class='w61 fl ml15' id='sy_proportion' name='sy_proportion'>";
|
var html = "<select class='w61 fl ml15' id='sy_proportion' name='sy_proportion'>";
|
||||||
for(var i = 0; i <= 100; i += 10){
|
for(var i = 0; i <= max_num; i += 10){
|
||||||
if( i == max_num){
|
if( i == max_num){
|
||||||
html += "<option value='" + parseFloat(i)/100 + "' selected='selected'>" + i + "%</option>";
|
html += "<option value='" + parseFloat(i)/100 + "' selected='selected'>" + i + "%</option>";
|
||||||
}else{
|
}else{
|
||||||
|
|
Loading…
Reference in New Issue