fix: correctly assign items to timeline

This commit is contained in:
Björn Fromme
2025-03-25 15:47:08 +01:00
parent ecc059cefc
commit da18856cc2
4 changed files with 63 additions and 50 deletions
+9 -18
View File
@@ -41,33 +41,24 @@ class TimelineService
private function addItem(array &$rows, TimelineItem $item): void
{
$itemAdded = false;
$rowIndex = 0;
foreach ($rows as $index => $row) {
$addToRow = true;
$fitsRow = true;
foreach ($row as $entry) {
/** @var TimelineItem $entry */
if (
$item->getDateFrom() >= $entry->getDateFrom() && $item->getDateFrom() <= $entry->getDateTo()
|| $item->getDateTo() >= $entry->getDateFrom() && $item->getDateTo() <= $entry->getDateTo()
) {
$addToRow = false;
if ($entry->getDateTo() >= $item->getDateFrom() && $entry->getDateFrom() <= $item->getDateTo()) {
$fitsRow = false;
}
}
if (true === $addToRow) {
$rows[$index][$item->getKey()] = $item;
$itemAdded = true;
break;
}
$rowIndex = $index;
}
if (false === $itemAdded) {
$rows[] = [
$item->getKey() => $item,
];
if (false === $fitsRow) {
++$rowIndex;
}
$rows[$rowIndex][$item->getKey()] = $item;
}
public function getActiveWindow(): CarbonPeriod