add piwik installation
This commit is contained in:
parent
90aa4ef157
commit
8c5d4f0c31
3197 changed files with 563902 additions and 0 deletions
196
www/analytics/libs/sparkline/lib/Sparkline_Bar.php
Normal file
196
www/analytics/libs/sparkline/lib/Sparkline_Bar.php
Normal file
|
|
@ -0,0 +1,196 @@
|
|||
<?php
|
||||
/*
|
||||
* Sparkline PHP Graphing Library
|
||||
* Copyright 2004 James Byers <jbyers@gmail.com>
|
||||
* http://sparkline.org
|
||||
*
|
||||
* Dual-licensed under the BSD (LICENSE-BSD.txt) and GPL (LICENSE-GPL.txt)
|
||||
* licenses.
|
||||
*
|
||||
* $Id: Sparkline_Bar.php,v 1.3 2008/03/11 19:12:49 jbyers Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__).'/Sparkline.php';
|
||||
|
||||
class Sparkline_Bar extends Sparkline {
|
||||
|
||||
var $dataSeries;
|
||||
var $dataSeriesStats;
|
||||
var $dataSeriesConverted;
|
||||
var $yMin;
|
||||
var $yMax;
|
||||
var $barWidth;
|
||||
var $barSpacing;
|
||||
var $barColorDefault;
|
||||
var $barColorUnderscoreDefault;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// constructor
|
||||
//
|
||||
function Sparkline_Bar($catch_errors = true) {
|
||||
parent::Sparkline($catch_errors);
|
||||
|
||||
$this->dataSeries = array();
|
||||
$this->dataSeriesStats = array();
|
||||
$this->dataSeriesConverted = array();
|
||||
$this->barWidth = 1;
|
||||
$this->barSpacing = 1;
|
||||
$this->barColorDefault = 'black';
|
||||
$this->barColorUnderscoreDefault = 'black';
|
||||
} // function Sparkline
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// color, image property setting
|
||||
//
|
||||
function SetBarWidth($value) {
|
||||
$this->Debug("Sparkline_Bar :: SetBarWidth($value)", DEBUG_SET);
|
||||
$this->barWidth = $value;
|
||||
} // function SetBarWidth
|
||||
|
||||
function SetBarSpacing($value) {
|
||||
$this->Debug("Sparkline_Bar :: SetBarSpacing($value)", DEBUG_SET);
|
||||
$this->barSpacing = $value;
|
||||
} // function SetBarSpacing
|
||||
|
||||
function SetBarColorDefault($value) {
|
||||
$this->Debug("Sparkline_Bar :: SetBarColorDefault($value)", DEBUG_SET);
|
||||
$this->barColorDefault = $value;
|
||||
} // function SetBarColorDefault
|
||||
|
||||
function SetBarColorUnderscoreDefault($value) {
|
||||
$this->Debug("Sparkline_Bar :: SetBarColorUnderscoreDefault($value)", DEBUG_SET);
|
||||
$this->barColorUnderscoreDefault = $value;
|
||||
} // function SetBarColorUnderscoreDefault
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// data setting
|
||||
//
|
||||
function SetData($x, $y, $color = null, $underscore = false, $series = 1) {
|
||||
if(!is_numeric($x)) {
|
||||
$x = trim($x);
|
||||
}
|
||||
if(!is_numeric($y)) {
|
||||
$y = trim($y);
|
||||
}
|
||||
|
||||
$this->Debug("Sparkline_Bar :: SetData($x, $y, $series)", DEBUG_SET);
|
||||
|
||||
if (!is_numeric($x) ||
|
||||
!is_numeric($y)) {
|
||||
$this->Debug("Sparkline_Bar :: SetData rejected values($x, $y) in series $series", DEBUG_WARNING);
|
||||
return false;
|
||||
} // if
|
||||
|
||||
if ($color == null) {
|
||||
$color = $this->barColorDefault;
|
||||
}
|
||||
|
||||
$this->dataSeries[$series][$x] = array('value' => $y,
|
||||
'color' => $color,
|
||||
'underscore' => $underscore);
|
||||
|
||||
if (!isset($this->dataSeriesStats[$series]['min']) ||
|
||||
$y < $this->dataSeriesStats[$series]['min']) {
|
||||
$this->dataSeriesStats[$series]['min'] = $y;
|
||||
}
|
||||
|
||||
if (!isset($this->dataSeriesStats[$series]['max']) ||
|
||||
abs($y) > $this->dataSeriesStats[$series]['max']) {
|
||||
$this->dataSeriesStats[$series]['max'] = abs($y);
|
||||
}
|
||||
} // function SetData
|
||||
|
||||
function SetYMin($value) {
|
||||
$this->Debug("Sparkline_Bar :: SetYMin($value)", DEBUG_SET);
|
||||
$this->yMin = $value;
|
||||
}
|
||||
|
||||
function SetYMax($value) {
|
||||
$this->Debug("Sparkline_Bar :: SetYMax($value)", DEBUG_SET);
|
||||
$this->yMax = $value;
|
||||
}
|
||||
|
||||
function ConvertDataSeries($series, $xBound, $yBound) {
|
||||
$this->Debug("Sparkline_Bar :: ConvertDataSeries($series, $xBound, $yBound)", DEBUG_CALLS);
|
||||
|
||||
if (!isset($this->yMin)) {
|
||||
$this->yMin = $this->dataSeriesStats[$series]['min'];
|
||||
}
|
||||
|
||||
if (!isset($this->yMax)) {
|
||||
$this->yMax = $this->dataSeriesStats[$series]['max'];
|
||||
}
|
||||
|
||||
while (list(, $v) = each($this->dataSeries[$series])) {
|
||||
$y = floor($v['value'] * ($yBound / (abs($this->yMax) + abs($this->yMin))));
|
||||
$this->dataSeriesConverted[$series][] = array('value' => $y,
|
||||
'color' => $v['color'],
|
||||
'underscore' => $v['underscore']);
|
||||
|
||||
if (!isset($this->dataSeriesStats[$series]['min_converted']) ||
|
||||
$y < $this->dataSeriesStats[$series]['min_converted']) {
|
||||
$this->dataSeriesStats[$series]['min_converted'] = $y;
|
||||
}
|
||||
|
||||
if (!isset($this->dataSeriesStats[$series]['max_converted']) ||
|
||||
abs($y) > $this->dataSeriesStats[$series]['max_converted']) {
|
||||
$this->dataSeriesStats[$series]['max_converted'] = abs($y);
|
||||
}
|
||||
}
|
||||
reset($this->dataSeries[$series]);
|
||||
|
||||
} // function ConvertDataSeries
|
||||
|
||||
function CalculateImageWidth() {
|
||||
$this->Debug("Sparkline_Bar :: CalculateImageWidth()", DEBUG_CALLS);
|
||||
|
||||
$count = sizeof($this->dataSeries[1]);
|
||||
return (($count - 1) * $this->barSpacing) + ($count * $this->barWidth);
|
||||
} // function CalculateImageWidth
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// rendering
|
||||
//
|
||||
function Render($y) {
|
||||
$this->Debug("Sparkline_Bar :: Render($y)", DEBUG_CALLS);
|
||||
|
||||
// calculate size based on sets for init
|
||||
//
|
||||
if (!parent::Init($this->CalculateImageWidth(), $y)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// convert based on actual canvas size
|
||||
//
|
||||
$this->ConvertDataSeries(1, $this->GetGraphWidth(), $this->GetGraphHeight());
|
||||
|
||||
// stats debugging
|
||||
//
|
||||
$this->Debug('Sparkline_Bar :: Draw' .
|
||||
' series: 1 min: ' . $this->dataSeriesStats[1]['min'] .
|
||||
' max: ' . $this->dataSeriesStats[1]['max'] .
|
||||
' height: ' . $this->GetGraphHeight() .
|
||||
' yfactor: ' . ($this->GetGraphHeight() / (abs($this->dataSeriesStats[1]['max']) + abs($this->dataSeriesStats[1]['min']))));
|
||||
|
||||
$this->DrawBackground();
|
||||
|
||||
$yAxis = abs(min($this->dataSeriesStats[1]['min_converted'], 0));
|
||||
for ($i = 0; $i < sizeof($this->dataSeriesConverted[1]); $i++) {
|
||||
$this->DrawRectangleFilled($i * ($this->barWidth + $this->barSpacing),
|
||||
$yAxis,
|
||||
$i * ($this->barWidth + $this->barSpacing) + $this->barWidth - 1,
|
||||
$yAxis + $this->dataSeriesConverted[1][$i]['value'],
|
||||
$this->dataSeriesConverted[1][$i]['color']);
|
||||
if ($this->dataSeriesConverted[1][$i]['underscore']) {
|
||||
$this->DrawLine(max(0, $i * ($this->barWidth + $this->barSpacing) - ($this->barSpacing / 2)),
|
||||
$yAxis,
|
||||
min($this->GetGraphWidth(), $i * ($this->barWidth + $this->barSpacing) + ($this->barSpacing / 2)),
|
||||
$yAxis,
|
||||
$this->barColorUnderscoreDefault);
|
||||
}
|
||||
}
|
||||
} // function Render
|
||||
} // class Sparkline_Bar
|
||||
|
||||
?>
|
||||
Loading…
Add table
Add a link
Reference in a new issue