PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.0.3
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.0.3
4.0.8 4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.2 3.1.3 3.10.0 3.10.1 3.10.10 3.10.11 3.10.12 3.10.13 3.10.14 3.10.15 3.10.2 3.10.3 All 149 releases
visualizer / vendor / phpoffice / phpexcel / Classes / PHPExcel / Chart / DataSeriesValues.php

DataSeriesValues.php in Visualizer – Tables & Charts Manager with Built-in AI Generator 3.0.3, at vendor/phpoffice/phpexcel/Classes/PHPExcel/Chart/DataSeriesValues.php

328 lines 7.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * PHPExcel
4 *
5 * Copyright (c) 2006 - 2014 PHPExcel
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 *
21 * @category PHPExcel
22 * @package PHPExcel_Chart
23 * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
24 * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
25 * @version ##VERSION##, ##DATE##
26 */
27
28
29 /**
30 * PHPExcel_Chart_DataSeriesValues
31 *
32 * @category PHPExcel
33 * @package PHPExcel_Chart
34 * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
35 */
36 class PHPExcel_Chart_DataSeriesValues
37 {
38
39 const DATASERIES_TYPE_STRING = 'String';
40 const DATASERIES_TYPE_NUMBER = 'Number';
41
42 private static $_dataTypeValues = array(
43 self::DATASERIES_TYPE_STRING,
44 self::DATASERIES_TYPE_NUMBER,
45 );
46
47 /**
48 * Series Data Type
49 *
50 * @var string
51 */
52 private $_dataType = null;
53
54 /**
55 * Series Data Source
56 *
57 * @var string
58 */
59 private $_dataSource = null;
60
61 /**
62 * Format Code
63 *
64 * @var string
65 */
66 private $_formatCode = null;
67
68 /**
69 * Series Point Marker
70 *
71 * @var string
72 */
73 private $_marker = null;
74
75 /**
76 * Point Count (The number of datapoints in the dataseries)
77 *
78 * @var integer
79 */
80 private $_pointCount = 0;
81
82 /**
83 * Data Values
84 *
85 * @var array of mixed
86 */
87 private $_dataValues = array();
88
89 /**
90 * Create a new PHPExcel_Chart_DataSeriesValues object
91 */
92 public function __construct($dataType = self::DATASERIES_TYPE_NUMBER, $dataSource = null, $formatCode = null, $pointCount = 0, $dataValues = array(), $marker = null)
93 {
94 $this->setDataType($dataType);
95 $this->_dataSource = $dataSource;
96 $this->_formatCode = $formatCode;
97 $this->_pointCount = $pointCount;
98 $this->_dataValues = $dataValues;
99 $this->_marker = $marker;
100 }
101
102 /**
103 * Get Series Data Type
104 *
105 * @return string
106 */
107 public function getDataType() {
108 return $this->_dataType;
109 }
110
111 /**
112 * Set Series Data Type
113 *
114 * @param string $dataType Datatype of this data series
115 * Typical values are:
116 * PHPExcel_Chart_DataSeriesValues::DATASERIES_TYPE_STRING
117 * Normally used for axis point values
118 * PHPExcel_Chart_DataSeriesValues::DATASERIES_TYPE_NUMBER
119 * Normally used for chart data values
120 * @return PHPExcel_Chart_DataSeriesValues
121 */
122 public function setDataType($dataType = self::DATASERIES_TYPE_NUMBER) {
123 if (!in_array($dataType, self::$_dataTypeValues)) {
124 throw new PHPExcel_Chart_Exception('Invalid datatype for chart data series values');
125 }
126 $this->_dataType = $dataType;
127
128 return $this;
129 }
130
131 /**
132 * Get Series Data Source (formula)
133 *
134 * @return string
135 */
136 public function getDataSource() {
137 return $this->_dataSource;
138 }
139
140 /**
141 * Set Series Data Source (formula)
142 *
143 * @param string $dataSource
144 * @return PHPExcel_Chart_DataSeriesValues
145 */
146 public function setDataSource($dataSource = null, $refreshDataValues = true) {
147 $this->_dataSource = $dataSource;
148
149 if ($refreshDataValues) {
150 // TO DO
151 }
152
153 return $this;
154 }
155
156 /**
157 * Get Point Marker
158 *
159 * @return string
160 */
161 public function getPointMarker() {
162 return $this->_marker;
163 }
164
165 /**
166 * Set Point Marker
167 *
168 * @param string $marker
169 * @return PHPExcel_Chart_DataSeriesValues
170 */
171 public function setPointMarker($marker = null) {
172 $this->_marker = $marker;
173
174 return $this;
175 }
176
177 /**
178 * Get Series Format Code
179 *
180 * @return string
181 */
182 public function getFormatCode() {
183 return $this->_formatCode;
184 }
185
186 /**
187 * Set Series Format Code
188 *
189 * @param string $formatCode
190 * @return PHPExcel_Chart_DataSeriesValues
191 */
192 public function setFormatCode($formatCode = null) {
193 $this->_formatCode = $formatCode;
194
195 return $this;
196 }
197
198 /**
199 * Get Series Point Count
200 *
201 * @return integer
202 */
203 public function getPointCount() {
204 return $this->_pointCount;
205 }
206
207 /**
208 * Identify if the Data Series is a multi-level or a simple series
209 *
210 * @return boolean
211 */
212 public function isMultiLevelSeries() {
213 if (count($this->_dataValues) > 0) {
214 return is_array($this->_dataValues[0]);
215 }
216 return null;
217 }
218
219 /**
220 * Return the level count of a multi-level Data Series
221 *
222 * @return boolean
223 */
224 public function multiLevelCount() {
225 $levelCount = 0;
226 foreach($this->_dataValues as $dataValueSet) {
227 $levelCount = max($levelCount,count($dataValueSet));
228 }
229 return $levelCount;
230 }
231
232 /**
233 * Get Series Data Values
234 *
235 * @return array of mixed
236 */
237 public function getDataValues() {
238 return $this->_dataValues;
239 }
240
241 /**
242 * Get the first Series Data value
243 *
244 * @return mixed
245 */
246 public function getDataValue() {
247 $count = count($this->_dataValues);
248 if ($count == 0) {
249 return null;
250 } elseif ($count == 1) {
251 return $this->_dataValues[0];
252 }
253 return $this->_dataValues;
254 }
255
256 /**
257 * Set Series Data Values
258 *
259 * @param array $dataValues
260 * @param boolean $refreshDataSource
261 * TRUE - refresh the value of _dataSource based on the values of $dataValues
262 * FALSE - don't change the value of _dataSource
263 * @return PHPExcel_Chart_DataSeriesValues
264 */
265 public function setDataValues($dataValues = array(), $refreshDataSource = TRUE) {
266 $this->_dataValues = PHPExcel_Calculation_Functions::flattenArray($dataValues);
267 $this->_pointCount = count($dataValues);
268
269 if ($refreshDataSource) {
270 // TO DO
271 }
272
273 return $this;
274 }
275
276 private function _stripNulls($var) {
277 return $var !== NULL;
278 }
279
280 public function refresh(PHPExcel_Worksheet $worksheet, $flatten = TRUE) {
281 if ($this->_dataSource !== NULL) {
282 $calcEngine = PHPExcel_Calculation::getInstance($worksheet->getParent());
283 $newDataValues = PHPExcel_Calculation::_unwrapResult(
284 $calcEngine->_calculateFormulaValue(
285 '='.$this->_dataSource,
286 NULL,
287 $worksheet->getCell('A1')
288 )
289 );
290 if ($flatten) {
291 $this->_dataValues = PHPExcel_Calculation_Functions::flattenArray($newDataValues);
292 foreach($this->_dataValues as &$dataValue) {
293 if ((!empty($dataValue)) && ($dataValue[0] == '#')) {
294 $dataValue = 0.0;
295 }
296 }
297 unset($dataValue);
298 } else {
299 $cellRange = explode('!',$this->_dataSource);
300 if (count($cellRange) > 1) {
301 list(,$cellRange) = $cellRange;
302 }
303
304 $dimensions = PHPExcel_Cell::rangeDimension(str_replace('$','',$cellRange));
305 if (($dimensions[0] == 1) || ($dimensions[1] == 1)) {
306 $this->_dataValues = PHPExcel_Calculation_Functions::flattenArray($newDataValues);
307 } else {
308 $newArray = array_values(array_shift($newDataValues));
309 foreach($newArray as $i => $newDataSet) {
310 $newArray[$i] = array($newDataSet);
311 }
312
313 foreach($newDataValues as $newDataSet) {
314 $i = 0;
315 foreach($newDataSet as $newDataVal) {
316 array_unshift($newArray[$i++],$newDataVal);
317 }
318 }
319 $this->_dataValues = $newArray;
320 }
321 }
322 $this->_pointCount = count($this->_dataValues);
323 }
324
325 }
326
327 }
328