From 8d111b6de711646d49152c15ac0549b629244f36 Mon Sep 17 00:00:00 2001
From: krateng <git.noreply@krateng.ch>
Date: Thu, 7 Apr 2022 20:23:03 +0200
Subject: [PATCH] Improved design of scrobble delete functionality

---
 maloja/web/jinja/partials/scrobbles.jinja | 19 ++++++++------
 maloja/web/static/css/maloja.css          | 30 +++++++++++++++++------
 maloja/web/static/js/edit.js              | 10 ++++++++
 3 files changed, 44 insertions(+), 15 deletions(-)
 create mode 100644 maloja/web/static/js/edit.js

diff --git a/maloja/web/jinja/partials/scrobbles.jinja b/maloja/web/jinja/partials/scrobbles.jinja
index bc949cf..1fb1cbd 100644
--- a/maloja/web/jinja/partials/scrobbles.jinja
+++ b/maloja/web/jinja/partials/scrobbles.jinja
@@ -6,6 +6,9 @@
 {% import 'snippets/entityrow.jinja' as entityrow %}
 
 
+<script src="/edit.js"></script>
+
+
 <table class='list'>
 	{% for s in scrobbles -%}
 		{%- if loop.index0 >= firstindex and loop.index0 < lastindex -%}
@@ -16,15 +19,17 @@
 
 			<td class='delete_area'>
 				<span class="confirmactions">
-					<button class="smallbutton warning">Confirm</button>
-					<button class="smallbutton" onclick="this.parentElement.parentElement.classList.remove('active')">Cancel</button>
+					<button class="smallbutton warning" onclick="deleteScrobble({{ s.time }},this)">Confirm</button>
+					<button class="smallbutton" onclick="toggleDeleteConfirm(this)">Cancel</button>
 				</span>
 
-				<div class='deleteicon clickable_icon danger' onclick="this.parentElement.classList.add('active')">
-					<svg style="width:14px;height:14px" viewBox="0 0 24 24">
-						<path d="M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z" />
-					</svg>
-				</div>
+				<span class="initializeactions">
+					<div class='deleteicon clickable_icon danger' onclick="toggleDeleteConfirm(this)">
+						<svg style="width:14px;height:14px" viewBox="0 0 24 24">
+							<path d="M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z" />
+						</svg>
+					</div>
+				</span>
 
 			</td>
 			{% endif %}
diff --git a/maloja/web/static/css/maloja.css b/maloja/web/static/css/maloja.css
index cabb06a..3056671 100644
--- a/maloja/web/static/css/maloja.css
+++ b/maloja/web/static/css/maloja.css
@@ -592,17 +592,31 @@ table.list td.delete_area {
 	width:7em;
 }
 
-table.list td.delete_area span.confirmactions {
-	display:none;
+/* rows that can be deleted in some form
+	'active' class on the delete area cell to toggle confirm prompt
+	'removed' class on the whole row to delete
+*/
+table.list tr td.delete_area span.confirmactions {
+	display: none;
 }
-table.list td.delete_area.active span.confirmactions {
-	display:inline-block;
+table.list tr td.delete_area span.initializeactions {
+	display: initial;
 }
-table.list td.delete_area div.deleteicon {
-	display:inline-block;
+table.list tr td.delete_area.active span.confirmactions {
+	display: initial;
 }
-table.list td.delete_area.active div.deleteicon {
-	display:none;
+table.list tr td.delete_area.active span.initializeactions {
+	display: none;
+}
+table.list tr.removed td.delete_area span.confirmactions {
+	display: none;
+}
+table.list tr.removed td.delete_area span.initializeactions {
+	display: none;
+}
+table.list tr.removed {
+	text-decoration: line-through;
+	opacity:0.4;
 }
 
 
diff --git a/maloja/web/static/js/edit.js b/maloja/web/static/js/edit.js
new file mode 100644
index 0000000..c44afc0
--- /dev/null
+++ b/maloja/web/static/js/edit.js
@@ -0,0 +1,10 @@
+// JS for all web interface editing / deletion of scrobble data
+
+function toggleDeleteConfirm(element) {
+	element.parentElement.parentElement.classList.toggle('active');
+}
+
+function deleteScrobble(id,element) {
+	element.parentElement.parentElement.parentElement.classList.add('removed');
+
+}