Skip to content

Commit 81a7f99

Browse files
authored
Merge pull request #150 from tigranmaestro/master
Normalize Areas Ordering
2 parents 0974c19 + e2fc8f9 commit 81a7f99

File tree

3 files changed

+35
-8
lines changed

3 files changed

+35
-8
lines changed

src/ProjectData/Screen/Area/Collection/AreaCollection.php

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,38 @@ private function add(AbstractArea $area): AreaCollection
4343
{
4444
$this->iteratorItems[] = $area;
4545
$this->areas[] = $area;
46-
$this->areasAssocArray[$area->getOrder()] = $area;
46+
47+
$currentOrderings = array_keys($this->areasAssocArray);
48+
if (array_key_exists($area->getOrder(), $currentOrderings)) {
49+
$maxOrdering = max($currentOrderings);
50+
$this->areasAssocArray[$maxOrdering + 1] = $area;
51+
} else {
52+
$this->areasAssocArray[$area->getOrder()] = $area;
53+
}
54+
55+
$this->normalizeOrdering();
4756

4857
return $this;
4958
}
5059

60+
private function normalizeOrdering()
61+
{
62+
$fixedItems = [];
63+
$currentItems = $this->areasAssocArray;
64+
ksort($currentItems);
65+
66+
$startOrdering = 0;
67+
foreach ($currentItems as $item) {
68+
$item->setOrder($startOrdering);
69+
$fixedItems[$startOrdering] = $item;
70+
$startOrdering++;
71+
}
72+
73+
$this->areasAssocArray = $fixedItems;
74+
$this->iteratorItems = array_values($fixedItems);
75+
$this->areas = array_values($fixedItems);
76+
}
77+
5178
/**
5279
* @param array $areaCollectionArrayData
5380
* @throws \Exception

src/ProjectData/Screen/Area/Entity/AbstractArea.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ public function getOrder(): int
159159
* @param int $order
160160
* @return $this
161161
*/
162-
private function setOrder(int $order)
162+
public function setOrder(int $order)
163163
{
164164
$this->order = $order;
165165

src/ProjectData/Screen/Area/Entity/TextArea.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -111,16 +111,16 @@ private function setFont($font): TextArea
111111
/**
112112
* @return int
113113
*/
114-
public function getOriginalHeight(): int
114+
public function getOriginalHeight(): ?int
115115
{
116116
return $this->originalHeight;
117117
}
118118

119119
/**
120-
* @param int $originalHeight
120+
* @param ?int $originalHeight
121121
* @return TextArea
122122
*/
123-
public function setOriginalHeight(int $originalHeight): TextArea
123+
public function setOriginalHeight(?int $originalHeight): TextArea
124124
{
125125
$this->originalHeight = $originalHeight;
126126

@@ -130,16 +130,16 @@ public function setOriginalHeight(int $originalHeight): TextArea
130130
/**
131131
* @return int
132132
*/
133-
public function getOriginalWidth(): int
133+
public function getOriginalWidth(): ?int
134134
{
135135
return $this->originalWidth;
136136
}
137137

138138
/**
139-
* @param int $originalWidth
139+
* @param ?int $originalWidth
140140
* @return TextArea
141141
*/
142-
public function setOriginalWidth(int $originalWidth): TextArea
142+
public function setOriginalWidth(?int $originalWidth): TextArea
143143
{
144144
$this->originalWidth = $originalWidth;
145145

0 commit comments

Comments
 (0)