|
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++) { |
|
|
|
|
|
|
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
|
|
|
|