Passed
Push — main ( d29be2...38376b )
by N.
03:16
created

TTGridPreferenser::tt_grid_preferenser()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 35
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 20
CRAP Score 3

Importance

Changes 0
Metric Value
cc 3
eloc 20
nc 3
nop 0
dl 0
loc 35
ccs 20
cts 20
cp 1
crap 3
rs 9.6
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * Klass TTGridPreferenser.
5
 * @author Niklas Dougherty
6
 */
7
8
declare(strict_types=1);
9
10
namespace Tips\Moduler\TT;
11
12
use Tips\Moduler\TT;
13
14
/**
15
 * Klass TTGridPreferenser.
16
 * Inställningar för spelet.
17
 */
18
final class TTGridPreferenser {
19
	/**
20
	 * Initiera.
21
	 */
22 1
	public function __construct(private TT $tt) {
23 1
	}
24
25
	/**
26
	 * Grid för TT-preferenser.
27
	 */
28 1
	public function tt_grid_preferenser(): string {
29
		/**
30
		 * Knappval för vad som ska prövas.
31
		 */
32 1
		$prop = array_fill_keys([
33 1
				'tt_pröva_spikar',
34 1
				'tt_pröva_täckning',
35 1
				'tt_pröva_t_intv',
36 1
				'tt_pröva_o_intv',
37 1
				'tt_pröva_reduktion'
38 1
		], '');
39
40
		/**
41
		 * Populera.
42
		 */
43 1
		foreach (array_keys($prop) as $metod) {
44 1
			$prop[$metod] = $this->tt->$metod ? ' checked="checked" ' : '';
45
		}
46
47
		/**
48
		 * Eka ut HTML.
49
		 */
50 1
		return <<< EOT
51 1
						<p><label>Spikar <input type="checkbox" id="tt_pröva_spikar"{$prop['tt_pröva_spikar']}></label>
52 1
							<label>Teckenintervall <input type="checkbox" id="tt_pröva_t_intv"{$prop['tt_pröva_t_intv']}></label>
53 1
							<label>Oddsintervall <input type="checkbox" id="tt_pröva_o_intv"{$prop['tt_pröva_o_intv']}></label>
54 1
							<label>Kod <input type="checkbox" id="tt_pröva_täckning"{$prop['tt_pröva_täckning']}></label>
55 1
							<label>R-system <input type="checkbox" id="tt_pröva_reduktion"{$prop['tt_pröva_reduktion']}></label></p>
56
						<p><select id="tt_kod" name="tt_kod">
57 1
{$this->tt_kod()}						</select>
58
							<select id="tt_rkod" name="tt_rkod">
59 1
{$this->tt_rkod()}						</select></p>
60
						<form id="generera_topptips" method="post" action="/#modulflikar-TT">
61 1
							<p><button class="generera" name="generera_topptips">⚽️ Generera {$this->tt->antal_rader} rader</button>
62 1
							<button type="button" id="tt_r_schema" value="[{$this->tt->rkod->helgarderingar()}, {$this->tt->rkod->halvgarderingar()}]">{$this->tt->rkod->value}</button></p>
63
						</form>
64 1
EOT;
65
	}
66
67
	/**
68
	 * TT-kod.
69
	 * Rullgardin med särskilda täckningskoder.
70
	 */
71 1
	private function tt_kod(): string {
72 1
		$tt_kod = '';
73
		/**
74
		 * Iterera över koder.
75
		 */
76 1
		foreach (TTKod::cases() as $kod) {
77 1
			$vald = $this->tt->kod->value === $kod->value ? ' selected="selected"' : '';
78 1
			$tt_kod .= t(7, "<option value=\"{$kod->value}\"$vald>Kod: {$kod->value} ({$kod->antal_rader()}, r = {$kod->täckning()})</option>");
79
		}
80
81 1
		return $tt_kod;
82
	}
83
84
	/**
85
	 * TT-Rkod
86
	 * Rullgardin med reducerade koder upp till åtta matcher.
87
	 */
88 1
	private function tt_rkod(): string {
89 1
		$tt_rkod = '';
90
		/**
91
		 * Iterera över koder.
92
		 */
93 1
		foreach (TTRKod::cases() as $rkod) {
94 1
			$vald = $this->tt->rkod->value === $rkod->value ? ' selected="selected"' : '';
95 1
			$tt_rkod .= t(7, "<option value=\"{$rkod->value}\"$vald>System: {$rkod->value} ({$rkod->garanti()})</option>");
96
		}
97
98 1
		return $tt_rkod;
99
	}
100
}
101