• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

contributte / datagrid / 7048127238

30 Nov 2023 02:47PM UTC coverage: 34.081%. First build
7048127238

Pull #1060

github

paveljanda
Minor CSS changes for the next verison of datagrid
Pull Request #1060: [7.x] Next

118 of 431 new or added lines in 54 files covered. (27.38%)

1125 of 3301 relevant lines covered (34.08%)

0.34 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

47.83
/src/Traits/TButtonRenderer.php
1
<?php declare(strict_types = 1);
2

3
namespace Contributte\Datagrid\Traits;
4

5
use Contributte\Datagrid\Column\Renderer;
6
use Contributte\Datagrid\Exception\DatagridColumnRendererException;
7
use Contributte\Datagrid\Exception\DatagridException;
8
use Contributte\Datagrid\Row;
9

10
trait TButtonRenderer
11
{
12

13
        protected ?Renderer $renderer = null;
14

15
        /** @var array */
16
        protected array $replacements = [];
17

18
        /**
19
         * @throws DatagridColumnRendererException
20
         */
21
        public function useRenderer(?Row $row = null): mixed
1✔
22
        {
23
                $renderer = $this->getRenderer();
1✔
24

25
                $args = $row instanceof Row ? [$row->getItem()] : [];
1✔
26

27
                if ($renderer === null) {
1✔
28
                        throw new DatagridColumnRendererException();
1✔
29
                }
30

31
                if ($renderer->getConditionCallback() !== null) {
×
32
                        if (call_user_func_array($renderer->getConditionCallback(), $args) === false) {
×
NEW
33
                                throw new DatagridColumnRendererException();
×
34
                        }
35

36
                        return call_user_func_array($renderer->getCallback(), $args);
×
37
                }
38

39
                return call_user_func_array($renderer->getCallback(), $args);
×
40
        }
41

42
        /**
43
         * Set renderer callback and (it may be optional - the condition callback will decide)
44
         *
45
         * @return static
46
         * @throws DatagridException
47
         */
48
        public function setRenderer(
49
                callable $renderer,
50
                ?callable $conditionCallback = null
51
        ): self
52
        {
53
                if ($this->hasReplacements()) {
×
NEW
54
                        throw new DatagridException('Use either Column::setReplacement() or Column::setRenderer, not both.');
×
55
                }
56

57
                $this->renderer = new Renderer($renderer, $conditionCallback);
×
58

59
                return $this;
×
60
        }
61

62
        /**
63
         * @return static
64
         */
65
        public function setRendererOnCondition(
66
                callable $renderer,
67
                callable $conditionCallback
68
        ): self
69
        {
70
                return $this->setRenderer($renderer, $conditionCallback);
×
71
        }
72

73
        public function getRenderer(): ?Renderer
74
        {
75
                return $this->renderer;
1✔
76
        }
77

78
        public function hasReplacements(): bool
79
        {
80
                return $this->replacements !== [];
×
81
        }
82

83
        public function applyReplacements(Row $row, string $column): array
1✔
84
        {
85
                $value = $row->getValue($column);
1✔
86

87
                if ((is_scalar($value) || $value === null) &&
1✔
88
                        isset($this->replacements[gettype($value) === 'double' ? (int) $value : $value])) {
1✔
89
                        return [true, $this->replacements[gettype($value) === 'double' ? (int) $value : $value]];
×
90
                }
91

92
                return [false, null];
1✔
93
        }
94

95
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc