]> git.immae.eu Git - github/bastienwirtz/homer.git/blame - src/components/services/Ping.vue
Fix openweather service
[github/bastienwirtz/homer.git] / src / components / services / Ping.vue
CommitLineData
68955dc1 1<template>
2ca4faad
BW
2 <Generic :item="item">
3 <template #indicator>
4 <div v-if="status" class="status" :class="status">
5 {{ status }}
6 </div>
7 </template>
8 </Generic>
68955dc1 9</template>
10
11<script>
2fba0435 12import service from "@/mixins/service.js";
2ca4faad
BW
13import Generic from "./Generic.vue";
14
68955dc1 15export default {
16 name: "Ping",
2fba0435 17 mixins: [service],
68955dc1 18 props: {
19 item: Object,
20 },
2ca4faad
BW
21 components: {
22 Generic,
23 },
68955dc1 24 data: () => ({
3a8fa151 25 status: null,
68955dc1 26 }),
27 created() {
28 this.fetchStatus();
29 },
30 methods: {
31 fetchStatus: async function () {
5bb84dce
BW
32 const method =
33 typeof this.item.method === "string"
34 ? this.item.method.toUpperCase()
35 : "HEAD";
84930a63 36
5bb84dce 37 if (!["GET", "HEAD", "OPTION"].includes(method)) {
84930a63
IS
38 console.error(`Ping: ${method} is not a supported HTTP method`);
39 return;
40 }
41
6c083d6a 42 this.fetch("/", { method, cache: "no-cache" }, false)
2fba0435 43 .then(() => {
3a8fa151
BW
44 this.status = "online";
45 })
46 .catch(() => {
47 this.status = "offline";
48 });
68955dc1 49 },
50 },
51};
52</script>
53
54<style scoped lang="scss">
68955dc1 55.status {
56 font-size: 0.8rem;
57 color: var(--text-title);
6c083d6a
IS
58 white-space: nowrap;
59 margin-left: 0.25rem;
68955dc1 60
3a8fa151 61 &.online:before {
68955dc1 62 background-color: #94e185;
63 border-color: #78d965;
3a8fa151 64 box-shadow: 0 0 5px 1px #94e185;
68955dc1 65 }
66
3a8fa151 67 &.offline:before {
68955dc1 68 background-color: #c9404d;
69 border-color: #c42c3b;
3a8fa151 70 box-shadow: 0 0 5px 1px #c9404d;
68955dc1 71 }
72
73 &:before {
74 content: " ";
75 display: inline-block;
76 width: 7px;
77 height: 7px;
78 margin-right: 10px;
79 border: 1px solid #000;
80 border-radius: 7px;
81 }
82}
83</style>