Test Failed
Push — main ( 6435b1...db043e )
by Paul
16:23 queued 07:02
created

Range   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 4
eloc 23
c 1
b 0
f 1
dl 0
loc 35
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A normalizeOptions() 0 7 2
A buildReviewField() 0 24 2
1
<?php
2
3
namespace GeminiLabs\SiteReviews\Modules\Html\FieldElements;
4
5
use GeminiLabs\SiteReviews\Arguments;
6
use GeminiLabs\SiteReviews\Helper;
7
use GeminiLabs\SiteReviews\Helpers\Arr;
8
use GeminiLabs\SiteReviews\Helpers\Cast;
9
use GeminiLabs\SiteReviews\Modules\Html\Builder;
10
use GeminiLabs\SiteReviews\Modules\Html\Template;
11
use GeminiLabs\SiteReviews\Modules\Style;
12
13
class Range extends Radio
14
{
15
    protected function buildReviewField(Arguments $args): string
16
    {
17
        $field = glsr(Builder::class)->div([
18
            'class' => 'glsr-range-options',
19
            'data-placeholder' => __('Please select', 'site-reviews'),
20
            'text' => parent::buildReviewField($args),
21
        ]);
22
        if (empty($args->labels)) {
23
            return $field;
24
        }
25
        $labels = [
26
            Arr::get($args->labels, 0, ''),
27
            Arr::get($args->labels, 1, ''),
28
            Arr::get($args->labels, 2, ''),
29
        ];
30
        $labels = array_reduce($labels,
31
            fn ($carry, $label) => $carry.glsr(Builder::class)->span($label),
32
            ''
33
        );
34
        $labels = glsr(Builder::class)->div([
35
            'class' => 'glsr-range-labels',
36
            'text' => $labels,
37
        ]);
38
        return $labels.$field;
39
    }
40
41
    protected function normalizeOptions(): void
42
    {
43
        if (!empty($this->field->options)) {
44
            $keys = range(1, count($this->field->options));
45
            $values = array_values($this->field->options);
46
            $values = array_map(fn ($value) => Cast::toString($value), $values);
47
            $this->field->options = array_combine($keys, $values);
48
        }
49
    }
50
}
51