8 changed files with 77 additions and 16 deletions
@ -0,0 +1,20 @@
|
||||
class SoftValidationsController < ApplicationController |
||||
def show |
||||
@case_log = CaseLog.find(params[:case_log_id]) |
||||
page_key = request.env["PATH_INFO"].split("/")[-2] |
||||
form = FormHandler.instance.get_form("2021_2022") |
||||
page = form.all_pages[page_key] |
||||
if page_requires_soft_validation_override?(page) |
||||
errors = @case_log.soft_errors.values.first |
||||
render json: { show: true, label: errors.message, hint: errors.hint_text } |
||||
else |
||||
render json: { show: false } |
||||
end |
||||
end |
||||
|
||||
private |
||||
|
||||
def page_requires_soft_validation_override?(page) |
||||
@case_log.soft_errors.present? && @case_log.soft_errors.keys.first == page["soft_validations"]&.keys&.first |
||||
end |
||||
end |
@ -0,0 +1,30 @@
|
||||
import { Controller } from "@hotwired/stimulus" |
||||
|
||||
export default class extends Controller { |
||||
initialize() { |
||||
let url = window.location.href + "/soft_validations" |
||||
let xhr = new XMLHttpRequest() |
||||
let div = document.getElementById("soft-validations") |
||||
xhr.open("GET", url, true) |
||||
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded") |
||||
xhr.onreadystatechange = function () { |
||||
if (this.readyState == 4 && this.status == 200) { |
||||
let response = JSON.parse(this.response) |
||||
if(response["show"]){ |
||||
div.style.display = "block" |
||||
let innerHTML = div.innerHTML |
||||
innerHTML = innerHTML.replace("soft-validations-placeholder-message", response["label"]) |
||||
innerHTML = innerHTML.replace("soft-validations-placeholder-hint-text", response["hint"]) |
||||
div.innerHTML = innerHTML |
||||
} else { |
||||
div.style.display = "none" |
||||
let buttons = document.getElementsByName(`case_log[override_net_income_validation][]`) |
||||
Object.entries(buttons).forEach(([idx, button]) => { |
||||
button.checked = false; |
||||
}) |
||||
} |
||||
} |
||||
} |
||||
xhr.send() |
||||
} |
||||
} |
@ -1,11 +1,11 @@
|
||||
<div class="govuk-form-group govuk-form-group--error"> |
||||
<%= f.govuk_check_boxes_fieldset @case_log.soft_errors.keys.first, |
||||
legend: { text: @case_log.soft_errors.values.first.message, size: "l" }, |
||||
hint: { text: @case_log.soft_errors.values.first.hint_text } do %> |
||||
<div id="soft-validations" class="govuk-form-group govuk-form-group--error" style='display:none;'> |
||||
<%= f.govuk_check_boxes_fieldset page_info["soft_validations"]&.keys&.first, |
||||
legend: { text: "soft-validations-placeholder-message", size: "l" }, |
||||
hint: { text: "soft-validations-placeholder-hint-text" }, |
||||
form_group: { "data-controller": "soft-validations" } do %> |
||||
|
||||
<%= f.govuk_check_box @case_log.soft_errors.keys.first, @case_log.soft_errors.keys.first, |
||||
label: { text: "Yes" }, |
||||
checked: f.object.send(@case_log.soft_errors.keys.first) |
||||
<%= f.govuk_check_box page_info["soft_validations"]&.keys&.first, page_info["soft_validations"]&.keys&.first, |
||||
label: { text: "Yes" } |
||||
%> |
||||
<% end %> |
||||
</div> |
||||
|
Loading…
Reference in new issue