[ Index ] |
PHP Cross Reference of moodle-2.8 |
[Summary view] [Print] [Text view]
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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:29:05 2014 | Cross-referenced by PHPXref 0.7.1 |