Skip to content
Snippets Groups Projects
Commit a24c30c1 authored by Frank Murphy's avatar Frank Murphy Committed by Neil Gupta
Browse files

Put add rating button back where it belongs.

Fixes OUT-2310

Test Plan:
- (recommend testing in at least two supported browsers)
- Create an assignment / new rubric. Add / remove ratings, including
  some with long descriptions.
- Verify the add ratings buttons remain present and centered on the fold
  between table cells.
- With the non-scoring rubric feature flag OFF:
- Open a rubric and assessed rubric in speed grader. Verify there are no
  visual anomolies.

Change-Id: Id20f8a08b58a96d599476cee65517e57cf89f438
Reviewed-on: https://gerrit.instructure.com/155446


Tested-by: Jenkins
Reviewed-by: default avatarAugusto Callejas <acallejas@instructure.com>
Reviewed-by: default avatarMichael Brewer-Davis <mbd@instructure.com>
QA-Review: Augusto Callejas <acallejas@instructure.com>
Product-Review: Sidharth Oberoi <soberoi@instructure.com>
parent d5c2a078
Branches
Tags release/2018-07-14.04
No related merge requests found
......@@ -56,15 +56,18 @@
label[for=rubric-title] {
font-weight: bold;
}
tr.criterion .container .add_rating_link {
position: absolute;
float: direction(right);
top: 50%;
#{direction(right)}: -.5%;
transform: translateY(-50%);
tr.criterion .add_rating_link {
line-height: 0;
width: 0;
display: block;
margin-#{direction(right)}: -1.2rem;
display: flex;
flex-direction: column;
justify-content: center;
}
tr.criterion td.rating > div.container {
display: flex;
}
tr.criterion .rating-main {
flex: 1;
}
.add_rating_link_after {
border-radius: 1rem;
......@@ -190,9 +193,6 @@
&.edge_rating .delete_rating_link {
display: none;
}
&:last-child .add_rating_link_after {
display: none;
}
&.infinitesimal .range_rating {
display: none;
}
......
......@@ -100,7 +100,8 @@
<% ratings ||= [OpenObject.new(:id => "blank", :description => t(:full_marks, "Full Marks"), :points => 5), OpenObject.new(:id => "blank_2", :description => t(:no_marks, "No Marks"), :points => 0)] %>
<% ratings.each_index do |idx| %>
<% rating = ratings[idx];
rating.edge = (idx == 0 || idx == ratings.length - 1);
last_rating = idx == ratings.length - 1
rating.edge = (idx == 0 || last_rating);
next_rating = ratings[idx+1];
rating_min = (next_rating&.points || 0);
rating_match = assessment_rating && assessment_rating[:points] == rating.points
......@@ -111,27 +112,30 @@
class="rating <%= "edge_rating" if rating.edge %>
<%= "infinitesimal" if rating_min.try(:to_f) == rating.points.try(:to_f) %>
<%= "selected" if selected %>"
<div class="container">
<% if !learning_outcome_criterion %>
<div class="editing links">
<a href="#" class="edit_rating_link"><i class="icon-edit standalone-icon"></i><span class="screenreader-only"><%= t 'Edit rating' %></span></a>
<a href="#" class="delete_rating_link"><i class="icon-trash standalone-icon" ></i><span class="screenreader-only"><%= t 'Delete rating' %></span></a>
>
<div class="container">
<div class="rating-main">
<% if !learning_outcome_criterion %>
<div class="editing links">
<a href="#" class="edit_rating_link"><i class="icon-edit standalone-icon"></i><span class="screenreader-only"><%= t 'Edit rating' %></span></a>
<a href="#" class="delete_rating_link"><i class="icon-trash standalone-icon" ></i><span class="screenreader-only"><%= t 'Delete rating' %></span></a>
</div>
<div class="clear"></div>
<% end %>
<span class="nobr toggle_for_hide_points <%= rubric_association&.hide_points ? 'hidden' : '' %>">
<span class="points"><%= n(rating.points) %></span>
<span class="range_rating" style="<%= hidden if !use_range %>"><%= t('to') %> ><span class="min_points"><%= n(rating_min) %></span></span> <%= t('pts') %>
</span>
<div class="description rating_description_value"><%= rating.description %></div>
<div class="rating_long_description small_description"><%= rating.long_description %></div>
<span class="rating_id" style="display: none;"><%= rating && rating.id %></span>
</div>
<div class="clear"></div>
<% end %>
<span class="nobr toggle_for_hide_points <%= rubric_association&.hide_points ? 'hidden' : '' %>">
<span class="points"><%= n(rating.points) %></span>
<span class="range_rating" style="<%= hidden if !use_range %>"><%= t('to') %> ><span class="min_points"><%= n(rating_min) %></span></span> <%= t('pts') %>
</span>
<div class="description rating_description_value"><%= rating.description %></div>
<div class="rating_long_description small_description"><%= rating.long_description %></div>
<span class="rating_id" style="display: none;"><%= rating && rating.id %></span>
<% if !learning_outcome_criterion %>
<div class="editing links add_rating_link">
<a href="#" class="add_rating_link_after" aria-label="<%= t 'Add rating' %>"><i class="icon-add icon-Solid"></i></a>
</div>
<% end %>
</div>
<% if !learning_outcome_criterion && !last_rating %>
<div class="editing links add_rating_link">
<a href="#" class="add_rating_link_after" aria-label="<%= t 'Add rating' %>"><i class="icon-add icon-Solid"></i></a>
</div>
<% end %>
</div>
</td>
<% end %>
</tr></table>
......
......@@ -538,6 +538,61 @@ describe "assignment rubrics" do
end
end
context "non-scoring rubrics" do
before(:each) do
@course.account.root_account.enable_feature!(:non_scoring_rubrics)
@assignment = @course.assignments.create(name: 'NSR assignment')
outcome_with_rubric
@rubric.associate_with(@assignment, @course, purpose: 'grading')
end
it "should create and edit a non-scoring rubric" do
get "/courses/#{@course.id}/assignments/#{@assignment.id}"
f(' .rubric_title .icon-edit').click
wait_for_ajaximations
# Hide points on rubric
f('#hide_points').click
wait_for_ajaximations
rating_points_elements = ff('.points')
rating_points_elements.each do |points|
expect(points).not_to be_displayed
end
total_points_elements = ff('[class="total_points_holder toggle_for_hide_points "]')
total_points_elements.each do |total_points|
expect(total_points).not_to be_displayed
end
# Add rating
ff('.add_rating_link_after')[4].click
expect(fj('span:contains("Edit Rating")')).to be_present
rating_score_fields = ff('#rating_form_score_label')
rating_score_fields.each do |rating_score_field|
expect(rating_score_field).not_to be_displayed
end
wait_for_ajaximations
set_value(ff('#rating_form_title')[0], 'Test rating 1')
set_value(ff('#rating_form_description')[0], 'Test description 1')
fj('span:contains("Update Rating")').click
wait_for_ajaximations
expect(ff('[class="description rating_description_value"]')[11].text).to eq "Test rating 1"
expect(ff('[class="rating_long_description small_description"]')[11].text).to eq "Test description 1"
# Save rubric
find_button("Update Rubric").click
wait_for_ajaximations
expect(ff('[class="description rating_description_value"]')[6].text).to eq "Test rating 1"
expect(ff('[class="rating_long_description small_description"]')[6].text).to eq "Test description 1"
rating_points_elements = ff('.points')
rating_points_elements.each do |points|
expect(points).not_to be_displayed
end
end
end
context "criterion copy" do
before(:each) do
@course.account.root_account.enable_feature!(:rubric_criterion_range)
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment