Move album drag-drop functions to cards.js.
This commit is contained in:
parent
ce8c367901
commit
6c2da7a6f0
3 changed files with 80 additions and 72 deletions
|
@ -3,6 +3,71 @@ const cards = {};
|
|||
/******************************************************************************/
|
||||
cards.albums = {};
|
||||
|
||||
cards.albums.drag_start =
|
||||
function drag_start(event)
|
||||
{
|
||||
const album_card = event.target.closest(".album_card");
|
||||
event.dataTransfer.setData("text/plain", album_card.id);
|
||||
}
|
||||
|
||||
cards.albums.drag_end =
|
||||
function drag_end(event)
|
||||
{
|
||||
}
|
||||
|
||||
cards.albums.drag_over =
|
||||
function drag_over(event)
|
||||
{
|
||||
event.preventDefault();
|
||||
}
|
||||
|
||||
cards.albums.drag_drop =
|
||||
function drag_drop(event)
|
||||
{
|
||||
const child = document.getElementById(event.dataTransfer.getData("text"));
|
||||
const child_id = child.dataset.id;
|
||||
const parent = event.currentTarget;
|
||||
const parent_id = parent.dataset.id;
|
||||
event.dataTransfer.clearData();
|
||||
|
||||
if (child_id == parent_id)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
let prompt;
|
||||
if (parent_id === "root")
|
||||
{
|
||||
const child_title = child.querySelector('.album_card_title').textContent.trim();
|
||||
prompt = `Remove child\n${child_title}?`;
|
||||
}
|
||||
else
|
||||
{
|
||||
const child_title = child.querySelector('.album_card_title').textContent.trim();
|
||||
const parent_title = parent.querySelector('.album_card_title').textContent.trim();
|
||||
prompt = `Move\n${child_title}\ninto\n${parent_title}?`;
|
||||
}
|
||||
|
||||
if (! confirm(prompt))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (parent_id === "root")
|
||||
{
|
||||
api.albums.remove_child(ALBUM_ID, child_id, common.refresh_or_alert);
|
||||
}
|
||||
else if (ALBUM_ID)
|
||||
{
|
||||
api.albums.add_child(parent_id, child_id, null);
|
||||
api.albums.remove_child(ALBUM_ID, child_id, common.refresh_or_alert);
|
||||
}
|
||||
else
|
||||
{
|
||||
api.albums.add_child(parent_id, child_id, common.refresh_or_alert);
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
cards.bookmarks = {};
|
||||
|
||||
|
|
|
@ -95,6 +95,7 @@ h2, h3
|
|||
{% if theme %}<link rel="stylesheet" href="/static/css/theme_{{theme}}.css">{% endif %}
|
||||
<script src="/static/js/common.js"></script>
|
||||
<script src="/static/js/api.js"></script>
|
||||
<script src="/static/js/cards.js"></script>
|
||||
|
||||
{{shared_css()}}
|
||||
</head>
|
||||
|
@ -464,63 +465,5 @@ function create_album_form(event)
|
|||
const parent_id = ALBUM_ID;
|
||||
api.albums.create(title, parent_id, api.albums.callback_follow);
|
||||
}
|
||||
|
||||
function on_album_drag_start(event)
|
||||
{
|
||||
const album_card = event.target.closest(".album_card");
|
||||
event.dataTransfer.setData("text/plain", album_card.id);
|
||||
}
|
||||
function on_album_drag_end(event)
|
||||
{
|
||||
}
|
||||
function on_album_drag_over(event)
|
||||
{
|
||||
event.preventDefault();
|
||||
}
|
||||
function on_album_drag_drop(event)
|
||||
{
|
||||
const child = document.getElementById(event.dataTransfer.getData("text"));
|
||||
const child_id = child.dataset.id;
|
||||
const parent = event.currentTarget;
|
||||
const parent_id = parent.dataset.id;
|
||||
event.dataTransfer.clearData();
|
||||
|
||||
if (child_id == parent_id)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
let prompt;
|
||||
if (parent_id === "root")
|
||||
{
|
||||
const child_title = child.querySelector('.album_card_title').textContent.trim();
|
||||
prompt = `Remove child\n${child_title}?`;
|
||||
}
|
||||
else
|
||||
{
|
||||
const child_title = child.querySelector('.album_card_title').textContent.trim();
|
||||
const parent_title = parent.querySelector('.album_card_title').textContent.trim();
|
||||
prompt = `Move\n${child_title}\ninto\n${parent_title}?`;
|
||||
}
|
||||
|
||||
if (! confirm(prompt))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (parent_id === "root")
|
||||
{
|
||||
api.albums.remove_child(ALBUM_ID, child_id, common.refresh_or_alert);
|
||||
}
|
||||
else if (ALBUM_ID)
|
||||
{
|
||||
api.albums.add_child(parent_id, child_id, null);
|
||||
api.albums.remove_child(ALBUM_ID, child_id, common.refresh_or_alert);
|
||||
}
|
||||
else
|
||||
{
|
||||
api.albums.add_child(parent_id, child_id, common.refresh_or_alert);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</html>
|
||||
|
|
|
@ -8,32 +8,32 @@
|
|||
id="{{id}}"
|
||||
class="album_card album_card_{{view}}"
|
||||
data-id="{{'root' if album == 'root' else album.id}}"
|
||||
ondragstart="return on_album_drag_start(event);"
|
||||
ondragend="return on_album_drag_end(event);"
|
||||
ondragover="return on_album_drag_over(event);"
|
||||
ondrop="return on_album_drag_drop(event);"
|
||||
ondragstart="return cards.albums.drag_start(event);"
|
||||
ondragend="return cards.albums.drag_end(event);"
|
||||
ondragover="return cards.albums.drag_over(event);"
|
||||
ondrop="return cards.albums.drag_drop(event);"
|
||||
{% if album != "root" and draggable %}
|
||||
draggable=true
|
||||
{% endif %}
|
||||
>
|
||||
{% if album == "root" %}
|
||||
<a class="album_card_thumbnail" href="/albums{{viewparam}}">
|
||||
<a class="album_card_thumbnail" href="/albums{{viewparam}}" draggable="false">
|
||||
{% else %}
|
||||
<a class="album_card_thumbnail" href="/album/{{album.id}}{{viewparam}}">
|
||||
<a class="album_card_thumbnail" href="/album/{{album.id}}{{viewparam}}" draggable="false">
|
||||
{% endif %}
|
||||
{% if album.thumbnail_photo %}
|
||||
{% set thumbnail_src = "/thumbnail/" + album.thumbnail_photo.id + ".jpg" %}
|
||||
{% else %}
|
||||
{% set thumbnail_src = "/static/basic_thumbnails/album.png" %}
|
||||
{% endif %}
|
||||
<img src="{{thumbnail_src}}"/>
|
||||
<img src="{{thumbnail_src}}" draggable="false"/>
|
||||
</a>
|
||||
|
||||
<div class="album_card_title">
|
||||
{% if album == "root" %}
|
||||
<a href="/albums{{viewparam}}">Albums</a>
|
||||
<a href="/albums{{viewparam}}" draggable="false">Albums</a>
|
||||
{% else %}
|
||||
<a href="/album/{{album.id}}{{viewparam}}">{{album.display_name}}</a>
|
||||
<a href="/album/{{album.id}}{{viewparam}}" draggable="false">{{album.display_name}}</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
|
|
Loading…
Reference in a new issue