import {
fetchVenue,
maybeFollowVenue
} from "./api/discover.js";
import app from "./app.js";
var $ = Dom7;
//DISCOVER - VIEW EVENT
$(document).on(\'page:init\', \'.page[data-name="discover-view-venue"]\', async function (e) {
var venueId = e.detail.route.params.id
if (!venueId || venueId === \'-1\') {
return;
}
$(\'.loading-fullscreen\').show()
const venueData = await fetchVenue(venueId);
$(\'.loading-fullscreen\').hide()
$(\'#copy-venue-link\').attr(\'data-venue-id\', venueId);
$(\'#share-email-venue-link\').attr(\'data-venue-id\', venueId);
const mainContainer = $(\'.discover-view-event\');
if (!venueData) {
mainContainer.html(\'<div class="text-align-center">No event found</div>\');
return;
}
// Populating the Event Title
mainContainer.find(\'.event-detail-title\').text(venueData.title);
// Populating the Event Location
mainContainer.find(\'.event-time-address span\').text(venueData.location);
// Populating the Cover Image
mainContainer.find(\'.event-detail-img-box .swiper-slide .swiper-image\')
.css(\'background-image\', `url(\'${venueData.cover_photo.url}\')`)
.attr(\'alt\', venueData.cover_photo.alt);
// Populating the "About" Tab Content
mainContainer.find(\'#tab-about .event-des-wrap\').html(`<p>${venueData.description}</p>`);
// Populating the "Follow" button state
const followButton = mainContainer.find(\'.event-list-btn .btn.bg-dark\');
if (venueData.is_following) {
followButton.text(\'Following\');
} else {
followButton.text(\'Follow\');
}
// Populating the "Upcoming Events" Tab (if there are any events)
const eventsContainer = mainContainer.find(\'#tab-events .grid.event-listing\');
eventsContainer.empty(); // Clear any placeholder content
if (venueData.events.length > 0) {
venueData.events.forEach(event => {
const startDate = new Date(event.start_date);
const endDate = new Date(event.end_date);
const startMonth = startDate.toLocaleString(\'default\', {
month: \'short\'
});
const startDay = startDate.getDate();
let endDateString = \'\';
if (startDate.getDate() !== endDate.getDate()) {
endDateString = `
<div class="event-date-item">
<p>${endDate.toLocaleString(\'default\', { month: \'short\' })}</p>
<h5>${endDate.getDate()}</h5>
</div>
`
}
const eventItem = `
<a href="/discover-view-event/${event.id}" class="card event-item">
<div class="event-image position-relative">
<div class="image-rectangle" style="background-image: url(\'${event.thumbnail}\');"></div>
<div class="event-dates">
<div class="event-date-item">
<p>${startMonth}</p>
<h5>${startDay}</h5>
</div>
${endDateString}
</div>
</div>
<div class="card-content">
<h3 class="event-title">${event.title}</h3>
<p class="event-info">Starts ${event.start_date}</p>
<div class="event-info">${event.location}</div>
</div>
</a>
`;
eventsContainer.append(eventItem);
});
} else {
eventsContainer.html(\'<div class="text-align-center">No upcoming events</div>\');
}
// follow button
const is_following = venueData.is_following
if (is_following) {
mainContainer.find(\'.venue-follow-btn\').text(\'Following\')
}
mainContainer.find(\'.venue-follow-btn\').on(\'click\', async function () {
const followButton = $(this);
const isFollowing = followButton.text() === \'Following\';
// change the button text
followButton.text(isFollowing ? \'Follow\' : \'Following\');
const response = await maybeFollowVenue(venueId)
});
})
$(document).on(\'click\', \'#copy-venue-link\', function () {
const venueId = $(this).attr(\'data-venue-id\');
const eventLink = `${window.location.origin}/discover-view-venue/${venueId}`;
navigator.clipboard.writeText(eventLink);
app.toast.create({
text: \'Link copied to clipboard\',
closeTimeout: 2000
}).open()
});
// #share-email-venue-link click event
$(document).on(\'click\', \'#share-email-venue-link\', function () {
const venueId = $(this).attr(\'data-venue-id\');
const eventLink = `${window.location.origin}/discover-view-venue/${venueId}`;
window.open(`mailto:?subject=Check out this venue&body=${eventLink}`);
});