Completed
Pull Request — master (#307)
by
unknown
04:00
created

PBWidget   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 133
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
dl 0
loc 133
ccs 0
cts 43
cp 0
rs 10
c 0
b 0
f 0
wmc 10
lcom 1
cbo 6

7 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 13 1
A setAuthorTime() 0 4 1
A createContent() 0 22 1
A createLabel() 0 6 1
B updateContent() 0 23 4
A setPB() 0 4 1
A reset() 0 4 1
1
<?php
2
3
namespace eXpansion\Bundle\WidgetBestRecords\Plugins\Gui;
4
5
use eXpansion\Framework\Core\Helpers\Time;
6
use eXpansion\Framework\Core\Model\Gui\FmlManialinkFactoryContext;
7
use eXpansion\Framework\Core\Model\Gui\ManialinkInterface;
8
use eXpansion\Framework\Core\Model\Gui\Widget;
9
use eXpansion\Framework\Core\Plugins\Gui\FmlManialinkFactory;
10
use eXpansion\Framework\Gui\Components\Label;
11
12
class PBWidget extends FmlManialinkFactory
13
{
14
    /** @var int */
15
    private $authorTime;
16
17
    /** @var Time */
18
    private $time;
19
20
    /** @var Label */
21
    private $lblPB;
22
23
    /** @var Label */
24
    private $lblPBTime;
25
26
    /** @var Label */
27
    private $lblAuthorTime;
28
29
    /** @var int[] */
30
    private $timesByLogin = [];
31
32
    /***
33
     * MenuFactory constructor.
34
     *
35
     * @param                            $name
36
     * @param                            $sizeX
37
     * @param                            $sizeY
38
     * @param null                       $posX
39
     * @param null                       $posY
40
     * @param FmlManialinkFactoryContext $context
41
     * @param Time                       $time
42
     */
43
    public function __construct(
44
        $name,
45
        $sizeX,
46
        $sizeY,
47
        $posX,
48
        $posY,
49
        FmlManialinkFactoryContext $context,
50
        Time $time
51
52
    ) {
53
        parent::__construct($name, $sizeX, $sizeY, $posX, $posY, $context);
54
        $this->time = $time;
55
    }
56
57
    /**
58
     * @param int $authorTime
59
     */
60
    public function setAuthorTime(int $authorTime)
61
    {
62
        $this->authorTime = $authorTime;
63
    }
64
65
    /**
66
     * @param Widget|ManialinkInterface $manialink
67
     */
68
    protected function createContent(ManialinkInterface $manialink)
69
    {
70
        parent::createContent($manialink);
71
72
        $manialink->getFmlManialink()->setScript(null);
73
74
        $line = $this->uiFactory->createLayoutLine(0, 0, [], 0.5);
75
76
        $lbl = $this->createLabel("Author", "0017")->setSize(14.85, 4);
77
        $line->addChild($lbl);
78
79
        $this->lblAuthorTime = $this->createLabel("-:--:---", "0023")->setSize(14.85, 4);
80
        $line->addChild($this->lblAuthorTime);
81
82
        $this->lblPB = $this->createLabel("PersonalBest", "0017")->setSize(14.85, 4);
83
        $line->addChild($this->lblPB);
84
85
        $this->lblPBTime = $this->createLabel("-:--:---", "0023")->setSize(14.85, 4);
86
        $line->addChild($this->lblPBTime);
87
88
        $manialink->addChild($line);
89
    }
90
91
    /**
92
     * @param string $text
93
     * @param string $color
94
     * @return Label
95
     */
96
    private function createLabel($text, $color)
97
    {
98
        return $this->uiFactory->createLabel($text, Label::TYPE_NORMAL)->setTranslate(false)
99
            ->setAlign("left", "center2")->setTextSize(1)->setScriptEvents(true)
100
            ->setAreaColor($color)->setAreaFocusColor($color)->setTextColor("eff")->setTextPrefix(" ");
101
    }
102
103
    /**
104
     * @param ManialinkInterface $manialink
105
     */
106
    protected function updateContent(ManialinkInterface $manialink)
107
    {
108
        if ($this->authorTime) {
109
            $this->lblAuthorTime->setText($this->time->timeToText($this->authorTime, true));
110
        } else {
111
            $this->lblAuthorTime->setText("-:--:---");
112
        }
113
114
        $recipient = $manialink->getUserGroup()->getLogins();
115
116
        if (count($recipient) > 0) {
117
            $login = $recipient[0];
118
119
            if (isset($this->timesByLogin[$login])) {
120
                $this->lblPBTime->setText($this->time->timeToText($this->timesByLogin[$login], true));
121
            } else {
122
                $this->lblPBTime->setText("-:--:---");
123
            }
124
        } else {
125
            $this->lblPBTime->setText("-:--:---");
126
        }
127
128
    }
129
130
    /**
131
     * @param          $login
132
     * @param int|null $time
133
     */
134
    public function setPB($login, $time)
135
    {
136
        $this->timesByLogin[$login] = $time;
137
    }
138
139
    public function reset()
140
    {
141
        $this->timesByLogin = [];
142
    }
143
144
}
145