1: <?php
2:
3: declare(strict_types=1);
4:
5: namespace Atk4\Ui\Table\Column\FilterModel;
6:
7: use Atk4\Data\Model;
8: use Atk4\Ui\Table\Column;
9:
10: class TypeEnum extends Column\FilterModel
11: {
12: #[\Override]
13: protected function init(): void
14: {
15: // bypass parent init since we are not using op and value field but create them from the lookup field value
16:
17: Model::init();
18: $this->afterInit();
19:
20: $this->op = null;
21: if ($this->lookupField->values) {
22: foreach ($this->lookupField->values as $key => $value) {
23: $this->addField($key, ['type' => 'boolean', 'ui' => ['caption' => $value]]);
24: }
25: } elseif ($this->lookupField->enum) {
26: foreach ($this->lookupField->enum as $enum) {
27: $this->addField($enum, ['type' => 'boolean', 'ui' => ['caption' => $enum]]);
28: }
29: }
30: }
31:
32: #[\Override]
33: public function setConditionForModel(Model $model)
34: {
35: $filter = $this->recallData();
36: if ($filter !== null) {
37: $values = [];
38: foreach ($filter as $key => $isSet) {
39: if ($isSet === true) {
40: $values[] = $key;
41: }
42: }
43: if ($values !== []) {
44: $model->addCondition($filter['name'], 'in', $values);
45: }
46: }
47:
48: return $model;
49: }
50: }
51: