Let apply_check_all search for the checkboxes, not the photo cards.
This commit is contained in:
parent
7762a8ff07
commit
4569e7848c
2 changed files with 39 additions and 8 deletions
|
@ -55,14 +55,37 @@ function save_clipboard()
|
|||
// Card management /////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
photo_clipboard.apply_check =
|
||||
function apply_check(photo_card)
|
||||
function apply_check(checkbox)
|
||||
{
|
||||
/*
|
||||
Given a photo card div, set its checkbox to the correct value based on
|
||||
whether the clipboard contains this card's ID.
|
||||
Check the checkbox if this photo ID is on the clipboard.
|
||||
|
||||
There are two valid scenarios:
|
||||
1. The checkbox is a child of a photo_card div, and that div has data-id
|
||||
containing the photo id. That div will receive the CSS class
|
||||
photo_card_selected or photo_card_unselected.
|
||||
This is the most common usage.
|
||||
2. The checkbox has its own data-photo-id, and the parent element will be
|
||||
ignored. This is used only if the checkbox needs to be displayed outside
|
||||
of a photo card, such as on the /photo/id page where it makes no sense
|
||||
to put a photo card of the photo you're already looking at.
|
||||
*/
|
||||
let checkbox = photo_card.getElementsByClassName("photo_card_selector_checkbox")[0];
|
||||
checkbox.checked = photo_clipboard.clipboard.has(photo_card.dataset.id);
|
||||
let photo_id;
|
||||
let photo_card;
|
||||
if (checkbox.dataset.photoId)
|
||||
{
|
||||
photo_id = checkbox.dataset.photoId;
|
||||
}
|
||||
else
|
||||
{
|
||||
photo_card = checkbox.parentElement;
|
||||
photo_id = photo_card.dataset.id;
|
||||
}
|
||||
checkbox.checked = photo_clipboard.clipboard.has(photo_id);
|
||||
if (! photo_card)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (checkbox.checked)
|
||||
{
|
||||
photo_card.classList.remove("photo_card_unselected");
|
||||
|
@ -82,8 +105,11 @@ function apply_check_all()
|
|||
Run through all the photo cards on the page and set their checkbox to the
|
||||
correct value.
|
||||
*/
|
||||
let photo_divs = Array.from(document.getElementsByClassName("photo_card"));
|
||||
photo_divs.forEach(photo_clipboard.apply_check);
|
||||
let checkboxes = document.getElementsByClassName("photo_card_selector_checkbox");
|
||||
for (let checkbox of checkboxes)
|
||||
{
|
||||
photo_clipboard.apply_check(checkbox);
|
||||
}
|
||||
}
|
||||
|
||||
photo_clipboard._action_select =
|
||||
|
|
|
@ -195,7 +195,12 @@
|
|||
<li><a href="{{photo|file_link}}?download=true&original_filename=true">Download as original filename</a></li>
|
||||
<li><a href="{{photo|file_link}}?download=true">Download as {{photo.id}}.{{photo.extension}}</a></li>
|
||||
<li><button id="refresh_metadata_button" class="green_button button_with_spinner" onclick="return refresh_metadata_form();">refresh</button></li>
|
||||
<li><label class="photo_card" data-id="{{photo.id}}"><input type="checkbox" class="photo_card_selector_checkbox" onclick="return photo_clipboard.on_photo_select(event);"/>Clipboard</label></li>
|
||||
<li>
|
||||
<label>
|
||||
<input type="checkbox" class="photo_card_selector_checkbox" data-photo-id="{{photo.id}}" onchange="return photo_clipboard.on_photo_select(event);"
|
||||
/>Clipboard
|
||||
</label>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue