summaryrefslogtreecommitdiffstats
path: root/src/axis
diff options
context:
space:
mode:
authorKore Nordmann <github@kore-nordmann.de>2006-06-08 10:17:39 +0000
committerKore Nordmann <github@kore-nordmann.de>2006-06-08 10:17:39 +0000
commit182ce919974d9ec9a6de098a41c02e2965beaba3 (patch)
tree62cfdc1844240b7e11bdb4e06ba51d09c9d160ff /src/axis
parent36d09ff6ac63a135576509dbbc16f6f13cad25dd (diff)
downloadzetacomponents-graph-182ce919974d9ec9a6de098a41c02e2965beaba3.zip
zetacomponents-graph-182ce919974d9ec9a6de098a41c02e2965beaba3.tar.gz
- Refactored axis API to be able to use each axis type for both, X- and Y-axis
Diffstat (limited to 'src/axis')
-rw-r--r--src/axis/labeled.php53
-rw-r--r--src/axis/numeric.php64
2 files changed, 71 insertions, 46 deletions
diff --git a/src/axis/labeled.php b/src/axis/labeled.php
index 341e36b..b6e0960 100644
--- a/src/axis/labeled.php
+++ b/src/axis/labeled.php
@@ -44,39 +44,48 @@ class ezcGraphChartElementLabeledAxis extends ezcGraphChartElementAxis
}
/**
- * Get labels from datasets in right order to be rendered later
- *
- * @param array $datasets
+ * Add data for this axis
+ *
+ * @param mixed $value Value which will be displayed on this axis
* @return void
*/
- public function calculateFromDataset(array $datasets)
+ public function addData( array $values )
{
- foreach ( $datasets as $dataset )
+ $position = 0;
+ foreach ( $values as $label )
{
- $position = 0;
- foreach ( $dataset as $label => $value )
- {
- $label = (string) $label;
+ $label = (string) $label;
- if ( !in_array( $label, $this->labels, true ) )
+ if ( !in_array( $label, $this->labels, true ) )
+ {
+ if ( isset( $this->labels[$position] ) )
{
- if ( isset( $this->labels[$position] ) )
- {
- $this->labels = $this->increaseKeys( $this->labels, $position );
- $this->labels[$position++] = $label;
- }
- else
- {
- $this->labels[$position++] = $label;
- }
+ $this->labels = $this->increaseKeys( $this->labels, $position );
+ $this->labels[$position++] = $label;
}
- else
+ else
{
- $position = array_search( $label, $this->labels, true ) + 1;
+ $this->labels[$position++] = $label;
}
}
- ksort( $this->labels );
+ else
+ {
+ $position = array_search( $label, $this->labels, true ) + 1;
+ }
}
+ ksort( $this->labels );
+ }
+
+ /**
+ * Calculate axis bounding values on base of the assigned values
+ *
+ * @abstract
+ * @access public
+ * @return void
+ */
+ public function calculateAxisBoundings()
+ {
+ return true;
}
/**
diff --git a/src/axis/numeric.php b/src/axis/numeric.php
index 2640eb5..755e858 100644
--- a/src/axis/numeric.php
+++ b/src/axis/numeric.php
@@ -30,6 +30,20 @@ class ezcGraphChartElementNumericAxis extends ezcGraphChartElementAxis
protected $max = false;
/**
+ * Minimum Value to display on this axis
+ *
+ * @var float
+ */
+ protected $minValue = false;
+
+ /**
+ * Maximum value to display on this axis
+ *
+ * @var float
+ */
+ protected $maxValue = false;
+
+ /**
* Constant used for calculation of automatic definition of major scaling
* steps
*/
@@ -164,55 +178,57 @@ class ezcGraphChartElementNumericAxis extends ezcGraphChartElementAxis
}
/**
- * Calculate steps, min and max values from given datasets, if not set
- * manually before. receives an array of array( ezcGraphDataset )
+ * Add data for this axis
*
- * @param array $datasets
+ * @param mixed $value Value which will be displayed on this axis
* @return void
*/
- public function calculateFromDataset(array $datasets)
+ public function addData( array $values )
{
- $min = false;
- $max = false;
-
- // Determine minimum and maximum values
- foreach ( $datasets as $dataset )
+ foreach ( $values as $value )
{
- foreach ( $dataset as $value )
+ if ( $this->minValue === false ||
+ $value < $this->minValue )
{
- if ( $min === false ||
- $value < $min )
- {
- $min = $value;
- }
+ $this->minValue = $value;
+ }
- if ( $max === false ||
- $value > $max )
- {
- $max = $value;
- }
+ if ( $this->maxValue === false ||
+ $value > $this->maxValue )
+ {
+ $this->maxValue = $value;
}
}
+ }
+ /**
+ * Calculate axis bounding values on base of the assigned values
+ *
+ * @abstract
+ * @access public
+ * @return void
+ */
+ public function calculateAxisBoundings()
+ {
// Calculate "nice" values for scaling parameters
if ( $this->majorStep === false )
{
- $this->calculateMajorStep( $min, $max );
+ $this->calculateMajorStep( $this->minValue, $this->maxValue );
}
if ( $this->minorStep === false )
{
- $this->calculateMinorStep( $min, $max );
+ $this->calculateMinorStep( $this->minValue, $this->maxValue );
}
if ( $this->min === false )
{
- $this->calculateMinimum( $min, $max );
+ $this->calculateMinimum( $this->minValue, $this->maxValue );
}
if ( $this->max === false )
{
- $this->calculateMaximum( $min, $max );
+ $this->calculateMaximum( $this->minValue, $this->maxValue );
}
}
OpenPOWER on IntegriCloud