diff --git a/app/assets/stylesheets/dashboard.scss b/app/assets/stylesheets/dashboard.scss index 3d63ce2b..d66a5f97 100644 --- a/app/assets/stylesheets/dashboard.scss +++ b/app/assets/stylesheets/dashboard.scss @@ -60,17 +60,14 @@ } .subcategory-card__circle { - min-width: 26px; - min-height: 26px; + min-width: 24px; + min-height: 24px; margin-right: 4px; - border-radius: 50%; height: 26px; width: 26px; display: flex; justify-content: center; align-items: center; - @extend .font-cabin; - @extend .weight-400; } .subcategory-card__benchmark-label { diff --git a/app/presenters/subcategory_card_presenter.rb b/app/presenters/subcategory_card_presenter.rb index aa73cc7b..8f54af8b 100644 --- a/app/presenters/subcategory_card_presenter.rb +++ b/app/presenters/subcategory_card_presenter.rb @@ -1,17 +1,28 @@ -class SubcategoryCardPresenter +class SubcategoryCardPresenter def initialize(scale:, score:) @scale = scale @score = score end - def abbreviation - abbreviations = { approval: "A", ideal: "I", growth: "G", watch: "Wa", warning: "Wr", no_zone: "N" } - abbreviations[zone.type] + def display_icon? + zone.type != :no_zone + end + + def harvey_ball_icon + icons_by_zone_type = { + ideal: "full-circle", + approval: "three-quarter-circle", + growth: "half-circle", + watch: "one-quarter-circle", + warning: "empty-circle", + no_zone: "empty-circle" + } + icons_by_zone_type[zone.type] end def color - "bg-#{zone.type}" + zone.type.to_s end private diff --git a/app/views/dashboard/_quality_framework_indicators.erb b/app/views/dashboard/_quality_framework_indicators.erb index 34214006..0cf0d053 100644 --- a/app/views/dashboard/_quality_framework_indicators.erb +++ b/app/views/dashboard/_quality_framework_indicators.erb @@ -1,3 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +

School Quality Framework Indicators

@@ -18,7 +62,12 @@ <% category_presenter.subcategories.each do |subcategory | %> <% presenter = subcategory.subcategory_card_presenter %>
-
<%= presenter.abbreviation%>
+ + <% if presenter.display_icon? %> + + <% end %> + +
<%= subcategory.name %>
<% end %> diff --git a/spec/presenters/subcategory_card_presenter_spec.rb b/spec/presenters/subcategory_card_presenter_spec.rb index 5ee875cb..2d6b529f 100644 --- a/spec/presenters/subcategory_card_presenter_spec.rb +++ b/spec/presenters/subcategory_card_presenter_spec.rb @@ -14,56 +14,89 @@ describe SubcategoryCardPresenter do context 'when the given score is in the Warning zone for the given scale' do let(:score) { 1 } - it 'returns the abbreviation of the zone' do - expect(subcategory_card_presenter.abbreviation).to eq "Wr" + + it 'returns a boolean indicating that the icon should be displayed' do + expect(subcategory_card_presenter.display_icon?).to be_truthy + end + + it 'returns the icon that represents the zone' do + expect(subcategory_card_presenter.harvey_ball_icon).to eq "empty-circle" end it 'returns the color class of the zone' do - expect(subcategory_card_presenter.color).to eq "bg-warning" + expect(subcategory_card_presenter.color).to eq "warning" end end context 'when the given score is in the Watch zone for the given scale' do let(:score) { 2 } - it 'returns the abbreviation of the zone' do - expect(subcategory_card_presenter.abbreviation).to eq "Wa" + + it 'returns a boolean indicating that the icon should be displayed' do + expect(subcategory_card_presenter.display_icon?).to be_truthy + end + + it 'returns the icon that represents the zone' do + expect(subcategory_card_presenter.harvey_ball_icon).to eq "one-quarter-circle" end it 'returns the color class of the zone' do - expect(subcategory_card_presenter.color).to eq "bg-watch" + expect(subcategory_card_presenter.color).to eq "watch" end end context 'when the given score is in the Growth zone for the given scale' do let(:score) { 3 } - it 'returns the abbreviation of the zone' do - expect(subcategory_card_presenter.abbreviation).to eq "G" + + it 'returns a boolean indicating that the icon should be displayed' do + expect(subcategory_card_presenter.display_icon?).to be_truthy + end + + it 'returns the icon that represents the zone' do + expect(subcategory_card_presenter.harvey_ball_icon).to eq "half-circle" end it 'returns the color class of the zone' do - expect(subcategory_card_presenter.color).to eq "bg-growth" + expect(subcategory_card_presenter.color).to eq "growth" end end context 'when the given score is in the Approval zone for the given scale' do let(:score) { 4 } - it 'returns the abbreviation of the zone' do - expect(subcategory_card_presenter.abbreviation).to eq "A" + + it 'returns a boolean indicating that the icon should be displayed' do + expect(subcategory_card_presenter.display_icon?).to be_truthy + end + + it 'returns the icon that represents the zone' do + expect(subcategory_card_presenter.harvey_ball_icon).to eq "three-quarter-circle" end it 'returns the color class of the zone' do - expect(subcategory_card_presenter.color).to eq "bg-approval" + expect(subcategory_card_presenter.color).to eq "approval" end end context 'when the given score is in the Ideal zone for the given scale' do let(:score) { 5 } - it 'returns the abbreviation of the zone' do - expect(subcategory_card_presenter.abbreviation).to eq "I" + + it 'returns a boolean indicating that the icon should be displayed' do + expect(subcategory_card_presenter.display_icon?).to be_truthy + end + + it 'returns the icon that represents the zone' do + expect(subcategory_card_presenter.harvey_ball_icon).to eq "full-circle" end it 'returns the color class of the zone' do - expect(subcategory_card_presenter.color).to eq "bg-ideal" + expect(subcategory_card_presenter.color).to eq "ideal" + end + end + + context 'when the given score is invalid for the given scale' do + let(:score) { 0 } + + it 'returns a boolean indicating that the icon should be displayed' do + expect(subcategory_card_presenter.display_icon?).to be_falsey end end end diff --git a/spec/presenters/subcategory_presenter_spec.rb b/spec/presenters/subcategory_presenter_spec.rb index f4eaf92a..ba84cc66 100644 --- a/spec/presenters/subcategory_presenter_spec.rb +++ b/spec/presenters/subcategory_presenter_spec.rb @@ -33,10 +33,6 @@ describe SubcategoryPresenter do expect(subcategory_presenter.gauge_presenter.title).to eq 'Growth' end - it 'returns a measure presenter for each measure in the subcategory' do - # expect(category_presenter.subcategories.map(&:name)).to eq ['A subcategory', 'Another subcategory'] - end - def create_survey_item_responses_for_different_years_and_schools(survey_item) create(:survey_item_response, survey_item: survey_item, school: school, likert_score: 1) create(:survey_item_response, survey_item: survey_item, academic_year: academic_year, likert_score: 1)