diff options
author | Kore Nordmann <github@kore-nordmann.de> | 2006-08-15 09:37:47 +0000 |
---|---|---|
committer | Kore Nordmann <github@kore-nordmann.de> | 2006-08-15 09:37:47 +0000 |
commit | 04e2d9db41d47bc0364261a1cb30fe502409c339 (patch) | |
tree | 5d67ca1c0433d8521671fcf3364e2f4030f0fdad /src/data_container | |
parent | 58808385c0739092503c32c35e9365335040d5d0 (diff) | |
download | zetacomponents-graph-04e2d9db41d47bc0364261a1cb30fe502409c339.zip zetacomponents-graph-04e2d9db41d47bc0364261a1cb30fe502409c339.tar.gz |
- Changed access to datasets from $chart['dataset'] to $chart->data['dataset']
Diffstat (limited to 'src/data_container')
-rw-r--r-- | src/data_container/base.php | 215 | ||||
-rw-r--r-- | src/data_container/single.php | 46 |
2 files changed, 261 insertions, 0 deletions
diff --git a/src/data_container/base.php b/src/data_container/base.php new file mode 100644 index 0000000..38bc86c --- /dev/null +++ b/src/data_container/base.php @@ -0,0 +1,215 @@ +<?php +/** + * File containing the abstract ezcGraphChart class + * + * @package Graph + * @version //autogentag// + * @copyright Copyright (C) 2005, 2006 eZ systems as. All rights reserved. + * @license http://ez.no/licenses/new_bsd New BSD License + */ +/** + * Class containing the container for the charts datasets + * + * @package Graph + */ + +class ezcGraphChartDataContainer implements ArrayAccess, Iterator, Countable +{ + /** + * Contains the data of a chart + * + * @var array( ezcGraphDataSet ) + */ + protected $data = array(); + + /** + * Chart using this data set storage + * + * @var ezcGraphChart + */ + protected $chart; + + public function __construct( ezcGraphChart $chart ) + { + $this->chart = $chart; + } + + /** + * Adds a dataset to the charts data + * + * @param string $name Name of dataset + * @param mixed $values Values to create dataset with + * @throws ezcGraphTooManyDataSetExceptions + * If too many datasets are created + * @return ezcGraphDataSet + */ + protected function addDataSet( $name, ezcGraphDataSet $dataSet ) + { + $this->data[$name] = $dataSet; + + $this->data[$name]->label = $name; + $this->data[$name]->palette = $this->chart->palette; + $this->data[$name]->displayType = $this->chart->getDefaultDisplayType(); + } + + /** + * Returns if the given offset exists. + * + * This method is part of the ArrayAccess interface to allow access to the + * data of this object as if it was an array. + * + * @param string $key Identifier of dataset. + * @return bool True when the offset exists, otherwise false. + */ + public function offsetExists( $key ) + { + return isset( $this->data[$key] ); + } + + /** + * Returns the element with the given offset. + * + * This method is part of the ArrayAccess interface to allow access to the + * data of this object as if it was an array. + * + * @param string $key Identifier of dataset. + * @return ezcGraphDataSet + * + * @throws ezcGraphNoSuchDataSetException + * If no dataset with identifier exists + */ + public function offsetGet( $key ) + { + if ( !isset( $key ) ) + { + throw new ezcGraphNoSuchDataSetException( $key ); + } + + return $this->data[$key]; + } + + /** + * Set the element with the given offset. + * + * This method is part of the ArrayAccess interface to allow access to the + * data of this object as if it was an array. + * + * @param string $key Identifier of dataset + * @param ezcGraphDataSet$value The dataset to assign. + * @return void + * + * @throws ezcGraphUnknownDataSetSourceException + * If supplied value is not an ezcGraphDataSet + */ + public function offsetSet( $key, $value ) + { + if ( !$value instanceof ezcGraphDataSet ) + { + throw new ezcGraphUnknownDataSetSourceException( $value ); + } + + return $this->addDataSet( $key, $value ); + } + + /** + * Unset the element with the given offset. + * + * This method is part of the ArrayAccess interface to allow access to the + * data of this object as if it was an array. + * + * @param int $offset The offset to unset the value for. + * @return void + */ + public function offsetUnset( $key ) + { + if ( !isset( $key ) ) + { + throw new ezcGraphNoSuchDataSetException( $key ); + } + + unset( $this->data[$key] ); + } + + /** + * Returns the currently selected dataset. + * + * This method is part of the Iterator interface to allow access to the + * datasets of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return ezcGraphDataSet The currently selected dataset. + */ + public function current() + { + return current( $this->data ); + } + + /** + * Returns the next dataset and selects it or false on the last dataset. + * + * This method is part of the Iterator interface to allow access to the + * datasets of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return mixed ezcGraphDataSet if the next dataset exists, or false. + */ + public function next() + { + return next( $this->data ); + } + + /** + * Returns the key of the currently selected dataset. + * + * This method is part of the Iterator interface to allow access to the + * datasets of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return int The key of the currently selected dataset. + */ + public function key() + { + return key( $this->data ); + } + + /** + * Returns if the current dataset is valid. + * + * This method is part of the Iterator interface to allow access to the + * datasets of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return bool If the current dataset is valid + */ + public function valid() + { + return ( current( $this->data ) !== false ); + } + + /** + * Selects the very first dataset and returns it. + * This method is part of the Iterator interface to allow access to the + * datasets of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return ezcGraphDataSet The very first dataset. + */ + public function rewind() + { + return reset( $this->data ); + } + + /** + * Returns the number of datasets in the row. + * + * This method is part of the Countable interface to allow the usage of + * PHP's count() function to check how many datasets exist. + * + * @return int Number of datasets. + */ + public function count() + { + return count( $this->data ); + } +} +?> diff --git a/src/data_container/single.php b/src/data_container/single.php new file mode 100644 index 0000000..5167511 --- /dev/null +++ b/src/data_container/single.php @@ -0,0 +1,46 @@ +<?php +/** + * File containing the abstract ezcGraphChart class + * + * @package Graph + * @version //autogentag// + * @copyright Copyright (C) 2005, 2006 eZ systems as. All rights reserved. + * @license http://ez.no/licenses/new_bsd New BSD License + */ +/** + * Class containing the container for the charts datasets + * + * @package Graph + */ + +class ezcGraphChartSingleDataContainer extends ezcGraphChartDataContainer +{ + /** + * Adds a dataset to the charts data + * + * @param string $name Name of dataset + * @param mixed $values Values to create dataset with + * @throws ezcGraphTooManyDataSetExceptions + * If too many datasets are created + * @return ezcGraphDataSet + */ + protected function addDataSet( $name, ezcGraphDataSet $dataSet ) + { + if ( count( $this->data ) >= 1 && + !isset( $this->data[$name] ) ) + { + throw new ezcGraphTooManyDataSetsExceptions( $name ); + } + else + { + parent::addDataSet( $name, $dataSet ); + + // Colorize each data element + foreach ( $this->data[$name] as $label => $value ) + { + $this->data[$name]->color[$label] = $this->chart->palette->dataSetColor; + } + } + } +} +?> |