From 19a4e7514dc0448baa9d92db2341027f9888fcb6 Mon Sep 17 00:00:00 2001 From: Alexandre Tuleu Date: Thu, 21 Sep 2023 13:46:26 +0200 Subject: [PATCH] Adds content for PiHole --- src/lib/components/CircularProgressBar.svelte | 29 ++++++++++++++++ src/lib/components/ServiceCard.svelte | 10 ++++-- src/lib/server/config.test.ts | 2 ++ src/lib/server/config.ts | 26 -------------- src/lib/services/pihole/+content.svelte | 34 +++++++++++++++++-- src/lib/services/pihole/+service.ts | 3 +- 6 files changed, 72 insertions(+), 32 deletions(-) create mode 100644 src/lib/components/CircularProgressBar.svelte diff --git a/src/lib/components/CircularProgressBar.svelte b/src/lib/components/CircularProgressBar.svelte new file mode 100644 index 0000000..6ff54ce --- /dev/null +++ b/src/lib/components/CircularProgressBar.svelte @@ -0,0 +1,29 @@ + + + + + + diff --git a/src/lib/components/ServiceCard.svelte b/src/lib/components/ServiceCard.svelte index 131fa95..40337c4 100644 --- a/src/lib/components/ServiceCard.svelte +++ b/src/lib/components/ServiceCard.svelte @@ -16,6 +16,10 @@ return service; } + function subtitle(): string { + return service.subtitle || data.subtitle || ''; + } + function computeClasses(): string { switch (data.status) { case 'offline': @@ -41,14 +45,14 @@

{service.title}

- {service.subtitle} + {subtitle()}

-
+
{#if component != undefined} {/if}
-
+
diff --git a/src/lib/server/config.test.ts b/src/lib/server/config.test.ts index eef8d40..180b0ca 100644 --- a/src/lib/server/config.test.ts +++ b/src/lib/server/config.test.ts @@ -66,6 +66,8 @@ describe('Config', () => { items: [ { title: 'top service', + logo: 'foo', + url: 'somewhere', secret: 'secret', type: 'foo' diff --git a/src/lib/server/config.ts b/src/lib/server/config.ts index 604eea3..173ed7d 100644 --- a/src/lib/server/config.ts +++ b/src/lib/server/config.ts @@ -91,34 +91,8 @@ export function mergeConfig(a: Config, b: SPOJO): Config { } const defaultLightConfig: ColorConfig = {}; -defaultLightConfig['highlight-primary'] = '#3367d6'; -defaultLightConfig['highlight-secondary'] = '#4285f4'; -defaultLightConfig['highlight-hover'] = '#5a95f5'; -defaultLightConfig['background'] = '#f5f5f5'; -defaultLightConfig['card-background'] = '#ffffff'; -defaultLightConfig['text'] = '#363636'; -defaultLightConfig['text-header'] = '#ffffff'; -defaultLightConfig['text-title'] = '#303030'; -defaultLightConfig['text-subtitle'] = '#424242'; -defaultLightConfig['card-shadow'] = 'rgba(0, 0, 0, 0.1)'; -defaultLightConfig['link'] = '#3273dc'; -defaultLightConfig['link-hover'] = '#363636'; -defaultLightConfig['background-image'] = ''; const defaultDarkConfig: ColorConfig = {}; -defaultDarkConfig['highlight-primary'] = '#3367d6'; -defaultDarkConfig['highlight-secondary'] = '#4285f4'; -defaultDarkConfig['highlight-hover'] = '#5a95f5'; -defaultDarkConfig['background'] = '#131313'; -defaultDarkConfig['card-background'] = '#2b2b2b'; -defaultDarkConfig['text'] = '#eaeaea'; -defaultDarkConfig['text-header'] = '#ffffff'; -defaultDarkConfig['text-title'] = '#fafafa'; -defaultDarkConfig['text-subtitle'] = '#f5f5f5'; -defaultDarkConfig['card-shadow'] = 'rgba(0, 0, 0, 0.4)'; -defaultDarkConfig['link'] = '#3273dc'; -defaultDarkConfig['link-hover'] = '#ffdd57'; -defaultDarkConfig['background-image'] = ''; export const defaultConfig: Config = { title: 'Flanders', diff --git a/src/lib/services/pihole/+content.svelte b/src/lib/services/pihole/+content.svelte index 7e93f29..125003a 100644 --- a/src/lib/services/pihole/+content.svelte +++ b/src/lib/services/pihole/+content.svelte @@ -1,5 +1,35 @@ -pihole status +
+ + {#if data.data?.status == 'enabled'} + + {:else if data.data?.status == 'disabled'} + + {:else} + + N.A. + {/if} + + + + + + {data.data?.ads_percentage?.toFixed(1) || 'N.A.'}% + + + + {data.data?.queries_today || 'N.A.'} + + + + {data.data?.client || 'N.A.'} + +
diff --git a/src/lib/services/pihole/+service.ts b/src/lib/services/pihole/+service.ts index f5225ed..c7ff9b7 100644 --- a/src/lib/services/pihole/+service.ts +++ b/src/lib/services/pihole/+service.ts @@ -3,7 +3,8 @@ import { type ServiceData, type ServiceHandler } from '../service'; export const handle: ServiceHandler = async (config: ServiceConfig) => { const res: ServiceData = { - logo: 'https://cdn.rawgit.com/pi-hole/graphics/master/Vortex/Vortex.svg' + logo: 'https://cdn.rawgit.com/pi-hole/graphics/master/Vortex/Vortex.svg', + subtitle: 'Sends ads into a black hole' }; try {