Skip to content

Commit

Permalink
Checkbox is selected when a single item form
Browse files Browse the repository at this point in the history
more updates in requetsjs
  • Loading branch information
christinach committed May 11, 2023
1 parent 0778b3d commit 2356501
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 40 deletions.
82 changes: 49 additions & 33 deletions app/assets/javascripts/requests/requests.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,22 +74,6 @@ $(function() {
return mode;
}

function deliveryMode () {
const radios = document.querySelectorAll('input[type=radio][name^="requestable[][delivery_mode"]');

function radioButtons () {
let mode;

if (radios.length === 0) {
mode = deMode();
} else {
mode = radioOfRadioBtns(radios);
}
return mode;
}
return radioButtons;
}

function deliveryLocation () {
const requestable_pickups_options = document.querySelectorAll('select[name^="requestable[][pick_up"] option');

Expand All @@ -111,29 +95,48 @@ $(function() {
return requestablePickups;
}

function requestable(changed) {
let selected;
const parent = $(changed).closest('[id^="request_"]');
const checkboxes = document.querySelectorAll('input[type=checkbox][id^="requestable_selected"]:checked');
const radio_checked = document.querySelectorAll('input[type=radio][name^="requestable[][delivery_mode"]:checked');
// const checkboxes = document.querySelector('input[type=checkbox][id^="requestable_selected"]:checked');
// const parent_of_selected_checkbox = checkboxes.parentNode.closest('[id^="request_"]')
// parent_of_selected_checkbox.children
function deliveryMode () {
const radios = document.querySelectorAll('input[type=radio][name^="requestable[][delivery_mode"]');

function radioButtons () {
let mode;

if (checkboxes.length > 0) {
if (radios.length === 0) {
const deLocation = deliveryLocation();
mode = deLocation();
} else {
mode = radioOfRadioBtns(radios);
}
return mode;
}
return radioButtons;
}

const deLocation_ref = deliveryLocation();
const deMode_ref = deliveryMode();

function requestable(el) {
const parent = $(el).closest('[id^="request_"]');
let selected = parent.find('input[type=checkbox][id^="requestable_selected"').is(':checked');
let deLocation = deLocation_ref();
let deMode = deMode_ref();

const radio_checked = parent.find('input[type=radio][name^="requestable[][delivery_mode"]:checked');
const radio = parent.find('input[type=radio][name^="requestable[][delivery_mode"]');
const requestable_pickups_options = parent.find('select[name^="requestable[][pick_up"] option');
if (selected) {
selected = true;
} else {
selected = false;
}
const deLocation_ref = deliveryLocation();
const deMode_ref = deliveryMode();
let deLocation = deLocation_ref();
let deMode = deMode_ref();

// Special case for edd form. Needs to set delivery location so that the request button is active.
if (radio_checked.length === 1 && radio_checked[0].dataset['target'].startsWith('#fields-eed')) {
deLocation = true;
}
if (selected && requestable_pickups_options.length === 0 && radio.length === 0) {
deMode = true;
}
if (selected && deMode && deLocation) {
activateRequestButton();
} else {
Expand All @@ -143,12 +146,25 @@ $(function() {

(function () {
const checkbox_nodelist = document.querySelectorAll('[id^="requestable_selected"]');

// Decision made: If there is only one item then the checkbox is selected
let selected;

if (checkbox_nodelist.length === 1) {
checkbox_nodelist[0].checked = true;
requestable();
const radio_checked = document.querySelectorAll('input[type=radio][name^="requestable[][delivery_mode"]:checked');
selected = true;
let deLocation = deLocation_ref();
const deMode = deMode_ref();

// Special case for edd form. Needs to set delivery location so that the request button is active.
if (radio_checked.length === 1 && radio_checked[0].dataset['target'].startsWith('#fields-eed')) {
deLocation = true;
}
if (selected && deMode && deLocation) {
activateRequestButton();
} else {
deactivateRequestButton();
}
} else {
deactivateRequestButton();
requestable();
}
})();
Expand Down
10 changes: 3 additions & 7 deletions app/helpers/requests/application_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ def suppress_login(request)

def item_checkbox(requestable, single_item_form)
disabled = !requestable.will_submit_via_form?
check_box_tag "requestable[][selected]", true, check_box_selected(requestable, disabled, single_item_form), class: 'request--select', disabled:, aria: { labelledby: "title enum_#{requestable.preferred_request_id}" }, id: "requestable_selected_#{requestable.preferred_request_id}"
check_box_tag "requestable[][selected]", true, check_box_selected(disabled, single_item_form), class: 'request--select', disabled:, aria: { labelledby: "title enum_#{requestable.preferred_request_id}" }, id: "requestable_selected_#{requestable.preferred_request_id}"
end

## If any requestable items have a temp location assume everything at the holding is in a temp loc?
Expand All @@ -218,13 +218,9 @@ def current_location_label(mfhd_label, requestable_list)
"#{label} #{requestable_list.first.call_number}"
end

def check_box_selected(requestable, disabled, single_item_form)
def check_box_selected(disabled, single_item_form)
if single_item_form
if requestable.charged? || requestable.services.empty?
false
else
!disabled
end
!disabled
else
false
end
Expand Down

0 comments on commit 2356501

Please sign in to comment.