Naprawiona większość mechanizmów przed spotkaniami
This commit is contained in:
parent
8f2aebda66
commit
c52190436a
@ -134,15 +134,32 @@ class WorkflowEngine {
|
||||
// 7. Fetch Spotkania columns (upcoming meetings)
|
||||
$today = date('Y-m-d H:i:s');
|
||||
$stmt_meetings = $this->pdo->prepare("
|
||||
SELECT bni_groups.id as group_id, bni_groups.name as group_name, MIN(calendar_events.start_datetime) as next_meeting_date
|
||||
FROM bni_groups
|
||||
LEFT JOIN calendar_event_groups ON bni_groups.id = calendar_event_groups.bni_group_id
|
||||
LEFT JOIN calendar_events ON calendar_event_groups.calendar_event_id = calendar_events.id AND calendar_events.start_datetime >= :today
|
||||
GROUP BY bni_groups.id
|
||||
ORDER BY bni_groups.name
|
||||
WITH RankedMeetings AS (
|
||||
SELECT
|
||||
bg.id as group_id,
|
||||
bg.name as group_name,
|
||||
ce.start_datetime,
|
||||
ROW_NUMBER() OVER(PARTITION BY bg.id ORDER BY ce.start_datetime) as rn
|
||||
FROM bni_groups bg
|
||||
JOIN calendar_event_groups ceg ON bg.id = ceg.bni_group_id
|
||||
JOIN calendar_events ce ON ceg.calendar_event_id = ce.id
|
||||
WHERE ce.start_datetime >= :today
|
||||
)
|
||||
SELECT group_id, group_name, start_datetime
|
||||
FROM RankedMeetings
|
||||
WHERE rn <= 3
|
||||
ORDER BY group_id, start_datetime;
|
||||
");
|
||||
$stmt_meetings->execute(['today' => $today]);
|
||||
$spotkania_cols = $stmt_meetings->fetchAll(PDO::FETCH_ASSOC);
|
||||
$upcoming_meetings_flat = $stmt_meetings->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
$spotkania_cols = [];
|
||||
foreach ($upcoming_meetings_flat as $meeting) {
|
||||
$spotkania_cols[$meeting['group_id']]['group_id'] = $meeting['group_id'];
|
||||
$spotkania_cols[$meeting['group_id']]['group_name'] = $meeting['group_name'];
|
||||
$spotkania_cols[$meeting['group_id']]['meetings'][] = $meeting['start_datetime'];
|
||||
}
|
||||
|
||||
|
||||
return [
|
||||
'people' => $people,
|
||||
|
||||
44
index.php
44
index.php
@ -124,9 +124,15 @@ $status_colors = [
|
||||
</tr>
|
||||
<tr class="text-center">
|
||||
<?php foreach ($spotkania_cols as $col): ?>
|
||||
<th>
|
||||
<th data-group-id="<?= $col['group_id'] ?>" data-meetings='<?= json_encode($col['meetings'] ?? []) ?>'>
|
||||
<div class="d-flex justify-content-center align-items-center">
|
||||
<button class="btn btn-sm btn-outline-secondary meeting-nav-btn meeting-prev-btn"><i class="bi bi-chevron-left"></i></button>
|
||||
<div class="mx-2 text-center">
|
||||
<?= htmlspecialchars($col['group_name']) ?><br>
|
||||
<small><?= $col['next_meeting_date'] ? date('d.m.Y', strtotime($col['next_meeting_date'])) : 'Brak' ?></small>
|
||||
<small class="meeting-date"></small>
|
||||
</div>
|
||||
<button class="btn btn-sm btn-outline-secondary meeting-nav-btn meeting-next-btn"><i class="bi bi-chevron-right"></i></button>
|
||||
</div>
|
||||
</th>
|
||||
<?php endforeach; ?>
|
||||
<?php foreach ($processes as $col): ?>
|
||||
@ -711,7 +717,41 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
editMemberOnlyFields.style.display = isMember ? 'block' : 'none';
|
||||
});
|
||||
|
||||
// Meeting navigation
|
||||
document.querySelectorAll('[data-group-id]').forEach(function(headerCell) {
|
||||
let meetings = JSON.parse(headerCell.dataset.meetings);
|
||||
let currentIndex = 0;
|
||||
let dateElement = headerCell.querySelector('.meeting-date');
|
||||
let prevBtn = headerCell.querySelector('.meeting-prev-btn');
|
||||
let nextBtn = headerCell.querySelector('.meeting-next-btn');
|
||||
|
||||
function updateDate() {
|
||||
if (meetings.length > 0) {
|
||||
let date = new Date(meetings[currentIndex]);
|
||||
dateElement.textContent = date.toLocaleDateString('pl-PL', { day: '2-digit', month: '2-digit', year: 'numeric' });
|
||||
} else {
|
||||
dateElement.textContent = 'Brak';
|
||||
}
|
||||
prevBtn.disabled = currentIndex === 0;
|
||||
nextBtn.disabled = currentIndex === meetings.length - 1;
|
||||
}
|
||||
|
||||
prevBtn.addEventListener('click', function() {
|
||||
if (currentIndex > 0) {
|
||||
currentIndex--;
|
||||
updateDate();
|
||||
}
|
||||
});
|
||||
|
||||
nextBtn.addEventListener('click', function() {
|
||||
if (currentIndex < meetings.length - 1) {
|
||||
currentIndex++;
|
||||
updateDate();
|
||||
}
|
||||
});
|
||||
|
||||
updateDate();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user