1: <?php
2: /**
3: * LICENSE (BSD)
4: *
5: * Copyright (c) 2013, Gerd Christian Kunze
6: * All rights reserved.
7: *
8: * Redistribution and use in source and binary forms, with or without
9: * modification, are permitted provided that the following conditions are
10: * met:
11: *
12: * * Redistributions of source code must retain the above copyright
13: * notice, this list of conditions and the following disclaimer.
14: *
15: * * Redistributions in binary form must reproduce the above copyright
16: * notice, this list of conditions and the following disclaimer in the
17: * documentation and/or other materials provided with the distribution.
18: *
19: * * Neither the name of Gerd Christian Kunze nor the names of the
20: * contributors may be used to endorse or promote products derived from
21: * this software without specific prior written permission.
22: *
23: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
24: * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
25: * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
26: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
27: * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
28: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
29: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30: * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31: * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32: * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33: * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34: *
35: * Data
36: * 26.03.2013 14:09
37: */
38: namespace MOC\Module\Office\Chart;
39: use MOC\Api;
40: use MOC\Generic\Device\Module;
41:
42: /**
43: *
44: */
45: class Data implements Module {
46:
47: /**
48: * Get Dependencies
49: *
50: * @static
51: * @return \MOC\Core\Depending
52: */
53: public static function InterfaceDepending() {
54: return Api::Core()->Depending();
55: }
56:
57: /**
58: * Get Singleton/Instance
59: *
60: * @static
61: * @return Data
62: */
63: public static function InterfaceInstance() {
64: return new Data();
65: }
66:
67: /**
68: * Get Changelog
69: *
70: * @static
71: * @return \MOC\Core\Changelog
72: */
73: public static function InterfaceChangelog() {
74: return Api::Core()->Changelog()->Create( __CLASS__ );
75: }
76:
77: private $Series = array();
78: private $Configuration = array();
79:
80: /**
81: * @param string $Label
82: *
83: * @return Data\Config
84: */
85: public function Config( $Label ) {
86: if( !isset( $this->Configuration[$Label] ) ) {
87: $this->Configuration[$Label] = Data\Config::InterfaceInstance();
88: }
89: return $this->Configuration[$Label];
90: }
91:
92: /**
93: * @param string $Label
94: * @param string|int|float $X
95: * @param int|float $Y
96: *
97: * @return Data
98: */
99: public function AddPoint( $Label, $X, $Y ) {
100: if( !isset( $this->Series[$Label] ) ) {
101: $this->Series[$Label] = array();
102: }
103: $this->Series[$Label][$X] = $Y;
104: return $this;
105: }
106:
107: /**
108: * @param string $Label
109: * @param array $Array array( X-Axis => Y-Axis, ... )
110: *
111: * @return Data
112: */
113: public function AddPointList( $Label, $Array ) {
114: if( !isset( $this->Series[$Label] ) ) {
115: $this->Series[$Label] = array();
116: }
117: $this->Series[$Label] = array_merge( $this->Series[$Label], $Array );
118: return $this;
119: }
120:
121: /**
122: * @param array $Array 2D-Array : array( Row => array( Column => Value ), ... ) e.g. Database-Result
123: *
124: * @return Data
125: */
126: public function AddSeries( $Array ) {
127: foreach( (array)$Array as $X => $Series ) {
128: foreach( (array)$Series as $Label => $Y ) {
129: $this->AddPoint( $Label, $X, $Y );
130: }
131: }
132: return $this;
133: }
134:
135: /**
136: * @return array
137: */
138: public function _getSeries() {
139: return $this->Series;
140: }
141:
142: /**
143: * @return string
144: */
145: public function _getConfiguration() {
146: return $this->Configuration;
147: }
148: }
149: