advent22/ui/src/App.vue

85 lines
1.9 KiB
Vue
Raw Normal View History

2022-10-28 00:14:20 +00:00
<template>
<section class="hero is-small is-primary">
2023-09-20 22:03:32 +00:00
<div class="hero-body">
2023-11-01 00:54:46 +00:00
<h1 class="title is-uppercase">{{ title }}</h1>
2023-11-01 01:12:03 +00:00
<h2 class="subtitle">{{ subtitle }}</h2>
2023-09-16 00:52:36 +00:00
</div>
</section>
2022-12-22 00:16:42 +00:00
2023-09-16 00:56:58 +00:00
<section class="section">
<div class="container">
2023-09-14 13:54:23 +00:00
<AdminView v-if="is_admin" />
<UserView v-else />
2023-09-16 00:56:58 +00:00
</div>
</section>
2023-09-20 22:03:32 +00:00
2023-10-27 20:48:25 +00:00
<div class="is-flex-grow-1" />
2023-09-20 22:03:32 +00:00
<footer class="footer">
2023-10-27 15:10:07 +00:00
<div class="level is-mobile">
2023-09-20 22:03:32 +00:00
<div class="level-item">
2023-09-26 22:23:23 +00:00
<p v-html="footer" />
2023-09-20 22:03:32 +00:00
</div>
<div class="level-right">
<TouchButton class="level-item tag is-warning" />
2023-10-27 15:10:07 +00:00
<AdminButton
class="level-item tag is-link is-outlined"
v-model="is_admin"
/>
2023-09-20 22:03:32 +00:00
</div>
2023-10-27 15:10:07 +00:00
</div>
2023-09-20 22:03:32 +00:00
</footer>
2022-10-28 00:14:20 +00:00
</template>
<script lang="ts">
2022-10-28 00:28:03 +00:00
import { Options, Vue } from "vue-class-component";
2022-12-14 02:39:32 +00:00
2023-09-13 16:20:52 +00:00
import AdminView from "./components/admin/AdminView.vue";
2023-09-10 00:24:56 +00:00
import AdminButton from "./components/AdminButton.vue";
import TouchButton from "./components/TouchButton.vue";
2023-09-13 16:20:52 +00:00
import UserView from "./components/UserView.vue";
2022-10-28 00:14:20 +00:00
@Options({
components: {
2023-09-13 16:20:52 +00:00
AdminView,
2023-09-10 00:24:56 +00:00
AdminButton,
TouchButton,
2023-09-13 16:20:52 +00:00
UserView,
2022-10-28 00:14:20 +00:00
},
})
2023-01-24 23:18:09 +00:00
export default class extends Vue {
2023-09-11 23:10:17 +00:00
public is_admin = false;
2023-11-01 00:54:46 +00:00
public title = "Adventskalender";
2023-11-01 01:12:03 +00:00
public subtitle = "Lorem Ipsum";
2023-09-26 22:23:23 +00:00
public footer = "";
public mounted(): void {
2023-11-01 00:54:46 +00:00
Promise.all([
this.$advent22.api_get<string>("user/title"),
2023-11-01 01:12:03 +00:00
this.subtitle, // TODO
2023-11-01 00:54:46 +00:00
this.$advent22.api_get<string>("user/footer"),
])
2023-11-01 01:12:03 +00:00
.then(([title, subtitle, footer]) => {
document.title = `${title} ${subtitle}`;
2023-11-01 00:54:46 +00:00
this.title = title;
2023-11-01 01:12:03 +00:00
this.subtitle = subtitle;
2023-11-01 00:54:46 +00:00
this.footer = footer;
})
2023-09-26 22:23:23 +00:00
.catch((error) => alert(this.$advent22.format_user_error(error)));
}
}
2022-10-28 00:14:20 +00:00
</script>
<style>
2023-09-16 01:19:21 +00:00
html {
overflow-y: auto !important;
}
2023-10-27 20:48:25 +00:00
#app {
2022-10-30 02:35:39 +00:00
min-height: 100vh;
2023-10-27 20:48:25 +00:00
display: flex;
flex-direction: column;
2022-10-30 02:35:39 +00:00
}
2022-10-28 00:14:20 +00:00
</style>