From b3f6fe113ec0a85ba82756a1f16fcb909e37edc2 Mon Sep 17 00:00:00 2001 From: Tigran Petrosyan Date: Fri, 18 Dec 2020 18:07:47 +0400 Subject: [PATCH 1/2] Fix Original Height&Width Getter&Setters --- src/ProjectData/Screen/Area/Entity/TextArea.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/ProjectData/Screen/Area/Entity/TextArea.php b/src/ProjectData/Screen/Area/Entity/TextArea.php index 7ea0756..b3cefe9 100644 --- a/src/ProjectData/Screen/Area/Entity/TextArea.php +++ b/src/ProjectData/Screen/Area/Entity/TextArea.php @@ -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; @@ -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; From e2fc8f91bd3e34841b16c3e453f369b5bb162f4b Mon Sep 17 00:00:00 2001 From: Tigran Petrosyan Date: Fri, 18 Dec 2020 18:43:01 +0400 Subject: [PATCH 2/2] Normalize Areas Ordering --- .../Screen/Area/Collection/AreaCollection.php | 29 ++++++++++++++++++- .../Screen/Area/Entity/AbstractArea.php | 2 +- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/ProjectData/Screen/Area/Collection/AreaCollection.php b/src/ProjectData/Screen/Area/Collection/AreaCollection.php index 4a94372..a5da92e 100644 --- a/src/ProjectData/Screen/Area/Collection/AreaCollection.php +++ b/src/ProjectData/Screen/Area/Collection/AreaCollection.php @@ -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 diff --git a/src/ProjectData/Screen/Area/Entity/AbstractArea.php b/src/ProjectData/Screen/Area/Entity/AbstractArea.php index 1d8f302..55c8646 100644 --- a/src/ProjectData/Screen/Area/Entity/AbstractArea.php +++ b/src/ProjectData/Screen/Area/Entity/AbstractArea.php @@ -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;