uptime-kuma/src/pages/Settings.vue

192 lines
4.6 KiB
Vue
Raw Normal View History

2021-06-25 09:55:49 -04:00
<template>
<div>
<h1 v-show="show" class="mb-3">
{{ $t("Settings") }}
</h1>
<div class="shadow-box">
<div class="row">
<div class="settings-menu">
<router-link
v-for="(item, key) in subMenus"
:key="key"
:to="`/settings/${key}`"
>
<div class="menu-item">
{{ item.title }}
2021-10-07 04:30:16 -04:00
</div>
</router-link>
</div>
<div class="settings-content">
<div class="settings-content-header">
{{ subMenus[currentPage].title }}
</div>
<div class="mx-3">
<router-view v-slot="{ Component }">
<transition name="slide-fade" appear>
<component :is="Component" />
</transition>
</router-view>
2021-08-19 14:37:59 -04:00
</div>
</div>
2021-06-25 09:55:49 -04:00
</div>
2021-08-19 14:37:59 -04:00
</div>
</div>
2021-06-25 09:55:49 -04:00
</template>
<script>
import { useRoute } from "vue-router";
export default {
2021-06-25 09:55:49 -04:00
data() {
return {
2021-08-19 14:37:59 -04:00
show: true,
2021-07-31 09:57:58 -04:00
2021-10-20 06:54:20 -04:00
settings: {},
settingsLoaded: false,
2021-11-29 03:50:00 -05:00
};
},
computed: {
currentPage() {
let pathEnd = useRoute().path.split("/").at(-1);
if (pathEnd == "settings" || pathEnd == null) {
return "general";
}
return pathEnd;
},
2021-10-20 06:54:20 -04:00
2021-11-29 03:50:00 -05:00
subMenus() {
return {
2021-10-20 06:54:20 -04:00
general: {
title: this.$t("General"),
},
appearance: {
title: this.$t("Appearance"),
},
notifications: {
title: this.$t("Notifications"),
},
"monitor-history": {
2021-10-20 06:54:20 -04:00
title: this.$t("Monitor History"),
},
security: {
title: this.$t("Security"),
},
backup: {
title: this.$t("Backup"),
},
about: {
title: this.$t("About"),
},
2021-11-29 03:50:00 -05:00
};
},
},
2021-07-01 09:47:14 -04:00
mounted() {
2021-07-31 09:57:58 -04:00
this.loadSettings();
2021-07-01 09:47:14 -04:00
},
2021-06-25 09:55:49 -04:00
methods: {
2021-07-31 09:57:58 -04:00
loadSettings() {
this.$root.getSocket().emit("getSettings", (res) => {
this.settings = res.data;
2021-08-09 06:46:57 -04:00
if (this.settings.searchEngineIndex === undefined) {
this.settings.searchEngineIndex = false;
}
2021-09-15 08:40:26 -04:00
if (this.settings.entryPage === undefined) {
this.settings.entryPage = "dashboard";
}
if (this.settings.keepDataPeriodDays === undefined) {
2021-10-12 11:28:21 -04:00
this.settings.keepDataPeriodDays = 180;
}
2021-10-20 06:54:20 -04:00
this.settingsLoaded = true;
});
2021-07-31 09:57:58 -04:00
},
saveSettings() {
this.$root.getSocket().emit("setSettings", this.settings, (res) => {
this.$root.toastRes(res);
this.loadSettings();
});
2021-07-31 09:57:58 -04:00
},
2021-06-25 09:55:49 -04:00
},
};
2021-06-25 09:55:49 -04:00
</script>
<style lang="scss" scoped>
@import "../assets/vars.scss";
.shadow-box {
padding: 20px;
2021-10-20 06:54:20 -04:00
min-height: calc(100vh - 155px);
}
2021-10-20 06:54:20 -04:00
footer {
color: #aaa;
font-size: 13px;
margin-top: 20px;
padding-bottom: 30px;
text-align: center;
}
2021-10-20 06:54:20 -04:00
.settings-menu {
flex: 0 0 auto;
width: 300px;
a {
text-decoration: none !important;
}
2021-10-20 06:54:20 -04:00
.menu-item {
border-radius: 10px;
margin: 0.5em;
padding: 0.7em 1em;
cursor: pointer;
}
2021-09-01 11:09:32 -04:00
2021-10-20 06:54:20 -04:00
.menu-item:hover {
background: $highlight-white;
.dark & {
background: $dark-header-bg;
}
2021-10-20 06:54:20 -04:00
}
2021-09-01 11:09:32 -04:00
.active .menu-item {
2021-10-20 06:54:20 -04:00
background: $highlight-white;
border-left: 4px solid $primary;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
.dark & {
background: $dark-header-bg;
}
2021-09-01 11:09:32 -04:00
}
}
2021-08-29 14:22:49 -04:00
2021-10-20 06:54:20 -04:00
.settings-content {
flex: 0 0 auto;
width: calc(100% - 300px);
.settings-content-header {
width: calc(100% + 20px);
border-bottom: 1px solid #dee2e6;
border-radius: 0 10px 0 0;
margin-top: -20px;
margin-right: -20px;
padding: 12.5px 1em;
font-size: 26px;
.dark & {
background: $dark-header-bg;
border-bottom: 0;
}
}
2021-08-29 14:22:49 -04:00
}
2021-06-25 09:55:49 -04:00
</style>