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"> |
<div id="soft-validations" class="govuk-form-group govuk-form-group--error" style='display:none;'> |
||||||
<%= f.govuk_check_boxes_fieldset @case_log.soft_errors.keys.first, |
<%= f.govuk_check_boxes_fieldset page_info["soft_validations"]&.keys&.first, |
||||||
legend: { text: @case_log.soft_errors.values.first.message, size: "l" }, |
legend: { text: "soft-validations-placeholder-message", size: "l" }, |
||||||
hint: { text: @case_log.soft_errors.values.first.hint_text } do %> |
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, |
<%= f.govuk_check_box page_info["soft_validations"]&.keys&.first, page_info["soft_validations"]&.keys&.first, |
||||||
label: { text: "Yes" }, |
label: { text: "Yes" } |
||||||
checked: f.object.send(@case_log.soft_errors.keys.first) |
|
||||||
%> |
%> |
||||||
<% end %> |
<% end %> |
||||||
</div> |
</div> |
||||||
|
Loading…
Reference in new issue