2019-01-18 14:03:58 +01:00
|
|
|
<template>
|
2022-08-16 06:55:09 +02:00
|
|
|
<v-card flat outlined rounded class='mx-3 my-3 rounded-xl'>
|
2019-01-21 20:58:25 +01:00
|
|
|
<v-card-title primary-title>
|
2022-08-03 18:40:05 +02:00
|
|
|
<h3 class='headline mb-0'>
|
2020-01-25 14:59:14 +01:00
|
|
|
<v-icon
|
2022-08-03 18:40:05 +02:00
|
|
|
v-if='hasUser'
|
|
|
|
|
class='ml-1 mr-1'
|
2020-01-25 14:59:14 +01:00
|
|
|
medium
|
|
|
|
|
title="Dölj"
|
2022-08-03 18:40:05 +02:00
|
|
|
@click="toggleIgnore('band', event.band.name)"
|
2020-01-25 14:59:14 +01:00
|
|
|
>mdi-eye-off</v-icon
|
|
|
|
|
>{{ event.band.name }}
|
|
|
|
|
</h3>
|
2019-01-21 20:58:25 +01:00
|
|
|
</v-card-title>
|
|
|
|
|
<v-container>
|
|
|
|
|
<v-layout row wrap>
|
2020-01-25 14:59:14 +01:00
|
|
|
<v-flex xs12 sm6
|
2022-08-03 18:40:05 +02:00
|
|
|
><strong class='mr-1' v-text="$t('events.date')" />{{
|
2020-01-25 14:59:14 +01:00
|
|
|
event.date
|
|
|
|
|
}}
|
2022-08-03 18:40:05 +02:00
|
|
|
({{ weekday }} {{ daysUntil }})
|
|
|
|
|
</v-flex
|
2020-01-25 14:59:14 +01:00
|
|
|
>
|
2022-08-03 18:40:05 +02:00
|
|
|
<v-flex v-if='event.time' xs12 sm6
|
|
|
|
|
><strong class='mr-1' v-text="$t('events.time')" />{{
|
2020-01-25 14:59:14 +01:00
|
|
|
event.time
|
2022-08-03 18:40:05 +02:00
|
|
|
}}
|
|
|
|
|
</v-flex
|
2020-01-25 14:59:14 +01:00
|
|
|
>
|
2019-01-21 20:58:25 +01:00
|
|
|
</v-layout>
|
|
|
|
|
<v-layout row wrap>
|
2020-01-25 14:59:14 +01:00
|
|
|
<v-flex xs12 sm6 md3
|
2022-08-03 18:40:05 +02:00
|
|
|
><strong class='mr-1' v-text="$t('events.hall')" />
|
|
|
|
|
<v-icon
|
|
|
|
|
v-if='hasUser'
|
|
|
|
|
class='ml-1 mr-1'
|
2020-01-25 14:59:14 +01:00
|
|
|
small
|
|
|
|
|
:title="$t('events.hide')"
|
2022-08-03 18:40:05 +02:00
|
|
|
@click="toggleIgnore('danceHall', event.danceHall.name)"
|
|
|
|
|
>mdi-eye-off
|
|
|
|
|
</v-icon
|
|
|
|
|
>
|
|
|
|
|
{{ event.danceHall.name }}
|
|
|
|
|
</v-flex
|
2020-01-25 14:59:14 +01:00
|
|
|
>
|
|
|
|
|
<v-flex xs12 sm6 md3
|
2022-08-03 18:40:05 +02:00
|
|
|
><strong class='mr-1' v-text="$t('events.city')" />
|
|
|
|
|
<v-icon
|
|
|
|
|
v-if='hasUser'
|
|
|
|
|
class='ml-1 mr-1'
|
2020-01-25 14:59:14 +01:00
|
|
|
small
|
|
|
|
|
:title="$t('events.hide')"
|
2022-08-03 18:40:05 +02:00
|
|
|
@click="toggleIgnore('city', event.danceHall.city)"
|
|
|
|
|
>mdi-eye-off
|
|
|
|
|
</v-icon
|
|
|
|
|
>
|
|
|
|
|
{{ event.danceHall.city }}
|
|
|
|
|
</v-flex
|
2020-01-25 14:59:14 +01:00
|
|
|
>
|
|
|
|
|
<v-flex xs12 sm6 md3
|
2022-08-03 18:40:05 +02:00
|
|
|
><strong class='mr-1' v-text="$t('events.municipality')" />
|
|
|
|
|
<v-icon
|
|
|
|
|
v-if='hasUser'
|
|
|
|
|
class='ml-1 mr-1'
|
2020-01-25 14:59:14 +01:00
|
|
|
small
|
|
|
|
|
:title="$t('events.hide')"
|
2022-08-03 18:40:05 +02:00
|
|
|
@click="
|
|
|
|
|
toggleIgnore('municipality', event.danceHall.municipality)
|
|
|
|
|
"
|
|
|
|
|
>mdi-eye-off
|
|
|
|
|
</v-icon
|
|
|
|
|
>
|
|
|
|
|
{{ event.danceHall.municipality }}
|
|
|
|
|
</v-flex
|
2020-01-25 14:59:14 +01:00
|
|
|
>
|
|
|
|
|
<v-flex xs12 sm6 md3
|
2022-08-03 18:40:05 +02:00
|
|
|
><strong class='mr-1' v-text="$t('events.state')" />
|
|
|
|
|
<v-icon
|
|
|
|
|
v-if='hasUser'
|
|
|
|
|
class='ml-1 mr-1'
|
2020-01-25 14:59:14 +01:00
|
|
|
small
|
|
|
|
|
:title="$t('events.hide')"
|
2022-08-03 18:40:05 +02:00
|
|
|
@click="toggleIgnore('state', event.danceHall.state)"
|
|
|
|
|
>mdi-eye-off
|
|
|
|
|
</v-icon
|
|
|
|
|
>
|
|
|
|
|
{{ event.danceHall.state }}
|
|
|
|
|
</v-flex
|
2020-01-25 14:59:14 +01:00
|
|
|
>
|
2019-01-21 20:58:25 +01:00
|
|
|
</v-layout>
|
2020-04-06 10:52:55 +02:00
|
|
|
<v-layout
|
2022-08-03 18:40:05 +02:00
|
|
|
v-for='distance in event.distances'
|
|
|
|
|
:key='distance.origin'
|
2020-04-06 10:52:55 +02:00
|
|
|
row
|
|
|
|
|
wrap
|
|
|
|
|
>
|
2019-03-02 15:11:46 +01:00
|
|
|
<v-flex xs12 sm6>
|
2019-03-02 11:45:45 +01:00
|
|
|
<v-icon>mdi-home</v-icon>
|
2020-01-25 14:59:14 +01:00
|
|
|
<span
|
2022-08-03 18:40:05 +02:00
|
|
|
><strong>{{ distance.origin }}</strong></span
|
2020-01-25 14:59:14 +01:00
|
|
|
>
|
2019-03-02 11:45:45 +01:00
|
|
|
</v-flex>
|
2019-03-02 15:11:46 +01:00
|
|
|
<v-flex xs12 sm6>
|
2019-03-02 11:45:45 +01:00
|
|
|
<v-icon>mdi-car</v-icon>
|
2020-01-25 14:59:14 +01:00
|
|
|
<span>{{ (distance.distance / 1000) | numeral('0,0.00') }} km</span>
|
2019-03-02 11:45:45 +01:00
|
|
|
<v-icon>mdi-clock-outline</v-icon>
|
2020-01-25 14:59:14 +01:00
|
|
|
<span>{{ distance.duration }}</span>
|
2019-03-02 11:45:45 +01:00
|
|
|
</v-flex>
|
|
|
|
|
</v-layout>
|
2019-01-21 20:58:25 +01:00
|
|
|
</v-container>
|
|
|
|
|
</v-card>
|
2019-01-18 14:03:58 +01:00
|
|
|
</template>
|
|
|
|
|
|
2022-08-03 18:40:05 +02:00
|
|
|
<script lang='ts'>
|
|
|
|
|
// eslint-disable-next-line import/no-duplicates
|
|
|
|
|
import { format, formatDistanceToNow, parseISO } from 'date-fns'
|
|
|
|
|
// eslint-disable-next-line import/no-duplicates
|
|
|
|
|
import { enGB, sv } from 'date-fns/locale'
|
|
|
|
|
import { computed, defineComponent, getCurrentInstance, PropType } from 'vue'
|
|
|
|
|
import { Event } from '~/graphql/generated/operations'
|
2020-01-21 15:51:51 +01:00
|
|
|
|
2022-08-03 18:40:05 +02:00
|
|
|
export default defineComponent({
|
2021-11-19 21:44:36 +01:00
|
|
|
name: 'EventDetail',
|
2020-01-25 14:59:14 +01:00
|
|
|
props: {
|
|
|
|
|
event: {
|
2022-08-03 18:40:05 +02:00
|
|
|
type: Object as PropType<Event>,
|
2020-01-25 14:59:14 +01:00
|
|
|
required: true
|
2019-02-04 09:38:58 +01:00
|
|
|
},
|
2020-01-25 14:59:14 +01:00
|
|
|
hasUser: {
|
|
|
|
|
type: Boolean,
|
|
|
|
|
required: true
|
2020-01-21 15:51:51 +01:00
|
|
|
},
|
2020-01-25 14:59:14 +01:00
|
|
|
toggleIgnore: {
|
|
|
|
|
type: Function,
|
|
|
|
|
required: true
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
setup(props) {
|
2022-08-03 18:40:05 +02:00
|
|
|
const instance = getCurrentInstance()
|
|
|
|
|
const locale = computed(() => (instance?.proxy.$i18n.locale ?? 'sv') === 'en' ? enGB : sv )
|
2020-01-25 14:59:14 +01:00
|
|
|
const time = (props.event.time || '').split('-')[0].replace('.', ':')
|
2022-08-03 18:40:05 +02:00
|
|
|
const weekday = format(parseISO(props.event.date), 'EEEE', { locale: locale.value })
|
|
|
|
|
const daysUntil = formatDistanceToNow(parseISO(`${props.event.date}T${time}`), { addSuffix: true, locale: locale.value })
|
2020-01-25 14:59:14 +01:00
|
|
|
return {
|
|
|
|
|
weekday,
|
|
|
|
|
daysUntil
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-08-03 18:40:05 +02:00
|
|
|
})
|
2019-01-18 14:03:58 +01:00
|
|
|
</script>
|