From 61978eb45d73812ef0a07196d2596de7f4049693 Mon Sep 17 00:00:00 2001 From: Nelson Jovel Date: Fri, 27 May 2022 21:39:44 -0700 Subject: [PATCH] Change which category is displayed when the category dropdown is changed on the analyze page. Finishes #182277818 --- app/controllers/analyze_controller.rb | 8 ++-- app/helpers/analyze_helper.rb | 4 ++ app/helpers/header_helper.rb | 2 +- .../controllers/analyze_controller.js | 9 +++++ app/javascript/controllers/index.js | 5 ++- app/views/analyze/index.html.erb | 40 +++++++++++++------ spec/system/journey_spec.rb | 22 +++++++--- spec/views/analyze/index.html.erb_spec.rb | 8 +++- 8 files changed, 72 insertions(+), 26 deletions(-) create mode 100644 app/javascript/controllers/analyze_controller.js diff --git a/app/controllers/analyze_controller.rb b/app/controllers/analyze_controller.rb index e4cd50db..0fd74c04 100644 --- a/app/controllers/analyze_controller.rb +++ b/app/controllers/analyze_controller.rb @@ -1,13 +1,11 @@ class AnalyzeController < SqmApplicationController def index - @category ||= Category.find_by_category_id(params[:category_id]) - @category ||= Category.find_by_category_id(1) + @category ||= Category.find_by_category_id(params[:category]) + @categories = Category.all.order(:category_id) - @subcategory ||= Subcategory.find_by_subcategory_id(params[:subcategory_id]) + @subcategory ||= @category.subcategories.order(:subcategory_id).first @subcategory ||= Subcategory.order(:subcategory_id).includes(%i[measures]).first @measures = @subcategory.measures.order(:measure_id).includes(%i[scales admin_data_items]) - - @academic_year ||= AcademicYear.order('range DESC').first end end diff --git a/app/helpers/analyze_helper.rb b/app/helpers/analyze_helper.rb index ababfcb5..43ad3382 100644 --- a/app/helpers/analyze_helper.rb +++ b/app/helpers/analyze_helper.rb @@ -58,4 +58,8 @@ module AnalyzeHelper def data_sources 3 end + + def analyze_category_link(district:, school:, academic_year:, category:) + "/districts/#{district.slug}/schools/#{school.slug}/analyze?year=#{academic_year.range}&category=#{category.category_id}" + end end diff --git a/app/helpers/header_helper.rb b/app/helpers/header_helper.rb index af715f02..cbcf787d 100644 --- a/app/helpers/header_helper.rb +++ b/app/helpers/header_helper.rb @@ -8,7 +8,7 @@ module HeaderHelper end def link_to_analyze(district:, school:, academic_year:) - "/districts/#{district.slug}/schools/#{school.slug}/analyze?year=#{academic_year.range}" + "/districts/#{district.slug}/schools/#{school.slug}/analyze?year=#{academic_year.range}&category=1" end def district_url_for(district:, academic_year:) diff --git a/app/javascript/controllers/analyze_controller.js b/app/javascript/controllers/analyze_controller.js new file mode 100644 index 00000000..705a265d --- /dev/null +++ b/app/javascript/controllers/analyze_controller.js @@ -0,0 +1,9 @@ +import { Controller } from "@hotwired/stimulus" + +// Connects to data-controller="analyze" +export default class extends Controller { + connect() { } + change_category(event) { + window.location = event.target.value + } +} diff --git a/app/javascript/controllers/index.js b/app/javascript/controllers/index.js index a2e968be..6a4079b7 100644 --- a/app/javascript/controllers/index.js +++ b/app/javascript/controllers/index.js @@ -2,4 +2,7 @@ // Run that command whenever you add a new controller or create them with // ./bin/rails generate stimulus controllerName -import { application } from "./application"; +import { application } from "./application" + +import AnalyzeController from "./analyze_controller.js" +application.register("analyze", AnalyzeController) diff --git a/app/views/analyze/index.html.erb b/app/views/analyze/index.html.erb index 46a44d6b..7ec0bab9 100644 --- a/app/views/analyze/index.html.erb +++ b/app/views/analyze/index.html.erb @@ -2,20 +2,36 @@

Analysis of <%= @school.name %>

<% end %> -
- diff --git a/spec/system/journey_spec.rb b/spec/system/journey_spec.rb index 7da750fd..34d455c7 100644 --- a/spec/system/journey_spec.rb +++ b/spec/system/journey_spec.rb @@ -8,6 +8,7 @@ describe 'District Admin', js: true do let(:school_in_same_district) { School.find_by_slug 'muraco-elementary-school' } let(:category) { Category.find_by_name('Teachers & Leadership') } + let(:different_category) { Category.find_by_name('School Culture') } let(:subcategory) { Subcategory.find_by_name('Teachers & The Teaching Environment') } let(:measures_for_subcategory) { Measure.where(subcategory:) } let(:scales_for_subcategory) { Scale.where(measure: measures_for_subcategory) } @@ -100,6 +101,12 @@ describe 'District Admin', js: true do click_on 'Overview' district_admin_sees_overview_content + click_on 'Analyze' + district_admin_sees_analyze_content + + go_to_different_category(different_category) + district_admin_sees_category_change + click_on 'Browse' district_admin_sees_browse_content @@ -114,9 +121,6 @@ describe 'District Admin', js: true do go_to_different_year(ay_2019_20) district_admin_sees_year_change - - got_to_analyze_page - district_admin_sees_analyze_content end end @@ -156,9 +160,7 @@ def go_to_different_year(year) select year.formatted_range, from: 'select-academic-year' end -def got_to_analyze_page - click_on 'Analyze' -end +def got_to_analyze_page; end def district_admin_sees_schools_change expected_path = "/districts/#{school_in_same_district.district.slug}/schools/#{school_in_same_district.slug}/browse/teachers-and-leadership?year=2020-21" @@ -196,3 +198,11 @@ end def district_admin_sees_analyze_content expect(page).to have_text('1:Teachers & Leadership > 1A:Teachers & The Teaching Environment') end + +def go_to_different_category(_category) + select different_category.name, from: 'select-category' +end + +def district_admin_sees_category_change + expect(page).to have_text '2A:Safety' +end diff --git a/spec/views/analyze/index.html.erb_spec.rb b/spec/views/analyze/index.html.erb_spec.rb index 3c2c91b1..23c8717b 100644 --- a/spec/views/analyze/index.html.erb_spec.rb +++ b/spec/views/analyze/index.html.erb_spec.rb @@ -51,13 +51,14 @@ describe 'analyze/index' do assign :district, create(:district) assign :school, create(:school) assign :category, category + assign :categories, [category] assign :subcategory, subcategory assign :measures, [support_for_teaching, effective_leadership, professional_qualifications] render end - context 'when all the presenters have a non-nil score' do + context 'when all the presenters have a nil score' do # let(:grouped_bar_column_presenters) do # measure = create(:measure, name: 'Display Me', measure_id: 'display-me') # scale = create(:scale, measure:) @@ -89,5 +90,10 @@ describe 'analyze/index' do expect(rendered).to have_text '1A-II' expect(rendered).to have_text '1A-III' end + + it 'displays user interface controls' do + expect(subject).to have_text 'Focus Area' + expect(subject).to have_css '#select-category' + end end end