function pDraw::writeLabel
Search API
5.x pDraw.class.php | pDraw::writeLabel($SeriesName, $Indexes, $Format = "") |
File
- inc/
pchart/ pchart/ class/ pDraw.class.php, line 5582
Class
Code
function writeLabel($SeriesName, $Indexes, $Format = "")
{
$OverrideTitle = isset($Format ["OverrideTitle"]) ? $Format ["OverrideTitle"] : NULL;
$ForceLabels = isset($Format ["ForceLabels"]) ? $Format ["ForceLabels"] : NULL;
$DrawPoint = isset($Format ["DrawPoint"]) ? $Format ["DrawPoint"] : LABEL_POINT_BOX;
$DrawVerticalLine = isset($Format ["DrawVerticalLine"]) ? $Format ["DrawVerticalLine"] : FALSE;
$VerticalLineR = isset($Format ["VerticalLineR"]) ? $Format ["VerticalLineR"] : 0;
$VerticalLineG = isset($Format ["VerticalLineG"]) ? $Format ["VerticalLineG"] : 0;
$VerticalLineB = isset($Format ["VerticalLineB"]) ? $Format ["VerticalLineB"] : 0;
$VerticalLineAlpha = isset($Format ["VerticalLineAlpha"]) ? $Format ["VerticalLineAlpha"] : 40;
$VerticalLineTicks = isset($Format ["VerticalLineTicks"]) ? $Format ["VerticalLineTicks"] : 2;
$Data = $this->DataSet->getData();
list($XMargin, $XDivs) = $this->scaleGetXSettings();
if (!is_array($Indexes)) {
$Index = $Indexes;
$Indexes = "";
$Indexes [] = $Index;
}
if (!is_array($SeriesName)) {
$SerieName = $SeriesName;
$SeriesName = "";
$SeriesName [] = $SerieName;
}
if ($ForceLabels != NULL && !is_array($ForceLabels)) {
$ForceLabel = $ForceLabels;
$ForceLabels = "";
$ForceLabels [] = $ForceLabel;
}
foreach ($Indexes as $Key => $Index)
{
$Series = "";
if ($Data ["Orientation"] == SCALE_POS_LEFTRIGHT)
{
if ($XDivs == 0) {
$XStep = ($this->GraphAreaX2 -$this->GraphAreaX1) / 4;
}
else {
$XStep = ($this->GraphAreaX2 -$this->GraphAreaX1 -$XMargin * 2) / $XDivs;
}
$X = $this->GraphAreaX1 + $XMargin + $Index * $XStep;
if ($DrawVerticalLine) {
$this->drawLine($X, $this->GraphAreaY1 + $Data ["YMargin"], $X, $this->GraphAreaY2 -$Data ["YMargin"], array("R" => $VerticalLineR, "G" => $VerticalLineG, "B" => $VerticalLineB, "Alpha" => $VerticalLineAlpha, "Ticks" => $VerticalLineTicks));
}
$MinY = $this->GraphAreaY2;
foreach ($SeriesName as $iKey => $SerieName)
{
if (isset($Data ["Series"][$SerieName]["Data"][$Index]))
{
$AxisID = $Data ["Series"][$SerieName]["Axis"];
$XAxisMode = $Data ["XAxisDisplay"];
$XAxisFormat = $Data ["XAxisFormat"];
$XAxisUnit = $Data ["XAxisUnit"];
$AxisMode = $Data ["Axis"][$AxisID]["Display"];
$AxisFormat = $Data ["Axis"][$AxisID]["Format"];
$AxisUnit = $Data ["Axis"][$AxisID]["Unit"];
if (isset($Data ["Abscissa"]) && isset($Data ["Series"][$Data ["Abscissa"]]["Data"][$Index])) {
$XLabel = $this->scaleFormat($Data ["Series"][$Data ["Abscissa"]]["Data"][$Index], $XAxisMode, $XAxisFormat, $XAxisUnit);
}
else {
$XLabel = "";
}
if ($OverrideTitle != NULL) {
$Description = $OverrideTitle;
}
elseif (count($SeriesName) == 1)
{
$Description = $Data ["Series"][$SerieName]["Description"] . " - " . $XLabel;
}
elseif (isset($Data ["Abscissa"]) && isset($Data ["Series"][$Data ["Abscissa"]]["Data"][$Index])) {
$Description = $XLabel;
}
$Serie = "";
$Serie ["R"] = $Data ["Series"][$SerieName]["Color"]["R"];
$Serie ["G"] = $Data ["Series"][$SerieName]["Color"]["G"];
$Serie ["B"] = $Data ["Series"][$SerieName]["Color"]["B"];
$Serie ["Alpha"] = $Data ["Series"][$SerieName]["Color"]["Alpha"];
if (count($SeriesName) == 1 && isset($Data ["Series"][$SerieName]["XOffset"])) {
$SerieOffset = $Data ["Series"][$SerieName]["XOffset"];
}
else {
$SerieOffset = 0;
}
$Value = $Data ["Series"][$SerieName]["Data"][$Index];
if ($Value == VOID) {
$Value = "NaN";
}
if ($ForceLabels != NULL) {
$Caption = isset($ForceLabels [$Key]) ? $ForceLabels [$Key] : "Not set";
}
else {
$Caption = $this->scaleFormat($Value, $AxisMode, $AxisFormat, $AxisUnit);
}
if ($this->LastChartLayout == CHART_LAST_LAYOUT_STACKED)
{
if ($Value >= 0) {
$LookFor = "+";
}
else {
$LookFor = "-";
}
$Value = 0;
$Done = FALSE;
foreach ($Data ["Series"] as $Name => $SerieLookup)
{
if ($SerieLookup ["isDrawable"] == TRUE && $Name != $Data ["Abscissa"] && !$Done)
{
if (isset($Data ["Series"][$Name]["Data"][$Index]) && $Data ["Series"][$Name]["Data"][$Index] != VOID)
{
if ($Data ["Series"][$Name]["Data"][$Index] >= 0 && $LookFor == "+") {
$Value = $Value + $Data ["Series"][$Name]["Data"][$Index];
}
if ($Data ["Series"][$Name]["Data"][$Index] < 0 && $LookFor == "-") {
$Value = $Value - $Data ["Series"][$Name]["Data"][$Index];
}
if ($Name == $SerieName) {
$Done = TRUE;
}
}
}
}
}
$X = floor($this->GraphAreaX1 + $XMargin + $Index * $XStep + $SerieOffset);
$Y = floor($this->scaleComputeY($Value, array("AxisID" => $AxisID)));
if ($Y < $MinY) {
$MinY = $Y;
}
if ($DrawPoint == LABEL_POINT_CIRCLE) {
$this->drawFilledCircle($X, $Y, 3, array("R" => 255, "G" => 255, "B" => 255, "BorderR" => 0, "BorderG" => 0, "BorderB" => 0));
}
elseif ($DrawPoint == LABEL_POINT_BOX) {
$this->drawFilledRectangle($X -2, $Y -2, $X + 2, $Y + 2, array("R" => 255, "G" => 255, "B" => 255, "BorderR" => 0, "BorderG" => 0, "BorderB" => 0));
}
$Series [] = array("Format" => $Serie, "Caption" => $Caption);
}
}
$this->drawLabelBox($X, $MinY -3, $Description, $Series, $Format);
}
else
{
if ($XDivs == 0) {
$XStep = ($this->GraphAreaY2 -$this->GraphAreaY1) / 4;
}
else {
$XStep = ($this->GraphAreaY2 -$this->GraphAreaY1 -$XMargin * 2) / $XDivs;
}
$Y = $this->GraphAreaY1 + $XMargin + $Index * $XStep;
if ($DrawVerticalLine) {
$this->drawLine($this->GraphAreaX1 + $Data ["YMargin"], $Y, $this->GraphAreaX2 -$Data ["YMargin"], $Y, array("R" => $VerticalLineR, "G" => $VerticalLineG, "B" => $VerticalLineB, "Alpha" => $VerticalLineAlpha, "Ticks" => $VerticalLineTicks));
}
$MinX = $this->GraphAreaX2;
foreach ($SeriesName as $Key => $SerieName)
{
if (isset($Data ["Series"][$SerieName]["Data"][$Index]))
{
$AxisID = $Data ["Series"][$SerieName]["Axis"];
$XAxisMode = $Data ["XAxisDisplay"];
$XAxisFormat = $Data ["XAxisFormat"];
$XAxisUnit = $Data ["XAxisUnit"];
$AxisMode = $Data ["Axis"][$AxisID]["Display"];
$AxisFormat = $Data ["Axis"][$AxisID]["Format"];
$AxisUnit = $Data ["Axis"][$AxisID]["Unit"];
if (isset($Data ["Abscissa"]) && isset($Data ["Series"][$Data ["Abscissa"]]["Data"][$Index])) {
$XLabel = $this->scaleFormat($Data ["Series"][$Data ["Abscissa"]]["Data"][$Index], $XAxisMode, $XAxisFormat, $XAxisUnit);
}
else {
$XLabel = "";
}
if ($OverrideTitle != NULL) {
$Description = $OverrideTitle;
}
elseif (count($SeriesName) == 1)
{
if (isset($Data ["Abscissa"]) && isset($Data ["Series"][$Data ["Abscissa"]]["Data"][$Index])) {
$Description = $Data ["Series"][$SerieName]["Description"] . " - " . $XLabel;
}
}
elseif (isset($Data ["Abscissa"]) && isset($Data ["Series"][$Data ["Abscissa"]]["Data"][$Index])) {
$Description = $XLabel;
}
$Serie = "";
if (isset($Data ["Extended"]["Palette"][$Index]))
{
$Serie ["R"] = $Data ["Extended"]["Palette"][$Index]["R"];
$Serie ["G"] = $Data ["Extended"]["Palette"][$Index]["G"];
$Serie ["B"] = $Data ["Extended"]["Palette"][$Index]["B"];
$Serie ["Alpha"] = $Data ["Extended"]["Palette"][$Index]["Alpha"];
}
else
{
$Serie ["R"] = $Data ["Series"][$SerieName]["Color"]["R"];
$Serie ["G"] = $Data ["Series"][$SerieName]["Color"]["G"];
$Serie ["B"] = $Data ["Series"][$SerieName]["Color"]["B"];
$Serie ["Alpha"] = $Data ["Series"][$SerieName]["Color"]["Alpha"];
}
if (count($SeriesName) == 1 && isset($Data ["Series"][$SerieName]["XOffset"])) {
$SerieOffset = $Data ["Series"][$SerieName]["XOffset"];
}
else {
$SerieOffset = 0;
}
$Value = $Data ["Series"][$SerieName]["Data"][$Index];
if ($ForceLabels != NULL) {
$Caption = isset($ForceLabels [$Key]) ? $ForceLabels [$Key] : "Not set";
}
else {
$Caption = $this->scaleFormat($Value, $AxisMode, $AxisFormat, $AxisUnit);
}
if ($Value == VOID) {
$Value = "NaN";
}
if ($this->LastChartLayout == CHART_LAST_LAYOUT_STACKED)
{
if ($Value >= 0) {
$LookFor = "+";
}
else {
$LookFor = "-";
}
$Value = 0;
$Done = FALSE;
foreach ($Data ["Series"] as $Name => $SerieLookup)
{
if ($SerieLookup ["isDrawable"] == TRUE && $Name != $Data ["Abscissa"] && !$Done)
{
if (isset($Data ["Series"][$Name]["Data"][$Index]) && $Data ["Series"][$Name]["Data"][$Index] != VOID)
{
if ($Data ["Series"][$Name]["Data"][$Index] >= 0 && $LookFor == "+") {
$Value = $Value + $Data ["Series"][$Name]["Data"][$Index];
}
if ($Data ["Series"][$Name]["Data"][$Index] < 0 && $LookFor == "-") {
$Value = $Value - $Data ["Series"][$Name]["Data"][$Index];
}
if ($Name == $SerieName) {
$Done = TRUE;
}
}
}
}
}
$X = floor($this->scaleComputeY($Value, array("AxisID" => $AxisID)));
$Y = floor($this->GraphAreaY1 + $XMargin + $Index * $XStep + $SerieOffset);
if ($X < $MinX) {
$MinX = $X;
}
if ($DrawPoint == LABEL_POINT_CIRCLE) {
$this->drawFilledCircle($X, $Y, 3, array("R" => 255, "G" => 255, "B" => 255, "BorderR" => 0, "BorderG" => 0, "BorderB" => 0));
}
elseif ($DrawPoint == LABEL_POINT_BOX) {
$this->drawFilledRectangle($X -2, $Y -2, $X + 2, $Y + 2, array("R" => 255, "G" => 255, "B" => 255, "BorderR" => 0, "BorderG" => 0, "BorderB" => 0));
}
$Series [] = array("Format" => $Serie, "Caption" => $Caption);
}
}
$this->drawLabelBox($MinX, $Y -3, $Description, $Series, $Format);
}
}
}