Helper::fillKwPage()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 22
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 12
c 0
b 0
f 0
dl 0
loc 22
rs 9.8666
cc 1
nc 1
nop 2
1
<?php
2
3
namespace kalanis\kw_table\kw;
4
5
6
use kalanis\kw_address_handler\Handler;
7
use kalanis\kw_address_handler\HandlerException;
8
use kalanis\kw_address_handler\Sources;
9
use kalanis\kw_forms\Adapters;
10
use kalanis\kw_forms\Exceptions\FormsException;
11
use kalanis\kw_forms\Form;
12
use kalanis\kw_input\Interfaces as InputInterface;
13
use kalanis\kw_pager\BasicPager;
14
use kalanis\kw_paging\Positions;
15
use kalanis\kw_paging\Render;
16
use kalanis\kw_table\core\Connector\PageLink;
17
use kalanis\kw_table\core\Table;
18
use kalanis\kw_table\core\Table\Order;
19
use kalanis\kw_table\form_kw\KwFilter;
20
use kalanis\kw_table\output_cli\CliRenderer;
21
use kalanis\kw_table\output_json\JsonRenderer;
22
use kalanis\kw_table\output_kw\KwRenderer;
23
24
25
/**
26
 * Class Helper
27
 * @package kalanis\kw_table\kw
28
 * Helper with table initialization
29
 */
30
class Helper
31
{
32
    protected Table $table;
33
34
    public function __construct()
35
    {
36
        $this->table = new Table();
37
    }
38
39
    /**
40
     * @param InputInterface\IFiltered $inputs
41
     * @param string $alias
42
     * @throws FormsException
43
     * @throws HandlerException
44
     * @return $this
45
     */
46
    public function fillKwPage(InputInterface\IFiltered $inputs, string $alias = 'filter'): self
47
    {
48
        // filter form
49
        $inputVariables = new Adapters\InputVarsAdapter($inputs);
50
        $inputFiles = new Adapters\InputFilesAdapter($inputs);
51
        $form = new Form($alias);
52
        $this->table->addHeaderFilter(new KwFilter($form));
53
        $form->setInputs($inputVariables, $inputFiles);
54
55
        // order links
56
        $this->table->addOrder(new Order(new Handler(new Sources\Inputs($inputs))));
57
58
        // pager
59
        $pager = new BasicPager();
60
        $pageLink = new PageLink(new Handler(new Sources\Inputs($inputs)), $pager);
61
        $pager->setActualPage($pageLink->getPageNumber());
62
        $this->table->addPager(new Render\SimplifiedPager(new Positions($pager), $pageLink));
63
64
        // output
65
        $this->table->setOutput(new KwRenderer($this->table));
66
67
        return $this;
68
    }
69
70
    /**
71
     * @param InputInterface\IFiltered $inputs
72
     * @param int $currentPage
73
     * @param string $alias
74
     * @throws FormsException
75
     * @throws HandlerException
76
     * @return $this
77
     */
78
    public function fillKwCli(InputInterface\IFiltered $inputs, ?int $currentPage = null, string $alias = 'filter'): self
79
    {
80
        // filter form
81
        $inputVariables = new Adapters\InputVarsAdapter($inputs);
82
        $inputFiles = new Adapters\InputFilesAdapter($inputs);
83
        $form = new Form($alias);
84
        $form->setMethod(InputInterface\IEntry::SOURCE_CLI);
85
        $this->table->addHeaderFilter(new KwFilter($form, false));
86
        $form->setInputs($inputVariables, $inputFiles);
87
88
        // order links
89
        $this->table->addOrder(new Order(new Handler(new Sources\Inputs($inputs))));
90
91
        // pager
92
        $pager = new BasicPager();
93
        $pageLink = new PageLink(new Handler(new Sources\Inputs($inputs)), $pager);
94
        if (!is_null($currentPage)) {
95
            $pageLink->setPageNumber($currentPage);
96
        }
97
        $pager->setActualPage($pageLink->getPageNumber());
98
        $this->table->addPager(new Render\CliPager(new Positions($pager)));
99
100
        // output
101
        $this->table->setOutput(new CliRenderer($this->table));
102
103
        return $this;
104
    }
105
106
    /**
107
     * @param InputInterface\IFiltered $inputs
108
     * @param string $alias
109
     * @throws FormsException
110
     * @throws HandlerException
111
     * @return $this
112
     */
113
    public function fillKwJson(InputInterface\IFiltered $inputs, string $alias = 'filter'): self
114
    {
115
        // filter form
116
        $inputVariables = new Adapters\InputVarsAdapter($inputs);
117
        $inputFiles = new Adapters\InputFilesAdapter($inputs);
118
        $form = new Form($alias);
119
        $this->table->addHeaderFilter(new KwFilter($form));
120
        $form->setInputs($inputVariables, $inputFiles);
121
122
        // order links
123
        $this->table->addOrder(new Order(new Handler(new Sources\Inputs($inputs))));
124
125
        // pager
126
        $pager = new BasicPager();
127
        $pageLink = new PageLink(new Handler(new Sources\Inputs($inputs)), $pager);
128
        $pager->setActualPage($pageLink->getPageNumber());
129
        $this->table->addPager(new Render\CliPager(new Positions($pager)));
130
131
        // output
132
        $this->table->setOutput(new JsonRenderer($this->table));
133
134
        return $this;
135
    }
136
137
    public function getTable(): Table
138
    {
139
        return $this->table;
140
    }
141
}
142