uptime-kuma/src/pages/AddStatusPage.vue

80 lines
2.6 KiB
Vue
Raw Normal View History

2022-03-15 04:00:29 +00:00
<template>
<transition name="slide-fade" appear>
<div>
<h1 class="mb-3">
{{ $t("Add New Status Page") }}
</h1>
2022-03-17 15:38:43 +00:00
<form @submit.prevent="submit">
<div class="shadow-box">
<div class="mb-3">
<label for="name" class="form-label">{{ $t("Name") }}</label>
<input id="name" v-model="title" type="text" class="form-control" required>
</div>
2022-03-15 04:00:29 +00:00
2022-03-17 15:38:43 +00:00
<div class="mb-4">
<label for="slug" class="form-label">{{ $t("Slug") }}</label>
<div class="input-group">
<span id="basic-addon3" class="input-group-text">/status/</span>
<input id="slug" v-model="slug" type="text" class="form-control" required>
</div>
<div class="form-text">
<ul>
<li>{{ $t("Accept characters:") }} <mark>a-z</mark> <mark>0-9</mark> <mark>-</mark></li>
<li>{{ $t("Start or end with") }} <mark>a-z</mark> <mark>0-9</mark> only</li>
<li>{{ $t("No consecutive dashes") }} <mark>--</mark></li>
</ul>
</div>
2022-03-17 14:44:47 +00:00
</div>
2022-03-17 15:38:43 +00:00
<div class="mt-2 mb-1">
<button id="monitor-submit-btn" class="btn btn-primary w-100" type="submit" :disabled="processing">{{ $t("Next") }}</button>
</div>
2022-03-15 04:00:29 +00:00
</div>
2022-03-17 15:38:43 +00:00
</form>
2022-03-15 04:00:29 +00:00
</div>
</transition>
</template>
<script>
export default {
components: {
},
data() {
return {
2022-03-17 15:38:43 +00:00
title: "",
slug: "",
2022-03-17 14:44:47 +00:00
processing: false,
2022-03-15 04:00:29 +00:00
};
2022-03-17 15:38:43 +00:00
},
methods: {
async submit() {
this.processing = true;
this.$root.getSocket().emit("addStatusPage", this.title, this.slug, (res) => {
this.processing = false;
if (res.ok) {
location.href = "/status/" + this.slug + "?edit";
2022-03-17 15:38:43 +00:00
} else {
if (res.msg.includes("UNIQUE constraint")) {
this.$root.toastError(this.$t("The slug is already taken. Please choose another slug."));
} else {
this.$root.toastRes(res);
}
}
});
}
2022-03-15 04:00:29 +00:00
}
};
</script>
2022-03-17 14:44:47 +00:00
<style lang="scss" scoped>
.shadow-box {
padding: 20px;
}
</style>