]> git.immae.eu Git - github/bastienwirtz/homer.git/commitdiff
Added Prowlarr custom service
authorRaphaël Catarino <raphcatarino@gmail.com>
Mon, 31 Jan 2022 12:13:28 +0000 (13:13 +0100)
committerRaphaël Catarino <raphcatarino@gmail.com>
Mon, 31 Jan 2022 12:13:28 +0000 (13:13 +0100)
src/components/services/Prowlarr.vue [new file with mode: 0644]

diff --git a/src/components/services/Prowlarr.vue b/src/components/services/Prowlarr.vue
new file mode 100644 (file)
index 0000000..c122ca0
--- /dev/null
@@ -0,0 +1,94 @@
+<template>
+  <Generic :item="item">
+    <template #indicator>
+      <div class="notifs">
+        <strong v-if="warnings > 0" class="notif warnings" title="Warning">
+          {{ warnings }}
+        </strong>
+        <strong v-if="errors > 0" class="notif errors" title="Error">
+          {{ errors }}
+        </strong>
+        <strong
+          v-if="serverError"
+          class="notif errors"
+          title="Connection error to Prowlarr API, check url and apikey in config.yml"
+        >
+          ?
+        </strong>
+      </div>
+    </template>
+  </Generic>
+</template>
+
+<script>
+import service from "@/mixins/service.js"
+import Generic from "./Generic.vue"
+
+export default {
+  name: "Prowlarr",
+  mixins: [service],
+  props: {
+    item: Object,
+  },
+  components: {
+    Generic,
+  },
+  data: () => {
+    return {
+      warnings: null,
+      errors: null,
+      serverError: false,
+    }
+  },
+  created: function () {
+    this.fetchConfig()
+  },
+  methods: {
+    fetchConfig: function () {
+      this.fetch(`/api/v1/health?apikey=${this.item.apikey}`)
+        .then((health) => {
+          this.warnings = 0
+          this.errors = 0
+          for (var i = 0; i < health.length; i++) {
+            if (health[i].type == "warning") {
+              this.warnings++
+            } else if (health[i].type == "error") {
+              this.errors++
+            }
+          }
+        })
+        .catch((e) => {
+          console.error(e)
+          this.serverError = true
+        })
+    },
+  },
+}
+</script>
+
+<style scoped lang="scss">
+.notifs {
+  position: absolute;
+  color: white;
+  font-family: sans-serif;
+  top: 0.3em;
+  right: 0.5em;
+
+  .notif {
+    display: inline-block;
+    padding: 0.2em 0.35em;
+    border-radius: 0.25em;
+    position: relative;
+    margin-left: 0.3em;
+    font-size: 0.8em;
+
+    &.warnings {
+      background-color: #d08d2e;
+    }
+
+    &.errors {
+      background-color: #e51111;
+    }
+  }
+}
+</style>