From ee05d27b57cc56d754230869cae81eb26406d9d1 Mon Sep 17 00:00:00 2001 From: Manny Dinssa <44172848+Dinssa@users.noreply.github.com> Date: Wed, 5 Mar 2025 15:44:20 +0000 Subject: [PATCH] Update new org page with js --- app/frontend/controllers/index.js | 3 +++ .../controllers/organisations_controller.js | 17 +++++++++++++++++ app/helpers/organisations_helper.rb | 8 +++++++- app/views/organisations/new.html.erb | 4 +++- 4 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 app/frontend/controllers/organisations_controller.js diff --git a/app/frontend/controllers/index.js b/app/frontend/controllers/index.js index 944e32e2d..771532c3a 100644 --- a/app/frontend/controllers/index.js +++ b/app/frontend/controllers/index.js @@ -19,6 +19,8 @@ import FilterLayoutController from './filter_layout_controller.js' import TabsController from './tabs_controller.js' +import OrganisationsController from './organisations_controller.js' + application.register('accessible-autocomplete', AccessibleAutocompleteController) application.register('conditional-filter', ConditionalFilterController) application.register('conditional-question', ConditionalQuestionController) @@ -27,3 +29,4 @@ application.register('numeric-question', NumericQuestionController) application.register('filter-layout', FilterLayoutController) application.register('search', SearchController) application.register('tabs', TabsController) +application.register('organisations', OrganisationsController ) diff --git a/app/frontend/controllers/organisations_controller.js b/app/frontend/controllers/organisations_controller.js new file mode 100644 index 000000000..0a8934418 --- /dev/null +++ b/app/frontend/controllers/organisations_controller.js @@ -0,0 +1,17 @@ +import { Controller } from '@hotwired/stimulus' + +export default class extends Controller { + updateProfitStatusOptions(event) { + const providerType = event.target.value; + const profitStatusSelect = document.getElementById('organisation-profit-status-field'); + + if (profitStatusSelect) { + profitStatusSelect.disabled = false; + + if (providerType === "LA") { + profitStatusSelect.value = "3"; + profitStatusSelect.disabled = true; + } + } + } +} diff --git a/app/helpers/organisations_helper.rb b/app/helpers/organisations_helper.rb index a3a6232dc..90103cee7 100644 --- a/app/helpers/organisations_helper.rb +++ b/app/helpers/organisations_helper.rb @@ -79,6 +79,12 @@ module OrganisationsHelper end def group_organisation_options - [OpenStruct.new(id: "", name: "")] + Organisation.visible.map { |org| OpenStruct.new(id: org.id, name: org.name) } + null_option = [OpenStruct.new(id: "", name: "Select an option")] + organisations = Organisation.visible.map { |org| OpenStruct.new(id: org.id, name: org.name) } + null_option + organisations + end + + def profit_status_options + Organisation::PROFIT_STATUS.map { |key, value| OpenStruct.new(id: value, name: key.to_s.humanize) } end end diff --git a/app/views/organisations/new.html.erb b/app/views/organisations/new.html.erb index b0385f330..b338d23bd 100644 --- a/app/views/organisations/new.html.erb +++ b/app/views/organisations/new.html.erb @@ -48,6 +48,8 @@ :id, :name, label: { text: "Organisation type", size: "m" }, + "data-controller": "organisations", + "data-action": "change->organisations#updateProfitStatusOptions", options: { disabled: [""], selected: @organisation.provider_type || "" } %> <%= f.govuk_collection_radio_buttons :holds_own_stock, @@ -75,7 +77,7 @@ <% end %> <%= f.govuk_collection_select :profit_status, - Organisation::PROFIT_STATUS.map { |key, value| OpenStruct.new(id: value, name: key.to_s.humanize) }, + profit_status_options, :id, :name, label: { text: "Is the organisation for-profit?", size: "m" },