<?PHP
/*
 * DIREITOS AUTORAIS RESERVADOS (C) 2007 UFRJ
 * 
 * ESTE PROGRAMA É SOFTWARE LIVRE; VOCÊ PODE REDISTRIBUÍ-LO E/OU MODIFICÁ-LO SOB OS
 * TERMOS DA LICENÇA PÚBLICA GERAL GNU CONFORME PUBLICADA PELA FREE SOFTWARE FOUNDATION;
 * TANTO A VERSÃO 2 DA LICENÇA, COMO (A SEU CRITÉRIO) QUALQUER VERSÃO POSTERIOR.

 * ESTE PROGRAMA É DISTRIBUÍDO NA EXPECTATIVA DE QUE SEJA ÚTIL, PORÉM, SEM NENHUMA GARANTIA;
 * NEM MESMO A GARANTIA IMPLÍCITA DE COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA.
 * CONSULTE A LICENÇA PÚBLICA GERAL DO GNU PARA MAIS DETALHES.
 * 
 * VOCÊ DEVE TER RECEBIDO UMA CÓPIA DA LICENÇA PÚBLICA GERAL DO GNU JUNTO COM ESTE PROGRAMA; 
 * SE NÃO, ACESSE <<HTTP://WWW.GNU.ORG/LICENSES/LICENSES.PT-BR.HTML>>
 */

<?php
include "includes/pg_begin.php";     //carrega arquivo de conex�o

include "jpgraph/jpgraph.php";
include "jpgraph/jpgraph_line.php";
include "jpgraph/jpgraph_bar.php";

// Recupera os par�metros informados
$aux_indicador            = trim(pg_escape_string($_GET['indicador']));
$aux_granularidade        = trim(pg_escape_string($_GET['granularidade']));
$aux_periodicidade        = trim(pg_escape_string($_GET['periodicidade']));
$aux_unidadeperiodicidade = trim(pg_escape_string($_GET['unidadeperiodicidade']));
$aux_limite               = trim(pg_escape_string($_GET['limite']));
$aux_estilo               = trim(pg_escape_string($_GET['estilo']));
$aux_unidade              = trim(pg_escape_string($_GET['unidade']));

$aux_subtitulo = $aux_unidade . ' / ' . $aux_unidadeperiodicidade;

// Width and height of the graph
$width = 400; $height = 200;
 
// Create a graph instance
$graph = new Graph($width,$height);

// Specify what scale we want to use,
// int = integer scale for the X-axis
// int = integer scale for the Y-axis
$graph->SetScale('intint');

// Define as margens
$graph->SetMargin(60,60,30,30);  // esq, dir, cima baixo

// Setup a title for the graph
//$graph->title->SetFont(FF_ARIAL,FS_BOLD,12);
$graph->title->Set('Evolu��o Temporal');
//$graph->subtitle->SetFont(FF_ARIAL,FS_NORMAL,10);
$graph->subtitle->Set($aux_subtitulo);

// Define as bandas acima e abaixo do valor cr�tico do indicador
$aux_cor_min = "lightred";
$aux_cor_max = "lightgreen";

if ($aux_estilo == "Menor melhor") {
$aux_cor_min = "lightgreen";
$aux_cor_max = "lightred";
}

if ($aux_limite <> 0) {
	$band[0]=new PlotBand(HORIZONTAL,BAND_SOLID,"min",$aux_limite,$aux_cor_min);
	$band[1]=new PlotBand(HORIZONTAL,BAND_SOLID,$aux_limite,"max",$aux_cor_max);
	$graph->AddBand($band);
}

// Define o eixo Y
$graph->ygrid->Show(true);
$graph->ygrid->SetFill(true,'#EFEFEF@0.5','#EFEFEF@0.5');

// busca menor e maior valor para definir escala do eixo Y
// $graph->yaxis->scale->SetAutoMin(0);
// $graph->yaxis->scale->SetAutoMax(100);

$sql="
	select MIN (S.valorindicador)
	from seriehistorica S
	where S.codigoindicador = '" . $aux_indicador . "'  
	and S.codigogranularidade = " . $aux_granularidade . "
	and S.codigoperiodicidade = " . $aux_periodicidade . "
	and S.status = 0";
$result=pg_query($dbh, $sql);
$nt=pg_fetch_array($result);
$db_valorindicador = $nt['valorindicador'];
$graph->yaxis->scale->SetAutoMin($db_valorindicador);

$sql="
	select MAX (S.valorindicador)
	from seriehistorica S
	where S.codigoindicador = '" . $aux_indicador . "'  
	and S.codigogranularidade = " . $aux_granularidade . "
	and S.codigoperiodicidade = " . $aux_periodicidade . "
	and S.status = 0";
$result=pg_query($dbh, $sql);
$nt=pg_fetch_array($result);
$db_valorindicador = $nt['valorindicador'];
$graph->yaxis->scale->SetAutoMax($db_valorindicador);

// define aumento de 5% na escala de Y
$graph->yaxis->scale->SetGrace(5,5);

// se a unidade do indicador por percentual, muda a formata��o do eixo Y
if ($aux_unidade == '%') {
	$graph->yaxis->SetLabelFormat('%0.1f%%');
}

// Caso haja dados reais para o indicador, prepara a sua apresenta��o
// comando b�sico

$sql="
	select *
	from seriehistorica S
	where S.codigoindicador = '" . $aux_indicador . "'  
	and S.codigogranularidade = " . $aux_granularidade . "
	and S.codigoperiodicidade = " . $aux_periodicidade . "
	and S.status = 0
	order by S.valorperiodo asc";


$result=pg_query($dbh, $sql);

if (pg_NumRows($result) == 0) {
	// Define o eixo X (valores default para o prot�tipo)
	$years = array("2002","2003","2004","2005","2006","2007","2008","2009");
	$values = array("10","20","30","25","40","35","40","60");
} else {
	$ind = 0;
	while ($nt=pg_fetch_array($result))
	{
		//atribui valor a variaveis locais para db
		$db_valorperiodo = trim(pg_escape_string($nt['valorperiodo']));
		$db_valorindicador = $nt['valorindicador'];
		
		$years[$ind] = $db_valorperiodo;
		$values[$ind] = $db_valorindicador;
		$ind = $ind+ 1;
	}
}

// Prepare the graph
$graph->xgrid->Show(true);
$graph->xaxis->SetTickLabels($years);
$lineplot=new LinePlot($values); // Create the linear plot
$graph->Add($lineplot); // Add the plot to the graph
 
// Display the graph
if (pg_NumRows($result) >= 2) {
	$graph->Stroke();
} else {
	$image = ImageCreate(1,1);
	$aux = ImageColorAllocate($image, 0xFF, 0xFF, 0xFF);
	ImageColorTransparent ($image,$aux);
	header("Content-type: image/gif");
	imagegif ($image);
}
?>
