Completed
Push — master ( 545fc8...ff5087 )
by Mark
36s queued 28s
created

AutoFit::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 1
c 1
b 0
f 0
dl 0
loc 3
ccs 2
cts 2
cp 1
rs 10
cc 1
nc 1
nop 1
crap 1
1
<?php
2
3
namespace PhpOffice\PhpSpreadsheet\Worksheet;
4
5
use PhpOffice\PhpSpreadsheet\Cell\CellAddress;
6
use PhpOffice\PhpSpreadsheet\Cell\CellRange;
7
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
8
9
class AutoFit
10
{
11
    protected Worksheet $worksheet;
12
13 49
    public function __construct(Worksheet $worksheet)
14
    {
15 49
        $this->worksheet = $worksheet;
16
    }
17
18 49
    public function getAutoFilterIndentRanges(): array
19
    {
20 49
        $autoFilterIndentRanges = [];
21 49
        $autoFilterIndentRanges[] = $this->getAutoFilterIndentRange($this->worksheet->getAutoFilter());
22
23 49
        foreach ($this->worksheet->getTableCollection() as $table) {
24
            /** @var Table $table */
25 2
            if ($table->getShowHeaderRow() === true && $table->getAllowFilter() === true) {
26 1
                $autoFilter = $table->getAutoFilter();
27 1
                if ($autoFilter !== null) {
28 1
                    $autoFilterIndentRanges[] = $this->getAutoFilterIndentRange($autoFilter);
29
                }
30
            }
31
        }
32
33 49
        return array_filter($autoFilterIndentRanges);
34
    }
35
36 49
    private function getAutoFilterIndentRange(AutoFilter $autoFilter): ?string
37
    {
38 49
        $autoFilterRange = $autoFilter->getRange();
39 49
        $autoFilterIndentRange = null;
40
41 49
        if (!empty($autoFilterRange)) {
42 3
            $autoFilterRangeBoundaries = Coordinate::rangeBoundaries($autoFilterRange);
43 3
            $autoFilterIndentRange = (string) new CellRange(
44 3
                CellAddress::fromColumnAndRow($autoFilterRangeBoundaries[0][0], $autoFilterRangeBoundaries[0][1]),
45 3
                CellAddress::fromColumnAndRow($autoFilterRangeBoundaries[1][0], $autoFilterRangeBoundaries[0][1])
46 3
            );
47
        }
48
49 49
        return $autoFilterIndentRange;
50
    }
51
}
52