From c4e67c119ee7c4d33f8f2595262efe81872f49c2 Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Wed, 2 Apr 2025 17:47:02 +1300 Subject: [PATCH] Add tag list --- pug/tag_list.pug | 16 ++++++++++++++++ routes/app.js | 3 ++- routes/load-tags.js | 2 -- 3 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 pug/tag_list.pug diff --git a/pug/tag_list.pug b/pug/tag_list.pug new file mode 100644 index 0000000..980ebef --- /dev/null +++ b/pug/tag_list.pug @@ -0,0 +1,16 @@ +extends includes/layout.pug + +block view + .mx-auto.w100.wmx11.fs-body1#content + .s-table-container + table.s-table.s-table__bx + thead + th Tag + th Labels + th Albums + tbody + each item in items + tr + td= item.tag + td= item.labels + td= item.albums diff --git a/routes/app.js b/routes/app.js index 06230e6..70e82ab 100644 --- a/routes/app.js +++ b/routes/app.js @@ -29,6 +29,7 @@ const sqls = { label_grid: "SELECT iif(count(DISTINCT band_name) = 1, band_name, band_url) AS display_name, band_url, count(DISTINCT item_id) AS album_count, count(DISTINCT band_name) AS artist_count, count(*) AS track_count, iif(sum(duration) > 3600, cast(total(duration)/3600 AS INTEGER) || 'h ' || cast(total(duration)/60%60 AS INTEGER) || 'm', cast(total(duration)/60 AS INTEGER) || 'm') AS total_duration FROM item INNER JOIN track USING (account, item_id) {JOIN TAG} WHERE account = ? {WHERE} GROUP BY band_url ORDER BY display_name COLLATE NOCASE", label_list: "SELECT iif(count(DISTINCT band_name) = 1, band_name, band_url) AS display_name, band_url, count(DISTINCT item_id) AS album_count, count(DISTINCT band_name) AS artist_count, count(*) AS track_count, iif(sum(duration) > 3600, cast(total(duration)/3600 AS INTEGER) || 'h ' || cast(total(duration)/60%60 AS INTEGER) || 'm', cast(total(duration)/60 AS INTEGER) || 'm') AS total_duration FROM item INNER JOIN track USING (account, item_id) {JOIN TAG} WHERE account = ? {WHERE} GROUP BY band_url ORDER BY display_name COLLATE NOCASE", tag_grid: "SELECT tag, count(*) AS count FROM item_tag INNER JOIN item USING (account, item_id) WHERE account = ? {WHERE} GROUP BY tag, band_url ORDER BY count DESC", + tag_list: "SELECT tag, count(*) AS labels, sum(count) AS albums FROM (SELECT tag, count(*) AS count FROM item_tag INNER JOIN item USING (account, item_id) WHERE account = ? {WHERE} GROUP BY tag, band_url) GROUP BY tag ORDER BY labels DESC", track_list: "SELECT * FROM track INNER JOIN item USING (account, item_id) {JOIN TAG} WHERE account = ? {WHERE} ORDER BY band_url, item_title COLLATE NOCASE, track_number" } @@ -116,7 +117,7 @@ router.get("/:account/", defineEventHandler({ } try { const prepared = db.prepare(sql) - if (arrange === "tag") { + if (mode === "tag_grid") { prepared.raw() } var items = prepared.all(params) diff --git a/routes/load-tags.js b/routes/load-tags.js index 2079e49..1d1e63b 100644 --- a/routes/load-tags.js +++ b/routes/load-tags.js @@ -55,7 +55,6 @@ const downloadManager = new class { return this.inProgressTagDownloads.get(account) || (() => { const downloader = new TagDownloader(account) this.inProgressTagDownloads.set(account, downloader) - console.log(`created downloader ${account}`) setTimeout(() => { this.resolve(account) }) @@ -74,7 +73,6 @@ const downloadManager = new class { resolve(account) { const downloader = this.check(account) if (!downloader.running) { - console.log(`disposed downloader ${account}`) this.inProgressTagDownloads.delete(account) } }