flaschengeist-frontend/src/plugins/user/components/Widget.vue

66 lines
2.1 KiB
Vue
Raw Normal View History

<template>
<q-card style="text-align: center;">
<q-card-section class="row justify-center content-stretch">
<div class="col-4">
<div style="width: 100%; padding-bottom: 100%; position: relative;">
<q-avatar style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;">
<img :src="avatarLink" />
</q-avatar>
</div>
</div>
<div class="col-8">
2021-01-27 07:16:44 +00:00
<span class="text-h6">Hallo {{ name }}</span
><br />
2020-11-15 19:08:24 +00:00
<span v-if="hasBirthday">Herzlichen Glückwunsch zum Geburtstag!<br /></span>
2021-01-27 07:16:44 +00:00
<span v-if="birthday.length > 0"
>Heute <span v-if="birthday.length === 1">hat </span><span v-else>haben </span
><span v-for="(user, index) in birthday" v-bind:key="index"
>{{ user.display_name }}<span v-if="index < birthday.length - 1">, </span></span
>
Geburtstag.</span
>
2020-11-15 19:08:24 +00:00
<span v-else>Heute stehen keine Geburtstage an</span>
</div>
</q-card-section>
</q-card>
</template>
<script lang="ts">
2021-01-27 07:16:44 +00:00
import { computed, defineComponent, onMounted, ref } from '@vue/composition-api';
import { Store } from 'vuex';
import { StateInterface } from 'src/store';
export default defineComponent({
2020-11-15 19:08:24 +00:00
name: 'Greeting',
setup(_, { root }) {
const store = <Store<StateInterface>>root.$store;
2020-11-15 19:08:24 +00:00
onMounted(() => store.dispatch('user/getUsers', false));
const name = ref(store.state.user.currentUser?.display_name);
2020-11-16 01:28:03 +00:00
const avatarLink = ref(store.state.user.currentUser?.avatar_url);
2020-11-15 19:08:24 +00:00
function userHasBirthday(user: FG.User) {
const today = new Date();
return (
user.birthday &&
2020-11-17 17:09:05 +00:00
user.birthday.getMonth() === today.getMonth() &&
user.birthday.getDate() === today.getDate()
2020-11-15 19:08:24 +00:00
);
}
const hasBirthday = computed(() => {
return userHasBirthday(<FG.User>store.state.user.currentUser);
});
const birthday = computed(() =>
store.state.user.users
.filter(userHasBirthday)
2021-01-27 07:16:44 +00:00
.filter(user => user.userid !== store.state.user.currentUser?.userid)
2020-11-15 19:08:24 +00:00
);
return { avatarLink, name, hasBirthday, birthday };
2021-01-27 07:16:44 +00:00
}
});
</script>