diff --git a/src/components/Graph.vue b/src/components/Graph.vue index 58272e7..1d4be69 100644 --- a/src/components/Graph.vue +++ b/src/components/Graph.vue @@ -106,6 +106,12 @@ const graphOptions = { maintainAspectRatio: false, + elements: { + point: { + radius: 2, + + } + }, plugins: { tooltip: { callbacks: { diff --git a/src/components/admin/AdminStats.vue b/src/components/admin/AdminStats.vue index c74038a..b1e047a 100644 --- a/src/components/admin/AdminStats.vue +++ b/src/components/admin/AdminStats.vue @@ -439,13 +439,12 @@ padding: 1rem 0; @include mobile-only { - font-size: 1.25rem; margin-bottom: 0.1rem; } } &__label { - font-size: 0.75rem; + font-size: 0.8rem; color: $text-color-70; text-transform: uppercase; letter-spacing: 0.4px; @@ -455,7 +454,6 @@ line-height: 1.2; @include mobile-only { - font-size: 0.65rem; margin-bottom: 0.3rem; letter-spacing: 0.2px; } diff --git a/src/components/torrent/TorrentTable.vue b/src/components/torrent/TorrentTable.vue index 1981fa6..2edc0a5 100644 --- a/src/components/torrent/TorrentTable.vue +++ b/src/components/torrent/TorrentTable.vue @@ -22,18 +22,26 @@ class="table__content" > - {{ torrent.name }} +
{{ torrent.name }}
+
+ {{ torrent.size }} + + {{ torrent.seed }} seeders +
{{ torrent.seed }} @@ -177,6 +185,13 @@ } } + // Hide seed and size columns on mobile + .desktop-only { + @include mobile { + display: none; + } + } + thead { position: relative; user-select: none; @@ -194,34 +209,81 @@ th:last-of-type { padding-right: 0.4rem; } + + // Hide seed and size headers on mobile + @include mobile { + th:nth-child(2), + th:nth-child(3) { + display: none; + } + } } tbody { - // first column - tr td:first-of-type { + // first column - torrent info + .torrent-info { position: relative; - padding: 0 0.3rem; + padding: 0.5rem 0.6rem; cursor: default; - word-break: break-all; + word-break: break-word; border-left: 1px solid var(--table-background-color); @include mobile { - max-width: 40vw; - overflow-x: hidden; + width: 100%; + padding: 0.75rem 0.5rem; + } + + .torrent-title { + font-weight: 500; + margin-bottom: 0.25rem; + line-height: 1.3; + + @include mobile { + font-size: 0.95rem; + } + } + + .torrent-meta { + display: none; // Hidden on desktop, shown on mobile + font-size: 0.85rem; + color: var(--text-color-60); + + @include mobile { + display: flex; + align-items: center; + gap: 0.5rem; + flex-wrap: wrap; + } + + .meta-item { + white-space: nowrap; + } + + .meta-separator { + color: var(--text-color-40); + } } } - // all columns except first - tr td:not(td:first-of-type) { + // seed and size columns (desktop only) + .torrent-seed, + .torrent-size { text-align: center; white-space: nowrap; + padding: 0.5rem; } - // last column + // last column - action tr td:last-of-type { vertical-align: middle; cursor: pointer; border-right: 1px solid var(--table-background-color); + width: 60px; + text-align: center; + + @include mobile { + width: 50px; + } svg { width: 21px; @@ -229,6 +291,10 @@ margin: auto; padding: 0.3rem 0; fill: var(--text-color); + + @include mobile { + width: 18px; + } } } diff --git a/src/composables/usePlexApi.ts b/src/composables/usePlexApi.ts index 6f6a269..7490284 100644 --- a/src/composables/usePlexApi.ts +++ b/src/composables/usePlexApi.ts @@ -26,7 +26,6 @@ export function usePlexApi() { } const data = await response.json(); - console.log("[PlexAPI] Raw Plex API response:", data); // Convert Unix timestamp to ISO date string if needed let joinedDate = null; @@ -62,7 +61,6 @@ export function usePlexApi() { created_at: new Date().toISOString() }; - console.log("[PlexAPI] Processed user data:", userData); localStorage.setItem("plex_user_data", JSON.stringify(userData)); return userData; } catch (error) { diff --git a/src/composables/useTautulliStats.ts b/src/composables/useTautulliStats.ts index 175a7c5..d77f646 100644 --- a/src/composables/useTautulliStats.ts +++ b/src/composables/useTautulliStats.ts @@ -108,7 +108,8 @@ export function useTautulliStats() { .map(([date, stats]) => ({ date, plays: stats.plays, - duration: Math.round(stats.duration / 60) // Convert to minutes + duration: stats.duration + // duration: Math.round(stats.duration / 60) // Convert to minutes })) .sort((a, b) => a.date.localeCompare(b.date)); } diff --git a/src/pages/GenPasswordPage.vue b/src/pages/GenPasswordPage.vue index 9e3b442..212aa2e 100644 --- a/src/pages/GenPasswordPage.vue +++ b/src/pages/GenPasswordPage.vue @@ -1,11 +1,11 @@ diff --git a/src/pages/TorrentsPage.vue b/src/pages/TorrentsPage.vue index 561edc1..a99125b 100644 --- a/src/pages/TorrentsPage.vue +++ b/src/pages/TorrentsPage.vue @@ -1,28 +1,25 @@