add Docuseal smart card

Fixes #847

Requires #850
main
Adam Monsen 2024-12-20 21:57:03 -08:00 committed by Bastien Wirtz
parent aba3b5eed7
commit 66d4cc36b5
3 changed files with 100 additions and 0 deletions

View File

@ -14,6 +14,7 @@ within Homer:
- [Common options](#common-options) - [Common options](#common-options)
- [AdGuard Home](#adguard-home) - [AdGuard Home](#adguard-home)
- [CopyToClipboard](#copy-to-clipboard) - [CopyToClipboard](#copy-to-clipboard)
- [Docuseal](#docuseal)
- [Emby / Jellyfin](#emby--jellyfin) - [Emby / Jellyfin](#emby--jellyfin)
- [FreshRSS](#freshrss) - [FreshRSS](#freshrss)
- [Gitea / Forgejo](#gitea--forgejo) - [Gitea / Forgejo](#gitea--forgejo)
@ -100,6 +101,17 @@ Configuration example:
clipboard: "this text will be copied to your clipboard" clipboard: "this text will be copied to your clipboard"
``` ```
## Docuseal
This service displays a version string instead of a subtitle. Example configuration:
```yaml
- name: Docuseal
type: Docuseal
logo: assets/tools/sample.png
url: http://docuseal.example.com
```
## Emby / Jellyfin ## Emby / Jellyfin
You need to set the type to Emby, provide an api key and choose which stats to show if the subtitle is disabled. You need to set the type to Emby, provide an api key and choose which stats to show if the subtitle is disabled.

View File

@ -0,0 +1 @@
1.8.3a

View File

@ -0,0 +1,87 @@
<template>
<Generic :item="item">
<template #content>
<p class="title is-4">{{ item.name }}</p>
<p class="subtitle is-6">
<template v-if="item.subtitle">
{{ item.subtitle }}
</template>
<template v-else-if="versionstring">
Version {{ versionstring }}
</template>
</p>
</template>
<template #indicator>
<div v-if="status" class="status" :class="status">
{{ status }}
</div>
</template>
</Generic>
</template>
<script>
import service from "@/mixins/service.js";
import Generic from "./Generic.vue";
export default {
name: "Docuseal",
components: {
Generic,
},
mixins: [service],
props: {
item: Object,
},
data: () => ({
status: null,
versionstring: null,
}),
created() {
this.fetchStatus();
},
methods: {
fetchStatus: async function () {
this.fetch("/version", null, false)
.then((response) => {
this.status = "online";
this.versionstring = response;
})
.catch((e) => {
this.status = "offline";
console.log(e);
});
},
},
};
</script>
<style scoped lang="scss">
.status {
font-size: 0.8rem;
color: var(--text-title);
white-space: nowrap;
margin-left: 0.25rem;
&.online:before {
background-color: #94e185;
border-color: #78d965;
box-shadow: 0 0 5px 1px #94e185;
}
&.offline:before {
background-color: #c9404d;
border-color: #c42c3b;
box-shadow: 0 0 5px 1px #c9404d;
}
&:before {
content: " ";
display: inline-block;
width: 7px;
height: 7px;
margin-right: 10px;
border: 1px solid #000;
border-radius: 7px;
}
}
</style>