Skip to content

Commit

Permalink
Update review_mapping_helper.rb
Browse files Browse the repository at this point in the history
  • Loading branch information
kanishkharde committed Apr 24, 2024
1 parent 75ee705 commit 589a44e
Showing 1 changed file with 79 additions and 74 deletions.
153 changes: 79 additions & 74 deletions app/helpers/review_mapping_helper.rb
Expand Up @@ -24,7 +24,7 @@ def get_data_for_review_report(reviewed_object_id, reviewer_id, type)
#
# gets the team name's color according to review and assignment submission status
#
def determine_team_color(response_map)
def determine_team_color(response_map)
# Storing redundantly computed value in a variable
assignment_created = @assignment.created_at
# Storing redundantly computed value in a variable
Expand All @@ -42,6 +42,7 @@ def determine_team_color(response_map)
'red'
end
end

# loops through the number of assignment review rounds and obtains the team colour
def obtain_team_color(response_map, assignment_created, assignment_due_dates)
color = []
Expand Down Expand Up @@ -174,6 +175,9 @@ def review_metrics(round, team_id)
# end
# end
# end



# # get the number of review rounds for the assignment
# @num_rounds = @assignment.num_review_rounds.to_f.to_i
# @all_reviewers_avg_vol_per_round = []
Expand All @@ -184,21 +188,21 @@ def review_metrics(round, team_id)
# @reviewers.sort! { |r1, r2| r2.overall_avg_vol <=> r1.overall_avg_vol }
# end

# Sorts the reviewers by the specified metric in descending order
# Sorts the reviewers by the specified metric in descending order
def sort_reviewers_by_metric_desc(metric = :review_volume)
@reviewers.each do |r|
# Calculate the metric for each reviewer
reviewer_metric_values = calculate_reviewer_metric(metric, r)
r.avg_metric_per_round = []
reviewer_metric_values = calculate_reviewer_metric(metric, r)
r.avg_metric_per_round = []

reviewer_metric_values.each_with_index do |value, i|
if i.zero?
r.overall_avg_metric = value
else
r.avg_metric_per_round.push(value)
reviewer_metric_values.each_with_index do |value, i|
if i.zero?
r.overall_avg_metric = value
else
r.avg_metric_per_round.push(value)
end
end
end
end

# Calculate the average metric values across all reviewers
@all_reviewers_avg_metric_per_round = calculate_average_metric_per_round(metric)
Expand All @@ -211,11 +215,11 @@ def sort_reviewers_by_metric_desc(metric = :review_volume)
def calculate_reviewer_metric(metric, reviewer)
case metric
when :review_volume
Response.volume_of_review_comments(@assignment.id, reviewer.id)
# when :number_of_suggestions
Response.volume_of_review_comments(@assignment.id, reviewer.id)
when :number_of_suggestions
# Calculate number of suggestions for the reviewer
# Replace this with the actual logic for calculating number of suggestions
# when :total_problems_detected
when :total_problems_detected
# Calculate total number of problems detected for the reviewer
# Replace this with the actual logic for calculating total problems detected
else
Expand Down Expand Up @@ -488,74 +492,74 @@ def reviews_per_student
end

module Charts
# The data of all the reviews is displayed in the form of a bar chart
# The data of all the reviews is displayed in the form of a bar chart
def display_volume_metric_chart(reviewer)
labels, reviewer_data, all_reviewers_data = initialize_chart_elements(reviewer)
data = {
labels: labels,
datasets: [
{
label: 'vol.',
backgroundColor: 'rgba(255,99,132,0.8)',
borderWidth: 1,
data: reviewer_data,
yAxisID: 'bar-y-axis1'
},
{
label: 'avg. vol.',
backgroundColor: 'rgba(255,206,86,0.8)',
borderWidth: 1,
data: all_reviewers_data,
yAxisID: 'bar-y-axis2'
}
]
labels, reviewer_data, all_reviewers_data = initialize_chart_elements(reviewer)
data = {
labels: labels,
datasets: [
{
label: 'vol.',
backgroundColor: 'rgba(255,99,132,0.8)',
borderWidth: 1,
data: reviewer_data,
yAxisID: 'bar-y-axis1'
},
{
label: 'avg. vol.',
backgroundColor: 'rgba(255,206,86,0.8)',
borderWidth: 1,
data: all_reviewers_data,
yAxisID: 'bar-y-axis2'
}
options = {
legend: {
position: 'top',
labels: {
usePointStyle: true
}
},
width: '200',
height: '225',
scales: {
yAxes: [{
stacked: true,
id: 'bar-y-axis1',
barThickness: 10
}, {
display: false,
stacked: true,
id: 'bar-y-axis2',
barThickness: 15,
type: 'category',
categoryPercentage: 0.8,
barPercentage: 0.9,
gridLines: {
offsetGridLines: true
}
}],
xAxes: [{
stacked: false,
ticks: {
beginAtZero: true,
stepSize: 50,
max: 400
}
}]
}
]
}
options = {
legend: {
position: 'top',
labels: {
usePointStyle: true
}
bar_chart data, options
},
width: '200',
height: '225',
scales: {
yAxes: [{
stacked: true,
id: 'bar-y-axis1',
barThickness: 10
}, {
display: false,
stacked: true,
id: 'bar-y-axis2',
barThickness: 15,
type: 'category',
categoryPercentage: 0.8,
barPercentage: 0.9,
gridLines: {
offsetGridLines: true
}
}],
xAxes: [{
stacked: false,
ticks: {
beginAtZero: true,
stepSize: 50,
max: 400
}
}]
}
}
bar_chart data, options
end

# Generate chart for review tagging time intervals
def display_tagging_interval_chart(intervals)
# if someone did not do any tagging in 30 seconds, then ignore this interval
threshold = 30
intervals = intervals.select { |v| v < threshold }
unless intervals.empty?
interval_mean = intervals.reduce(:+) / intervals.size.to_f
# if someone did not do any tagging in 30 seconds, then ignore this interval
threshold = 30
intervals = intervals.select { |v| v < threshold }
unless intervals.empty?
interval_mean = intervals.reduce(:+) / intervals.size.to_f
end
# build the parameters for the chart
data = {
Expand Down Expand Up @@ -591,4 +595,5 @@ def display_tagging_interval_chart(intervals)
}
line_chart data, options
end

end

0 comments on commit 589a44e

Please sign in to comment.