add calendar strip date infos
This commit is contained in:
parent
df28408af3
commit
d4bd4113f1
3 changed files with 69 additions and 20 deletions
|
|
@ -27,6 +27,10 @@
|
||||||
transition: opacity 0.2s ease-in-out;
|
transition: opacity 0.2s ease-in-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.calendar-strip__day.active {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
.calendar-strip__calendar-btn {
|
.calendar-strip__calendar-btn {
|
||||||
border: var(--border);
|
border: var(--border);
|
||||||
padding: 0.2rem 0.5rem;
|
padding: 0.2rem 0.5rem;
|
||||||
|
|
@ -38,15 +42,15 @@
|
||||||
left: 0;
|
left: 0;
|
||||||
top: 100%;
|
top: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 0;
|
max-height: 0;
|
||||||
padding: 0 var(--margin-body);
|
padding: 0 var(--margin-body);
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
z-index: -1;
|
z-index: -1;
|
||||||
transition: height .2s ease-in-out;
|
transition: max-height 0.3s ease-in-out;
|
||||||
border-bottom: var(--border);
|
border-bottom: var(--border);
|
||||||
}
|
}
|
||||||
.calendar-strip__date.open {
|
.calendar-strip__date.open {
|
||||||
height: 10rem;
|
max-height: 20rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.calendar-strip__sessions {
|
.calendar-strip__sessions {
|
||||||
|
|
@ -54,7 +58,11 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.calendar-strip__session {
|
.calendar-strip__session {
|
||||||
display: flex;
|
display: grid;
|
||||||
|
grid-template-columns: repeat(5, 1fr);
|
||||||
|
}
|
||||||
|
.calendar-strip__session:not(:last-child) {
|
||||||
|
margin-bottom: 4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.calendar-strip__session > div {
|
.calendar-strip__session > div {
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,15 @@ function getCorrespondingSeasons($request) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getTimeDifference($start, $end) {
|
||||||
|
$start = new DateTime($start);
|
||||||
|
$end = new DateTime($end);
|
||||||
|
|
||||||
|
$difference = $end->diff($start);
|
||||||
|
|
||||||
|
return $difference->h . "h" . $difference->i;
|
||||||
|
}
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'pattern' => '/month-dates.json',
|
'pattern' => '/month-dates.json',
|
||||||
'method' => 'POST',
|
'method' => 'POST',
|
||||||
|
|
@ -20,18 +29,24 @@ return [
|
||||||
$correspondingSeasons = getCorrespondingSeasons($request);
|
$correspondingSeasons = getCorrespondingSeasons($request);
|
||||||
|
|
||||||
foreach ($correspondingSeasons->children() as $event) {
|
foreach ($correspondingSeasons->children() as $event) {
|
||||||
|
|
||||||
|
$eventInfos = [
|
||||||
|
"title" => $event->title()->value(),
|
||||||
|
"place" => $event->place()->value(),
|
||||||
|
"authors" => $event->authors()->value()
|
||||||
|
];
|
||||||
|
|
||||||
if ($event->isMapadoEvent() == 'false') {
|
if ($event->isMapadoEvent() == 'false') {
|
||||||
foreach ($event->sessions()->toStructure() as $session) {
|
foreach ($event->sessions()->toStructure() as $session) {
|
||||||
|
|
||||||
$sessionMonth = $session->date()->toDate('Y-m');
|
$sessionMonth = $session->date()->toDate('Y-m');
|
||||||
if ($sessionMonth === $requestMonth) {
|
if ($sessionMonth === $requestMonth) {
|
||||||
$day = $session->date()->toDate('d');
|
$day = intval($session->date()->toDate('d'));
|
||||||
$dates[$day][] = [
|
$dates[$day][] = array_merge($eventInfos, [
|
||||||
"day" => $day,
|
"day" => $day,
|
||||||
"title" => $event->title()->value(),
|
|
||||||
"time" => $session->time()->value(),
|
"time" => $session->time()->value(),
|
||||||
"duration" => $event->duration()->value(),
|
"duration" => $event->duration()->value(),
|
||||||
];
|
]);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -42,6 +57,8 @@ return [
|
||||||
"requestParams" => [],
|
"requestParams" => [],
|
||||||
"requestFields" => [
|
"requestFields" => [
|
||||||
["name" => "title"],
|
["name" => "title"],
|
||||||
|
["name" => "address"],
|
||||||
|
["name" => "slug"],
|
||||||
[
|
[
|
||||||
"name" => "eventDateList",
|
"name" => "eventDateList",
|
||||||
"subfields" => [
|
"subfields" => [
|
||||||
|
|
@ -55,18 +72,27 @@ return [
|
||||||
|
|
||||||
$mapadoEvent = fetchMapadoEvent($request);
|
$mapadoEvent = fetchMapadoEvent($request);
|
||||||
|
|
||||||
|
$duration = null;
|
||||||
foreach ($mapadoEvent->eventDateList as $session) {
|
foreach ($mapadoEvent->eventDateList as $session) {
|
||||||
$sessionMonth = substr($session->startDate, 0, 7);
|
$sessionMonth = substr($session->startDate, 0, 7);
|
||||||
if ($sessionMonth === $requestMonth) {
|
if ($sessionMonth === $requestMonth) {
|
||||||
|
|
||||||
$day = intval(substr($session->startDate, 8, 2));
|
$day = intval(substr($session->startDate, 8, 2));
|
||||||
$time = substr($session->startDate, 11, 5);
|
$startTime = substr($session->startDate, 11, 5);
|
||||||
|
$eventDateId = explode('/', $session->{'@id'});
|
||||||
|
$eventDateId = $eventDateId[count($eventDateId) - 1];
|
||||||
|
|
||||||
$dates[$day][] = [
|
if (isset($session->endDate) && !$duration) {
|
||||||
|
$endTime = substr($session->endDate, 11 , 5);
|
||||||
|
$duration = getTimeDifference($startTime, $endTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
$dates[$day][] = array_merge($eventInfos, [
|
||||||
"day" => $day,
|
"day" => $day,
|
||||||
"title" => $event->title()->value(),
|
"time" => str_replace(':', 'h', $startTime),
|
||||||
"time" => str_replace(':', 'h', $time)
|
"duration" => $duration,
|
||||||
];
|
"ticketingUrl" => 'https://cdn-besancon.mapado.com/event/' . $mapadoEvent->slug . '?eventDate=' . $eventDateId
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,16 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
handleDayHover() {
|
handleDayHover() {
|
||||||
this.targetSessions = this.date;
|
|
||||||
if (this.date.length > 0) {this.open = true} else {this.open = false}
|
if (this.date.length > 0) {
|
||||||
|
this.targetSessions = this.date;
|
||||||
|
this.open = true
|
||||||
|
} else {
|
||||||
|
setTimeout(() => {
|
||||||
|
this.targetSessions = this.date;
|
||||||
|
}, 100)
|
||||||
|
this.open = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}"
|
}"
|
||||||
|
|
||||||
|
|
@ -38,7 +46,7 @@
|
||||||
</div>
|
</div>
|
||||||
<ul class="calendar-strip__days">
|
<ul class="calendar-strip__days">
|
||||||
<template x-for="(date, index) in dates">
|
<template x-for="(date, index) in dates">
|
||||||
<li class="calendar-strip__day">
|
<li class="calendar-strip__day" :class="targetSessions.length > 0 && index == targetSessions[0].day ? 'active' : ''">
|
||||||
<button
|
<button
|
||||||
x-text="index"
|
x-text="index"
|
||||||
:disabled="date.length === 0 ? true : false"
|
:disabled="date.length === 0 ? true : false"
|
||||||
|
|
@ -54,10 +62,17 @@
|
||||||
<template x-for="session in targetSessions">
|
<template x-for="session in targetSessions">
|
||||||
<li class="calendar-strip__session">
|
<li class="calendar-strip__session">
|
||||||
<div x-html="`${session.day} ${monthName}<br><br>${session.time}`"></div>
|
<div x-html="`${session.day} ${monthName}<br><br>${session.time}`"></div>
|
||||||
<div x-html="`<strong>${session.title}</strong>`"></div>
|
<div>
|
||||||
<div></div>
|
<p><strong x-html="`<strong>${session.title}</strong>`"></strong></p>
|
||||||
<div></div>
|
<p x-html="session.authors"></p>
|
||||||
<div xhtml=""></div>
|
</div>
|
||||||
|
<div x-text="`${session.duration}`"></div>
|
||||||
|
<div x-text="`${session.place}`"></div>
|
||||||
|
<template x-if="session.ticketingUrl">
|
||||||
|
<div>
|
||||||
|
<a :href="session.ticketingUrl" target="_blank" title="Accéder à la billetterie">Billetterie</a>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
</li>
|
</li>
|
||||||
</template>
|
</template>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue