diff --git a/web/src/lib/components/stats/card.svelte b/web/src/lib/components/stats/card.svelte index 9f50cf4..1354cd8 100644 --- a/web/src/lib/components/stats/card.svelte +++ b/web/src/lib/components/stats/card.svelte @@ -1,20 +1,20 @@ - -

{title}

-
- -

{content ?? "Error"}

-
- - -

{footer}

-
-
+ +

{title}

+
+ +

{@render children?.()}

+
+ + +

{footer}

+
+
diff --git a/web/src/lib/components/stats/stat-cards.svelte b/web/src/lib/components/stats/stat-cards.svelte index b95234e..634f0ae 100644 --- a/web/src/lib/components/stats/stat-cards.svelte +++ b/web/src/lib/components/stats/stat-cards.svelte @@ -1,39 +1,67 @@ -
- - - - -
\ No newline at end of file + +
+
+ {showCount ?? 'Error'} +
+
+ {episodeCount ?? 'Error'} +
+
+ {moviesCount ?? 'Error'} +
+
+ {torrentCount ?? 'Error'} +
+
+ {#if semverIsGreater(newestVersion ?? '', installedVersion ?? '') || !isSemver(installedVersion ?? '')} + + + {installedVersion} → v{newestVersion} + + + {/if} +
+
diff --git a/web/src/lib/utils.ts b/web/src/lib/utils.ts index 0011f9b..c8d29ce 100644 --- a/web/src/lib/utils.ts +++ b/web/src/lib/utils.ts @@ -118,3 +118,12 @@ export function saveDirectoryPreview( } return path; } + +export function semverIsGreater(a: string, b: string) { + return a.localeCompare(b, undefined, { numeric: true }) === 1; +} +export function isSemver(str: string) { + return str.match( + /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/ + ); +}