You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

216 lines
6.3 KiB

<template>
<v-dialog
fullscreen
v-model="dialogActive"
@click:outside="$emit('close-saved-exhibition')"
>
<v-card>
<v-spacer class="pt-15 pa-7">
<v-spacer :class="$vuetify.breakpoint.smAndUp ? 'd-flex align-center pt-10' : 'd-flex align-center pt-10'">
<div class="circle-decoration me-2"></div>
<div class="circle-decoration me-2"></div>
<span class="font-weight-bold text-size-20 ms-7 text-height-26">{{ $t("userProfile.savedExhibitions") }}</span>
</v-spacer>
<v-spacer class="mb-2 mt-7">
<span class="filter-title-font">{{ $t("userProfile.savedExhibitionsFilter") }}</span>
</v-spacer>
<v-spacer class="d-flex">
<div class="input-country-wrap me-5">
<v-autocomplete
class="input-border"
solo flat
hide-details
dense
:items="countryOptions"
item-text="name"
item-value="id"
v-model="countrySelect"
></v-autocomplete>
</div>
<!-- <div class="input-status-wrap">
<v-select
outlined
hide-details
dense
:items="statusOptions"
item-text="status"
item-value="id"
v-model="statusSelect"
></v-select>
</div> -->
</v-spacer>
<v-spacer class="d-flex justify-center mb-7">
<div v-if="userVisibleExhibitionList.length === 0" class="no-picture-wrap">
<v-img
:src="require('~/assets/img/savedExhibitionEmpty.png')"
contain
max-width="210px"
max-height="153px"
></v-img>
<div class="d-flex justify-center">
<span class="empty-exhibitions-font">{{ $t("userProfile.noSavedExhibitions") }}</span>
</div>
</div>
<v-spacer v-else class="mt-7">
<div v-if="$vuetify.breakpoint.smAndUp">
<ExhibitionListCard
v-for="(exhibition,index) in userVisibleExhibitionList.slice((this.page-1)*6,this.page*6)" :key="index"
:item="exhibition"
@toggle-favorite="removeExhibitionRelation(index)"
></ExhibitionListCard>
</div>
<!-- <div v-if="$vuetify.breakpoint.xsOnly">
<ExhibitionListCardMobile
v-for="(exhibition,index) in userVisibleExhibitionList.slice((this.page-1)*6,this.page*6)" :key="index"
class="mb-5"
:item="exhibition"
@toggle-favorite="removeExhibitionRelation(index)"
></ExhibitionListCardMobile>
</div> -->
</v-spacer>
</v-spacer>
<v-spacer
class="d-flex justify-center no-picture-btn pt-5"
v-if="userVisibleExhibitionList.length === 0"
>
<v-btn
class="border-radius-12"
color="primary"
:to="localePath('/')"
>
{{ $t("Explore with ShowEasy") }}
</v-btn>
</v-spacer>
<v-spacer
v-else
class="d-flex justify-end pb-15 me-7"
>
<v-pagination
v-model="page"
class="mt-15"
:length="pageLength"
></v-pagination>
</v-spacer>
</v-spacer>
</v-card>
</v-dialog>
</template>
<script>
import ExhibitionListCard from "~/components/exhibition/ExhibitionListCard.vue";
// import ExhibitionListCardMobile from "~/components/exhibition/ExhibitionListCardMobile.vue";
export default {
components: {
ExhibitionListCard,
// ExhibitionListCardMobile
},
props: {
dialogActive: {
type: Boolean,
required: true,
default: false
},
userVisibleExhibitionList: {
type: Array,
required: true,
default: []
},
pageLength: {
type: Number,
required: true,
default: 0
}
},
data() {
return {
countryOptions: [],
countrySelect: 999,
statusOptions: [],
statusSelect: 100,
page: 1
}
},
created() {
// this.$axios.get(`users/countries?lang=${this.$i18n.locale.replace('-','')}`)
// .then((result) => {
// const initial = {
// name: this.$t('userProfile.allCountries'),
// id: 999
// }
// this.countryOptions = result.data.result
// this.countryOptions.splice(0,0,initial)
// }).catch((err) => {
// console.log(err)
// });
// this.$axios.get(`exhibitions/filters?lang=${this.$i18n.locale.replace('-','')}`)
// .then((result) => {
// this.statusOptions = result.data.filters.statuses
// }).catch((err) => {
// console.log(err)
// });
},
methods: {
removeExhibitionRelation(index) {
this.$axios.put(`/member/exhibitions?jwt=${this.$auth.$storage.getUniversal('jwt') ? this.$auth.$storage.getUniversal('jwt').token : ''}&exhibition_id=${this.userVisibleExhibitionList[index].id}&delete=true`)
.then((result) => {
if (this.countrySelect.toString() !== '999') {
this.countrySelect = 999
}
this.$emit('refetch-user')
this.$emit('reload-page')
this.$emit('close-saved-exhibition')
}).catch((err) => {
console.log(err)
});
}
},
watch: {
countrySelect: {
handler:function() {
if (this.countrySelect) {
this.$emit('filter-list',this.countrySelect.toString())
}
}
}
}
}
</script>
<style lang="scss" scoped>
.filter-title-font {
font-weight: 700;
font-size: 16px;
line-height: 21px;
letter-spacing: 0.02em;
}
.input-country-wrap {
@media screen and (max-width: 600px) {
width: 142px;
}
@media screen and (min-width: 600px) and (max-width: 960px) {
width: 160px;
}
}
.input-status-wrap {
@media screen and (max-width: 600px) {
width: 125px;
}
@media screen and (min-width: 600px) and (max-width: 960px) {
width: 142px;
}
}
.no-picture-wrap {
@media screen and (max-width: 600px) {
margin-top: 80px;
}
@media screen and (min-width: 600px) and (max-width: 960px) {
margin-top: 90px;
}
}
// .v-input {
// font-size: 14px;
// }
.no-picture-btn {
padding-bottom: 75px;
}
</style>