Skip to content

Commit

Permalink
now possible to delete session tracks by hovering and pressing delete…
Browse files Browse the repository at this point in the history
… key
  • Loading branch information
sebastsg committed Nov 1, 2019
1 parent 579fb8e commit a9366ff
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 0 deletions.
17 changes: 17 additions & 0 deletions db/procedures/delete_session_track.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
create or replace procedure delete_session_track (
in in_user_name varchar(32),
in in_num int
)
language plpgsql
as $$
begin
delete from "session_track"
where "user_name" = in_user_name
and "num" = in_num;

update "session_track"
set "num" = "num" - 1
where "user_name" = in_user_name
and "num" > in_num;
end;
$$;
12 changes: 12 additions & 0 deletions html/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -414,7 +414,19 @@ document.addEventListener('click', event => {
});

document.addEventListener('keyup', event => {
const Del = 46;
const A = 65;
let playlist = document.querySelector('#playlist ul');
if (event.which === Del && !playlist.classList.contains('is-deleting-track')) {
let hovered = playlist.querySelector('li:hover');
if (hovered !== null) {
playlist.classList.add('is-deleting-track');
ajaxPost('/form/delete-session-track', {
num: Array.from(playlist.children).indexOf(hovered) + 1
}, () => playlist.classList.remove('is-deleting-track'));
hovered.remove();
}
}
if (event.ctrlKey && event.altKey && event.which == A) {
ajaxPost('/form/toggle-edit-mode', {}, () => location.reload());
}
Expand Down
1 change: 1 addition & 0 deletions src/route.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ void route_form_import(struct http_data* data);
void route_form_upload(struct http_data* data);
void route_form_add_group(struct http_data* data);
void route_form_add_session_track(struct route_parameters* parameters);
void route_form_delete_session_track(struct route_parameters* parameters);
void route_form_add_group_tag(struct route_result* result, struct http_data* data);
void route_form_delete_group_tag(struct route_result* result, struct http_data* data);

Expand Down
2 changes: 2 additions & 0 deletions src/route_form.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ void route_form_with_session(const char* form, struct route_parameters* paramete
}
} else if (!strcmp(form, "add-session-track")) {
route_form_add_session_track(parameters);
} else if (!strcmp(form, "delete-session-track")) {
route_form_delete_session_track(parameters);
} else if (!strcmp(form, "download-remote")) {
if (has_privilege(parameters->session, PRIVILEGE_UPLOAD_ALBUM)) {
route_form_download_remote(&parameters->data);
Expand Down
10 changes: 10 additions & 0 deletions src/route_form_add_session_track.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,13 @@ void route_form_add_session_track(struct route_parameters* parameters) {
parameters->resource = resource;
route_render(parameters);
}

void route_form_delete_session_track(struct route_parameters* parameters) {
const char* num = http_data_string(&parameters->data, "num");
if (*num) {
const char* params[] = { parameters->session->name, num };
PQclear(call_procedure("call delete_session_track", params, 2));
} else {
print_error("Index must be specified when deleting a session track");
}
}

0 comments on commit a9366ff

Please sign in to comment.