AddClasses::_prepareToRender()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 19
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 11
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 19
rs 9.9
1
<?php
2
/**
3
 * Copyright © O2TI. All rights reserved.
4
 *
5
 * @author    Bruno Elisei <[email protected]>
6
 * See COPYING.txt for license details.
7
 */
8
9
namespace O2TI\AdvancedFieldsCheckout\Block\Adminhtml\Form\Field;
10
11
use Magento\Config\Block\System\Config\Form\Field\FieldArray\AbstractFieldArray;
12
use Magento\Framework\DataObject;
13
use Magento\Framework\Exception\LocalizedException;
14
use O2TI\AdvancedFieldsCheckout\Block\Adminhtml\Form\Field\Column\FieldColumn;
15
use O2TI\AdvancedFieldsCheckout\Block\Adminhtml\Form\Field\Column\FieldIsBreakLineColumn;
16
use O2TI\AdvancedFieldsCheckout\Block\Adminhtml\Form\Field\Column\FieldSizeColumn;
17
18
/**
19
 * Class AddClasses - Insert Class to Field.
20
 */
21
class AddClasses extends AbstractFieldArray
22
{
23
    /**
24
     * @var FieldColumn
25
     */
26
    private $fieldRenderer;
27
28
    /**
29
     * @var FieldSizeColumn
30
     */
31
    private $fieldSizeRenderer;
32
33
    /**
34
     * @var FieldIsBreakLineColumn
35
     */
36
    private $fieldIsBreakRenderer;
37
38
    /**
39
     * Prepare rendering the new field by adding all the needed columns.
40
     */
41
    protected function _prepareToRender()
42
    {
43
        $this->addColumn('field', [
44
            'label'    => __('Field'),
45
            'renderer' => $this->getFieldRenderer(),
46
        ]);
47
48
        $this->addColumn('size', [
49
            'label'    => __('Size'),
50
            'renderer' => $this->getFieldSizeRenderer(),
51
        ]);
52
53
        $this->addColumn('is_break_line', [
54
            'label'    => __('Break the line'),
55
            'renderer' => $this->getFieldIsBreakRenderer(),
56
        ]);
57
58
        $this->_addAfter = false;
59
        $this->_addButtonLabel = __('Add');
60
    }
61
62
    /**
63
     * Prepare existing row data object.
64
     *
65
     * @param DataObject $row
66
     *
67
     * @throws LocalizedException
68
     */
69
    protected function _prepareArrayRow(DataObject $row): void
70
    {
71
        $options = [];
72
73
        $field = $row->getField();
74
        if ($field !== null) {
75
            $options['option_'.$this->getFieldRenderer()->calcOptionHash($field)] = 'selected="selected"';
76
            $options['option_'.$this->getFieldIsBreakRenderer()->calcOptionHash($field)] = 'selected="selected"';
77
            $options['option_'.$this->getFieldSizeRenderer()->calcOptionHash($field)] = 'selected="selected"';
78
        }
79
80
        $row->setData('option_extra_attrs', $options);
81
    }
82
83
    /**
84
     * Create Block FieldColumn.
85
     *
86
     * @throws LocalizedException
87
     *
88
     * @return FieldColumn
89
     */
90
    private function getFieldRenderer()
91
    {
92
        if (!$this->fieldRenderer) {
93
            $this->fieldRenderer = $this->getLayout()->createBlock(
94
                FieldColumn::class,
95
                '',
96
                ['data' => ['is_render_to_js_template' => true]]
97
            );
98
        }
99
100
        return $this->fieldRenderer;
101
    }
102
103
    /**
104
     * Create Block FieldSizeColumn.
105
     *
106
     * @throws LocalizedException
107
     *
108
     * @return FieldSizeColumn
109
     */
110
    private function getFieldSizeRenderer()
111
    {
112
        if (!$this->fieldSizeRenderer) {
113
            $this->fieldSizeRenderer = $this->getLayout()->createBlock(
114
                FieldSizeColumn::class,
115
                '',
116
                ['data' => ['is_render_to_js_template' => true]]
117
            );
118
        }
119
120
        return $this->fieldSizeRenderer;
121
    }
122
123
    /**
124
     * Create Block FieldIsBreakLine.
125
     *
126
     * @throws LocalizedException
127
     *
128
     * @return FieldIsBreakLine
0 ignored issues
show
Bug introduced by
The type O2TI\AdvancedFieldsCheck...\Field\FieldIsBreakLine was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
129
     */
130
    private function getFieldIsBreakRenderer()
131
    {
132
        if (!$this->fieldIsBreakRenderer) {
133
            $this->fieldIsBreakRenderer = $this->getLayout()->createBlock(
134
                FieldIsBreakLineColumn::class,
135
                '',
136
                ['data' => ['is_render_to_js_template' => true]]
137
            );
138
        }
139
140
        return $this->fieldIsBreakRenderer;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->fieldIsBreakRenderer returns the type O2TI\AdvancedFieldsCheck...\FieldIsBreakLineColumn which is incompatible with the documented return type O2TI\AdvancedFieldsCheck...\Field\FieldIsBreakLine.
Loading history...
141
    }
142
}
143