Passed
Push — main ( f1b4ad...6ccac6 )
by N.
04:46
created

Matchtabeller   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 102
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 43
dl 0
loc 102
ccs 47
cts 47
cp 1
rs 10
c 0
b 0
f 0
wmc 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A sätt_stil() 0 25 2
A matchtabeller() 0 50 4
A sätt_klass() 0 4 4
1
<?php
2
3
/**
4
 * Klass Matchtabeller.
5
 * @author Niklas Dougherty
6
 */
7
8
declare(strict_types=1);
9
10
namespace Tips\Moduler\System;
11
12
use Tips\Moduler\System;
13
14 1
define('ODDSSTIL_GRUND', array_fill(0, 3, ' class="oddskolumn odefinierad"'));
15 1
define('STRECKSTIL_GRUND', array_fill(0, 3, ' class="streckkolumn odefinierad"'));
16
17
/**
18
 * Klass Matchtabeller.
19
 * Rendera tabeller för garderingar/system samt matcher med odds och historik.
20
 */
21
class Matchtabeller extends Prova {
22
	/**
23
	 * Matchtabeller.
24
	 * Tabeller för garderingar/system respektive matchdata.
25
	 * @return string[]
26
	 */
27 1
	protected function matchtabeller(): array {
28 1
		$vinstmarkering = new Vinstmarkering();
29
30 1
		$garderingstabell = ''; // Tabell för garderingar samt system
31 1
		$oddstabell = ''; // Tabell för odds, streck, sannolikheter och historik
32
33 1
		$odds = formatera_sannolikheter($this->odds->prediktioner); // formaterade oddssannolikheter
34
35
		/**
36
		 * Bygg tabell över varje match.
37
		 */
38 1
		foreach (array_keys($this->odds->sannolikheter) as $i) {
39 1
			$oddsstil = ODDSSTIL_GRUND; // återställ till grundkonfiguration
40 1
			$streckstil = STRECKSTIL_GRUND; // återställ till grundkonfiguration
41
42
			/**
43
			 * Sätt stil på odds och streck efter vinst/förlust.
44
			 */
45 1
			$this->sätt_stil($i, $oddsstil, $streckstil);
46
47 1
			$td_rad = ''; // enskild rad i tabell
48 1
			for ($j = 0; $j < self::SYSTEM_MAX_ANTAL_FÄLT; $j++) {
0 ignored issues
show
Bug introduced by
The constant Tips\Moduler\System\Matc...:SYSTEM_MAX_ANTAL_FÄLT was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
49 1
				$grå = $j % 2 === 0 ? ' grå' : ''; // omväxlande grå/svart nyans
50
51 1
				$k = TOM_STRÄNGVEKTOR; // $k definierar grön, gul eller röd bakgrund för vinst, oavgjort, förlust
52 1
				$vinstklass = $k; // $vinstklass definierar röd/vit ruta för bommad/infriad gardering
53 1
				$vinstmarkering->vinstfärg($k, $this->garderingar[$j][$i], $this->odds->enkelrad[$i]); // sätt färg
54
55 1
				$this->sätt_klass($i, $this->garderingar[$j][$i], $vinstklass); // sätt ruta
56
57 1
				$td_rad .= <<< EOT
58 1
								<td{$vinstklass[0]}><input tabindex="-1" data-sortering="{$this->odds->sortering[$i]}" class="tipsruta gardering1$grå{$k[0]}" type="text" size="1" name="garderingar[$j][$i][0]" value="{$this->garderingar[$j][$i][0]}" maxlength="1"></td>
59 1
								<td{$vinstklass[1]}><input tabindex="-1" data-sortering="{$this->odds->sortering[$i]}" class="tipsruta gardering2$grå{$k[1]}" type="text" size="1" name="garderingar[$j][$i][1]" value="{$this->garderingar[$j][$i][1]}" maxlength="1"></td>
60 1
								<td{$vinstklass[2]}><input tabindex="-1" data-sortering="{$this->odds->sortering[$i]}" class="tipsruta gardering3$grå{$k[2]}" type="text" size="1" name="garderingar[$j][$i][2]" value="{$this->garderingar[$j][$i][2]}" maxlength="1"></td>
61
62 1
EOT;
63
			}
64
65 1
			$k = TOM_STRÄNGVEKTOR; // $k definierar grön, gul eller röd bakgrund för vinst, oavgjort, förlust
66 1
			$vinstklass = $k; // $vinstklass definierar röd/vit ruta för bommad/infriad gardering
67 1
			$vinstmarkering->vinstfärg($k, $this->reduktion[$i], $this->odds->enkelrad[$i]); // sätt färg
68
69 1
			$this->sätt_klass($i, $this->reduktion[$i], $vinstklass); // sätt ruta
70
71 1
			$garderingstabell .= (new Garderingstabellrad($this->utdelning, $this->odds, $this->streck, $this->matcher))->garderingstabellrad($i, $vinstklass, $this->reduktion[$i], $k, $td_rad); // fyll garderingstabell
72
73 1
			$oddstabell .= (new Oddstabellrad($this->odds, $this->streck, $this->matcher))->oddstabellrad($i, $oddsstil, $odds, $streckstil); // fyll oddstabell
74
		}
75
76 1
		return [$garderingstabell, $oddstabell]; // returnera till GridGarderingar
77
	}
78
79
	/**
80
	 * Bestäm stil för odds och streck.
81
	 * @param string[] $oddsstil
82
	 * @param string[] $streckstil
83
	 */
84 1
	private function sätt_stil(int $i, array &$oddsstil, array &$streckstil): void {
85
		/**
86
		 * Lägg stil för vinst/förlust om omgången är färdigspelad.
87
		 */
88 1
		if ($this->utdelning->har_tipsrad) {
89 1
			$tecken = $this->utdelning->tipsrad_012[$i]; // numeriskt tecken 0, 1, 2
90
91
			/**
92
			 * Sätt stil på oddssannolikheter.
93
			 */
94 1
			$oddsstil[$tecken] = rstil(
95 1
				$this->odds->sannolikheter[$i][$tecken],
96 1
				$this->odds->maxsannolikheter[$i],
97 1
				$this->odds->minsannolikheter[$i],
98 1
				'oddskolumn '
99 1
			);
100
101
			/**
102
			 * Sätt stil på strecksannolikheter.
103
			 */
104 1
			$streckstil[$tecken] = rstil(
105 1
				$this->streck->sannolikheter[$i][$tecken],
106 1
				$this->streck->maxsannolikheter[$i],
107 1
				$this->streck->minsannolikheter[$i],
108 1
				'streckkolumn '
109 1
			);
110
		}
111
	}
112
113
	/**
114
	 * Gemensam rutin för att bestämma klass.
115
	 * Sätt röd ruta runt förustmatcher, vit runt vinstmatcher.
116
	 * @param string[] $reduktion
117
	 * @param string[] $vinstklass
118
	 */
119 1
	private function sätt_klass(int $i, array $reduktion, array &$vinstklass): void {
120 1
		if ($this->utdelning->har_tipsrad && $reduktion !== TOM_STRÄNGVEKTOR) {
121 1
			$vinstklass[$this->utdelning->tipsrad_012[$i]] = $reduktion[(int) $this->utdelning->tipsrad_012[$i]] ?
122 1
				' class="vinstruta"' : ' class="förlustruta"'; // sätt klass för vinnande teckenposition
123
		}
124
	}
125
}
126