]> git.immae.eu Git - github/bastienwirtz/homer.git/commitdiff
What's up docker custom service (#444)
authorJulien Roy <royto81+github@gmail.com>
Sat, 5 Nov 2022 21:44:25 +0000 (22:44 +0100)
committerGitHub <noreply@github.com>
Sat, 5 Nov 2022 21:44:25 +0000 (14:44 -0700)
Add WUD

docs/customservices.md
src/components/services/WUD.vue [new file with mode: 0644]

index b81094ebd44d56ac89d487c12c09a90732353888..a2d5f02370fdbe4e6167182a584ac5ec8f4aec35 100644 (file)
@@ -28,6 +28,8 @@ within Homer:
   - [rTorrent](#rtorrent)
   - [qBittorrent](#qbittorrent)
   - [CopyToClipboard](#copy-to-clipboard)
+  - [Speedtest Tracker](#SpeedtestTracker)
+  - [What's Up Docker](#whats-up-docker)
 
 If you experiencing any issue, please have a look to the [troubleshooting](troubleshooting.md) page.
 
@@ -344,3 +346,17 @@ Configuration example:
 ## SpeedtestTracker
 
 For the SpeedtestTracker service you just need to define a entry with type `SpeedtestTracker`.
+
+## What's up Docker
+
+What's up Docker allow to display info about the number of container running and the number for which an update is available on your Homer dashboard.
+
+The following configuration is available for the WUD service.
+
+```yaml
+- name: "What's Up Docker"
+  logo: "assets/tools/sample.png"
+  subtitle: "Docker image update notifier"
+  url: "http://192.168.1.12:3001"
+  type: "WUD"
+```
\ No newline at end of file
diff --git a/src/components/services/WUD.vue b/src/components/services/WUD.vue
new file mode 100644 (file)
index 0000000..917f3bd
--- /dev/null
@@ -0,0 +1,92 @@
+<template>
+  <Generic :item="item">
+    <template #indicator>
+      <div class="notifs">
+        <strong v-if="running > 0" class="notif warnings" title="Running">
+          {{ running }}
+        </strong>
+        <strong v-if="update > 0" class="notif errors" title="Update">
+          {{ update }}
+        </strong>
+        <strong
+          v-if="serverError"
+          class="notif errors"
+          title="Connection error to WUD API, check url in config.yml"
+        >
+          ?
+        </strong>
+      </div>
+    </template>
+  </Generic>
+</template>
+
+<script>
+import service from "@/mixins/service.js";
+import Generic from "./Generic.vue";
+
+export default {
+  name: "WUD",
+  mixins: [service],
+  props: {
+    item: Object,
+  },
+  components: {
+    Generic,
+  },
+  data: () => {
+    return {
+      running: null,
+      update: null,
+      serverError: false,
+    };
+  },
+  created: function () {
+    this.fetchConfig();
+  },
+  methods: {
+    fetchConfig: function () {
+      this.fetch(`/api/containers`)
+        .then((containers) => {
+          this.running = 0;
+          this.update = 0;
+          for (var i = 0; i < containers.length; i++) {
+            this.running++;
+            if (containers[i].updateAvailable) {
+              this.update++;
+            }
+          }
+        })
+        .catch(() => {
+          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>