summaryrefslogtreecommitdiffstats
path: root/library/Icinga/Chart/Unit/StaticAxis.php
blob: 6b32acae8e6e6a990320c5a78ea0b143f0eb1650 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<?php
/* Icinga Web 2 | (c) 2013 Icinga Development Team | GPLv2+ */


namespace Icinga\Chart\Unit;

class StaticAxis implements AxisUnit
{
    private $items = array();

    /**
     * Add a dataset to this AxisUnit, required for dynamic min and max values
     *
     * @param array $dataset    The dataset that will be shown in the Axis
     * @param int   $idx        The idx in the dataset (0 for x, 1 for y)
     *
     * @return $this             Fluent interface
     */
    public function addValues(array $dataset, $idx = 0)
    {
        $datapoints = array();
        foreach ($dataset['data'] as $points) {
            $this->items[] = $points[$idx];
        }
        $this->items = array_unique($this->items);

        return $this;
    }

    /**
     * Transform the given absolute value in an axis relative value
     *
     * @param   int $value The absolute, dataset dependent value
     *
     * @return  int        An axis relative value
     */
    public function transform($value)
    {
        $flipped = array_flip($this->items);
        if (!isset($flipped[$value])) {
            return 0;
        }
        $pos = $flipped[$value];
        return 1 + (99 / count($this->items) * $pos);
    }
    /**
     * Set the axis minimum value to a fixed value
     *
     * @param int $min The new minimum value
     */
    public function setMin($min)
    {
    }

    /**
     * Set the axis maximum value to a fixed value
     *
     * @param int $max The new maximum value
     */
    public function setMax($max)
    {
    }

    /**
     * (PHP 5 &gt;= 5.0.0)<br/>
     * Return the current element
     * @link http://php.net/manual/en/iterator.current.php
     * @return int.
     */
    public function current(): int
    {
        return  1 + (99 / count($this->items) * key($this->items));
    }

    /**
     * (PHP 5 &gt;= 5.0.0)<br/>
     * Move forward to next element
     * @link http://php.net/manual/en/iterator.next.php
     * @return void Any returned value is ignored.
     */
    public function next(): void
    {
        next($this->items);
    }

    /**
     * (PHP 5 &gt;= 5.0.0)<br/>
     * Return the key of the current element
     * @link http://php.net/manual/en/iterator.key.php
     * @return mixed scalar on success, or null on failure.
     */
    #[\ReturnTypeWillChange]
    public function key()
    {
        return current($this->items);
    }

    /**
     * (PHP 5 &gt;= 5.0.0)<br/>
     * Checks if current position is valid
     * @link http://php.net/manual/en/iterator.valid.php
     * @return boolean The return value will be casted to boolean and then evaluated.
     * Returns true on success or false on failure.
     */
    public function valid(): bool
    {
        return current($this->items) !== false;
    }

    /**
     * (PHP 5 &gt;= 5.0.0)<br/>
     * Rewind the Iterator to the first element
     * @link http://php.net/manual/en/iterator.rewind.php
     * @return void Any returned value is ignored.
     */
    public function rewind(): void
    {
        reset($this->items);
    }

    /**
     * Get the amount of ticks of this axis
     *
     * @return int
     */
    public function getTicks()
    {
        return count($this->items);
    }
}