Skip to content

Commit

Permalink
Merge pull request #150 from tigranmaestro/master
Browse files Browse the repository at this point in the history
Normalize Areas Ordering
  • Loading branch information
ArtyomHov authored Dec 18, 2020
2 parents 0974c19 + e2fc8f9 commit 81a7f99
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 8 deletions.
29 changes: 28 additions & 1 deletion src/ProjectData/Screen/Area/Collection/AreaCollection.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,38 @@ private function add(AbstractArea $area): AreaCollection
{
$this->iteratorItems[] = $area;
$this->areas[] = $area;
$this->areasAssocArray[$area->getOrder()] = $area;

$currentOrderings = array_keys($this->areasAssocArray);
if (array_key_exists($area->getOrder(), $currentOrderings)) {
$maxOrdering = max($currentOrderings);
$this->areasAssocArray[$maxOrdering + 1] = $area;
} else {
$this->areasAssocArray[$area->getOrder()] = $area;
}

$this->normalizeOrdering();

return $this;
}

private function normalizeOrdering()
{
$fixedItems = [];
$currentItems = $this->areasAssocArray;
ksort($currentItems);

$startOrdering = 0;
foreach ($currentItems as $item) {
$item->setOrder($startOrdering);
$fixedItems[$startOrdering] = $item;
$startOrdering++;
}

$this->areasAssocArray = $fixedItems;
$this->iteratorItems = array_values($fixedItems);
$this->areas = array_values($fixedItems);
}

/**
* @param array $areaCollectionArrayData
* @throws \Exception
Expand Down
2 changes: 1 addition & 1 deletion src/ProjectData/Screen/Area/Entity/AbstractArea.php
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ public function getOrder(): int
* @param int $order
* @return $this
*/
private function setOrder(int $order)
public function setOrder(int $order)
{
$this->order = $order;

Expand Down
12 changes: 6 additions & 6 deletions src/ProjectData/Screen/Area/Entity/TextArea.php
Original file line number Diff line number Diff line change
Expand Up @@ -111,16 +111,16 @@ private function setFont($font): TextArea
/**
* @return int
*/
public function getOriginalHeight(): int
public function getOriginalHeight(): ?int
{
return $this->originalHeight;
}

/**
* @param int $originalHeight
* @param ?int $originalHeight
* @return TextArea
*/
public function setOriginalHeight(int $originalHeight): TextArea
public function setOriginalHeight(?int $originalHeight): TextArea
{
$this->originalHeight = $originalHeight;

Expand All @@ -130,16 +130,16 @@ public function setOriginalHeight(int $originalHeight): TextArea
/**
* @return int
*/
public function getOriginalWidth(): int
public function getOriginalWidth(): ?int
{
return $this->originalWidth;
}

/**
* @param int $originalWidth
* @param ?int $originalWidth
* @return TextArea
*/
public function setOriginalWidth(int $originalWidth): TextArea
public function setOriginalWidth(?int $originalWidth): TextArea
{
$this->originalWidth = $originalWidth;

Expand Down

0 comments on commit 81a7f99

Please sign in to comment.