Merge remote-tracking branch 'louislam/master' into feature/add-support-for-method-body-and-headers

This commit is contained in:
Bert Verhelst
2021-10-07 18:22:59 +02:00
29 changed files with 701 additions and 223 deletions

View File

@@ -38,7 +38,7 @@ export default {
beatMargin: 4,
move: false,
maxBeat: -1,
};
}
},
computed: {
@@ -69,12 +69,12 @@ export default {
if (start < 0) {
// Add empty placeholder
for (let i = start; i < 0; i++) {
placeholders.push(0);
placeholders.push(0)
}
start = 0;
}
return placeholders.concat(this.beatList.slice(start));
return placeholders.concat(this.beatList.slice(start))
},
wrapStyle() {
@@ -84,7 +84,7 @@ export default {
return {
padding: `${topBottom}px ${leftRight}px`,
width: "100%",
};
}
},
barStyle() {
@@ -94,12 +94,12 @@ export default {
return {
transition: "all ease-in-out 0.25s",
transform: `translateX(${width}px)`,
};
}
}
return {
transform: "translateX(0)",
};
}
},
@@ -109,7 +109,7 @@ export default {
height: this.beatHeight + "px",
margin: this.beatMargin + "px",
"--hover-scale": this.hoverScale,
};
}
},
},
@@ -120,7 +120,7 @@ export default {
setTimeout(() => {
this.move = false;
}, 300);
}, 300)
},
deep: true,
},
@@ -162,7 +162,7 @@ export default {
methods: {
resize() {
if (this.$refs.wrap) {
this.maxBeat = Math.floor(this.$refs.wrap.clientWidth / (this.beatWidth + this.beatMargin * 2));
this.maxBeat = Math.floor(this.$refs.wrap.clientWidth / (this.beatWidth + this.beatMargin * 2))
}
},
@@ -170,7 +170,7 @@ export default {
return `${this.$root.datetime(beat.time)} - ${beat.msg}`;
}
},
};
}
</script>
<style lang="scss" scoped>
@@ -183,9 +183,6 @@ export default {
}
.hp-bar-big {
display: flex;
justify-content: flex-end;
.beat {
display: inline-block;
background-color: $primary;

View File

@@ -3,10 +3,10 @@
<div class="list-header">
<div class="placeholder"></div>
<div class="search-wrapper">
<a v-if="!searchText" class="search-icon">
<a v-if="searchText == ''" class="search-icon">
<font-awesome-icon icon="search" />
</a>
<a v-if="searchText" class="search-icon" @click="clearSearchText">
<a v-if="searchText != ''" class="search-icon" @click="clearSearchText">
<font-awesome-icon icon="times" />
</a>
<input v-model="searchText" class="form-control search-input" :placeholder="$t('Search...')" />
@@ -19,21 +19,21 @@
<router-link v-for="(item, index) in sortedMonitorList" :key="index" :to="monitorURL(item.id)" class="item" :class="{ 'disabled': ! item.active }">
<div class="row">
<div class="col-6 col-md-8 small-padding" :class="{ 'monitorItem': $root.userHeartbeatBar === 'bottom' || $root.userHeartbeatBar === 'none' }">
<div class="col-9 col-md-8 small-padding" :class="{ 'monitorItem': $root.userHeartbeatBar == 'bottom' || $root.userHeartbeatBar == 'none' }">
<div class="info">
<Uptime :monitor="item" type="24" :pill="true" />
<span class="ms-1">{{ item.name }}</span>
{{ item.name }}
</div>
<div class="tags">
<Tag v-for="tag in item.tags" :key="tag" :item="tag" :size="'sm'" />
</div>
</div>
<div v-show="$root.userHeartbeatBar === 'normal'" :key="$root.userHeartbeatBar" class="col-6 col-md-4 small-padding">
<div v-show="$root.userHeartbeatBar == 'normal'" :key="$root.userHeartbeatBar" class="col-3 col-md-4">
<HeartbeatBar size="small" :monitor-id="item.id" />
</div>
</div>
<div v-if="$root.userHeartbeatBar === 'bottom'" class="row">
<div v-if="$root.userHeartbeatBar == 'bottom'" class="row">
<div class="col-12">
<HeartbeatBar size="small" :monitor-id="item.id" />
</div>
@@ -47,6 +47,7 @@
import HeartbeatBar from "../components/HeartbeatBar.vue";
import Uptime from "../components/Uptime.vue";
import Tag from "../components/Tag.vue";
import { getMonitorRelativeURL } from "../util.ts";
export default {
components: {
@@ -95,7 +96,7 @@ export default {
// Simple filter by search text
// finds monitor name, tag name or tag value
if (this.searchText) {
if (this.searchText != "") {
const loweredSearchText = this.searchText.toLowerCase();
result = result.filter(monitor => {
return monitor.name.toLowerCase().includes(loweredSearchText)
@@ -109,7 +110,7 @@ export default {
},
methods: {
monitorURL(id) {
return "/dashboard/" + id;
return getMonitorRelativeURL(id);
},
clearSearchText() {
this.searchText = "";

View File

@@ -1,7 +1,7 @@
<template>
<div>
<h4 class="mb-3">{{ $t("Tags") }}</h4>
<div class="mb-3 p-1">
<h4 class="mt-5 mb-3">{{ $t("Tags") }}</h4>
<div v-if="selectedTags.length > 0" class="mb-2 p-1">
<tag
v-for="item in selectedTags"
:key="item.id"
@@ -124,8 +124,8 @@
import { Modal } from "bootstrap";
import VueMultiselect from "vue-multiselect";
import Tag from "../components/Tag.vue";
import { useToast } from "vue-toastification"
const toast = useToast()
import { useToast } from "vue-toastification";
const toast = useToast();
export default {
components: {
@@ -186,7 +186,7 @@ export default {
color: "#7C3AED" },
{ name: this.$t("Pink"),
color: "#DB2777" },
]
];
},
validateDraftTag() {
let nameInvalid = false;
@@ -227,7 +227,7 @@ export default {
invalid,
nameInvalid,
valueInvalid,
}
};
},
},
mounted() {
@@ -243,7 +243,7 @@ export default {
if (res.ok) {
this.existingTags = res.tags;
} else {
toast.error(res.msg)
toast.error(res.msg);
}
});
},
@@ -277,7 +277,7 @@ export default {
name: this.newDraftTag.select.name,
value: this.newDraftTag.value,
new: true,
})
});
}
} else {
// Add new Tag
@@ -286,7 +286,7 @@ export default {
name: this.newDraftTag.name.trim(),
value: this.newDraftTag.value,
new: true,
})
});
}
this.clearDraftTag();
},
@@ -348,7 +348,7 @@ export default {
if (tag.name == newTag.name && tag.color == newTag.color) {
tag.id = newTagResult.id;
}
})
});
} else {
tagId = newTag.id;
}

View File

@@ -22,33 +22,33 @@ export default {
return Math.round(this.$root.uptimeList[key] * 10000) / 100 + "%";
}
return this.$t("notAvailableShort");
return this.$t("notAvailableShort")
},
color() {
if (this.lastHeartBeat.status === 0) {
return "danger";
return "danger"
}
if (this.lastHeartBeat.status === 1) {
return "primary";
return "primary"
}
if (this.lastHeartBeat.status === 2) {
return "warning";
return "warning"
}
return "secondary";
return "secondary"
},
lastHeartBeat() {
if (this.monitor.id in this.$root.lastHeartbeatList && this.$root.lastHeartbeatList[this.monitor.id]) {
return this.$root.lastHeartbeatList[this.monitor.id];
return this.$root.lastHeartbeatList[this.monitor.id]
}
return {
status: -1,
};
}
},
className() {
@@ -59,7 +59,7 @@ export default {
return "";
},
},
};
}
</script>
<style>

View File

@@ -8,8 +8,6 @@
<input id="rocket-iconemo" v-model="$parent.notification.rocketiconemo" type="text" class="form-control">
<label for="rocket-channel" class="form-label">{{ $t("Channel Name") }}</label>
<input id="rocket-channel-name" v-model="$parent.notification.rocketchannel" type="text" class="form-control">
<label for="rocket-button-url" class="form-label">{{ $t("Uptime Kuma URL") }}</label>
<input id="rocket-button" v-model="$parent.notification.rocketbutton" type="text" class="form-control">
<div class="form-text">
<span style="color: red;"><sup>*</sup></span>{{ $t("Required") }}
<i18n-t tag="p" keypath="aboutWebhooks" style="margin-top: 8px;">

View File

@@ -8,8 +8,7 @@
<input id="slack-iconemo" v-model="$parent.notification.slackiconemo" type="text" class="form-control">
<label for="slack-channel" class="form-label">{{ $t("Channel Name") }}</label>
<input id="slack-channel-name" v-model="$parent.notification.slackchannel" type="text" class="form-control">
<label for="slack-button-url" class="form-label">{{ $t("Uptime Kuma URL") }}</label>
<input id="slack-button" v-model="$parent.notification.slackbutton" type="text" class="form-control">
<div class="form-text">
<span style="color: red;"><sup>*</sup></span>{{ $t("Required") }}
<i18n-t tag="p" keypath="aboutWebhooks" style="margin-top: 8px;">