Rewrite photo_clipboard actions to take ids instead of cards.
Following the previous commit about the checkbox on the /photo page, this fixes all of the code assuming that we're dealing with photo_card divs, the majority of which was doing nothing but accessing the id.
This commit is contained in:
parent
6184476485
commit
8aa2b8dd3c
1 changed files with 29 additions and 19 deletions
|
@ -112,12 +112,6 @@ function apply_check_all()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
photo_clipboard._action_select =
|
|
||||||
function(photo_div){photo_clipboard.clipboard.add(photo_div.dataset.id)}
|
|
||||||
|
|
||||||
photo_clipboard._action_unselect =
|
|
||||||
function(photo_div){photo_clipboard.clipboard.delete(photo_div.dataset.id)}
|
|
||||||
|
|
||||||
photo_clipboard.previous_photo_select = null;
|
photo_clipboard.previous_photo_select = null;
|
||||||
|
|
||||||
photo_clipboard.on_photo_select =
|
photo_clipboard.on_photo_select =
|
||||||
|
@ -130,20 +124,26 @@ function on_photo_select(event)
|
||||||
Those middle items will be set to the same state as the new state of the
|
Those middle items will be set to the same state as the new state of the
|
||||||
clicked item.
|
clicked item.
|
||||||
*/
|
*/
|
||||||
if (event.target.checked)
|
const checkbox = event.target;
|
||||||
|
let action;
|
||||||
|
if (checkbox.checked)
|
||||||
{
|
{
|
||||||
action = photo_clipboard._action_select;
|
action = photo_clipboard.clipboard.add.bind(photo_clipboard.clipboard);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
action = photo_clipboard._action_unselect;
|
action = photo_clipboard.clipboard.delete.bind(photo_clipboard.clipboard);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event.shiftKey && photo_clipboard.previous_photo_select)
|
if (! checkbox.parentElement.classList.contains("photo_card"))
|
||||||
{
|
{
|
||||||
let current_photo_div = event.target.parentElement;
|
action(checkbox.dataset.photoId);
|
||||||
let previous_photo_div = photo_clipboard.previous_photo_select.target.parentElement;
|
}
|
||||||
let photo_divs = Array.from(current_photo_div.parentElement.children);
|
else if (event.shiftKey && photo_clipboard.previous_photo_select)
|
||||||
|
{
|
||||||
|
let current_photo_div = checkbox.parentElement;
|
||||||
|
let previous_photo_div = photo_clipboard.previous_photo_select;
|
||||||
|
let photo_divs = Array.from(current_photo_div.parentElement.getElementsByClassName("photo_card"));
|
||||||
|
|
||||||
let current_index = photo_divs.indexOf(current_photo_div);
|
let current_index = photo_divs.indexOf(current_photo_div);
|
||||||
let previous_index = photo_divs.indexOf(previous_photo_div);
|
let previous_index = photo_divs.indexOf(previous_photo_div);
|
||||||
|
@ -160,14 +160,18 @@ function on_photo_select(event)
|
||||||
slice = photo_divs.slice(left, right + 1);
|
slice = photo_divs.slice(left, right + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
slice.forEach(action);
|
for (let photo_div of slice)
|
||||||
|
{
|
||||||
|
action(photo_div.dataset.id);
|
||||||
|
}
|
||||||
|
photo_clipboard.previous_photo_select = current_photo_div;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
let photo_div = event.target.parentElement;
|
let photo_div = checkbox.parentElement;
|
||||||
action(photo_div);
|
action(photo_div.dataset.id);
|
||||||
|
photo_clipboard.previous_photo_select = photo_div;
|
||||||
}
|
}
|
||||||
photo_clipboard.previous_photo_select = event;
|
|
||||||
photo_clipboard.save_clipboard();
|
photo_clipboard.save_clipboard();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,7 +179,10 @@ photo_clipboard.select_all_photos =
|
||||||
function select_all_photos()
|
function select_all_photos()
|
||||||
{
|
{
|
||||||
let photo_divs = Array.from(document.getElementsByClassName("photo_card"));
|
let photo_divs = Array.from(document.getElementsByClassName("photo_card"));
|
||||||
photo_divs.forEach(photo_clipboard._action_select);
|
for (let photo_div of photo_divs)
|
||||||
|
{
|
||||||
|
photo_clipboard.clipboard.add(photo_div.dataset.id);
|
||||||
|
}
|
||||||
photo_clipboard.apply_check_all();
|
photo_clipboard.apply_check_all();
|
||||||
photo_clipboard.save_clipboard();
|
photo_clipboard.save_clipboard();
|
||||||
}
|
}
|
||||||
|
@ -184,7 +191,10 @@ photo_clipboard.unselect_all_photos =
|
||||||
function unselect_all_photos()
|
function unselect_all_photos()
|
||||||
{
|
{
|
||||||
let photo_divs = Array.from(document.getElementsByClassName("photo_card"));
|
let photo_divs = Array.from(document.getElementsByClassName("photo_card"));
|
||||||
photo_divs.forEach(photo_clipboard._action_unselect);
|
for (let photo_div of photo_divs)
|
||||||
|
{
|
||||||
|
photo_clipboard.clipboard.delete(photo_div.dataset.id);
|
||||||
|
}
|
||||||
photo_clipboard.apply_check_all()
|
photo_clipboard.apply_check_all()
|
||||||
photo_clipboard.previous_photo_select = null;
|
photo_clipboard.previous_photo_select = null;
|
||||||
photo_clipboard.save_clipboard();
|
photo_clipboard.save_clipboard();
|
||||||
|
|
Loading…
Reference in a new issue