indicador_grafico.php
14.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
<?php
/*
Copyright [2008] - Sérgio Fernandes Reinert de Lima
Este arquivo é parte do programa gpweb
O gpweb é um software livre; você pode redistribuí-lo e/ou modificá-lo dentro dos termos da Licença Pública Geral GNU como publicada pela Fundação do Software Livre (FSF); na versão 2 da Licença.
Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/GPL em português para maiores detalhes.
Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o título "licença GPL 2.odt", junto com este programa, se não, acesse o Portal do Software Público Brasileiro no endereço www.softwarepublico.gov.br ou escreva para a Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
/********************************************************************************************
gpweb\modulos\praticas\indicador_grafico.php
Selecionar qual tipo de gráfico representará o indicador. Chama Gantt.php
********************************************************************************************/
global $pratica_indicador_id, $pratica_indicador, $cal_sdf, $ano;
if(!isset($pratica_indicador_id) || !$pratica_indicador_id) $pratica_indicador_id = getParam($_REQUEST, 'pratica_indicador_id', 0);
$tipo_grafico = array('linha' => 'Linha', 'barra' => 'Barra', 'barra_sombra' => 'Barra com sombra', 'area' => 'Área da linha');
$tipo_agrupamento=array('dia' => 'Dia', 'semana' => 'Semana', 'mes' => 'Mês','bimestre' => 'Bimestre','trimestre' => 'Trimestre','quadrimestre' => 'Quadrimestre','semestre' => 'Semestre', 'ano' => 'Ano');
$Aplic->carregarCalendarioJS();
$faixas=getParam($_REQUEST, 'faixas', 0);
$pratica_indicador_mostrar_valor=getParam($_REQUEST, 'pratica_indicador_mostrar_valor', (isset($_REQUEST['pratica_indicador_nr_pontos']) ? 0 : $pratica_indicador['pratica_indicador_mostrar_valor']));
$pratica_indicador_mostrar_pontuacao=getParam($_REQUEST, 'pratica_indicador_mostrar_pontuacao', 0);
$pratica_indicador_mostrar_titulo=getParam($_REQUEST, 'pratica_indicador_mostrar_titulo', (isset($_REQUEST['pratica_indicador_nr_pontos']) ? 0 : $pratica_indicador['pratica_indicador_mostrar_titulo']));
$pratica_indicador_max_min=getParam($_REQUEST, 'pratica_indicador_max_min', (isset($_REQUEST['pratica_indicador_nr_pontos']) ? 0 : $pratica_indicador['pratica_indicador_max_min']));
$pratica_indicador_tipografico=getParam($_REQUEST, 'pratica_indicador_tipografico', $pratica_indicador['pratica_indicador_tipografico']);
$pratica_indicador_agrupar=(isset($_REQUEST['pratica_indicador_agrupar']) ? getParam($_REQUEST, 'pratica_indicador_agrupar', null) : $pratica_indicador['pratica_indicador_agrupar']);
$pratica_indicador_nr_pontos=(isset($_REQUEST['pratica_indicador_nr_pontos']) ? getParam($_REQUEST, 'pratica_indicador_nr_pontos', null) : $pratica_indicador['pratica_indicador_nr_pontos']);
$segundo_indicador=getParam($_REQUEST, 'segundo_indicador', 0);
$df = '%d/%m/%Y';
$data = (isset($_REQUEST['pratica_indicador_data']) ? new CData(getParam($_REQUEST, 'pratica_indicador_data', null)) : new CData());
$data2 = (isset($_REQUEST['pratica_indicador_data2']) ? new CData(getParam($_REQUEST, 'pratica_indicador_data2', null)) : new CData());
echo '<form name="mudar_grafico" method="post">';
echo '<input type="hidden" name="m" value="praticas" />';
echo '<input type="hidden" name="a" value="indicador_ver" />';
echo '<input type="hidden" name="pratica_indicador_id" value="'.$pratica_indicador_id.'" />';
echo '<table cellspacing=0 cellpadding=0 align="center" class="std2" width="100%">';
echo '<tr><td>';
echo dica('Tipo de Gráfico', 'Escolha qual a melhor representação gráfica para os valores do indicador.').'Gráfico:'.dicaF().selecionaVetor($tipo_grafico, 'pratica_indicador_tipografico', 'class="texto"', $pratica_indicador_tipografico);
echo dica('Agrupar Valores', 'Escolha qual a melhor forma de agrupar valores:<ul><li>dia - Faz-se a média dos valores que são do mesmo dia</li><li>mês - Faz-se a média dos valores do mesmo mês, após ter sido feito a média dos dias</li><li>Ano - Faz-se a média dos valores do mesmo ano, após ter sido feito a média dos meses.</li></ul>').' Agrupar por:'.dicaF().selecionaVetor($tipo_agrupamento, 'pratica_indicador_agrupar', 'class="texto"', $pratica_indicador_agrupar);
echo dica('Mostrar Valores', 'Marque caso queira que o gráfico mostre legenda com os valores de cada ponto marcado.').' Valores:'.dicaF().'<input type="checkbox" class="texto" name="pratica_indicador_mostrar_valor" value="1" '.($pratica_indicador_mostrar_valor ? 'checked="checked"' : '').' />';
echo dica('Pontuação', 'Marque caso queira que o gráfico mostre as pontuações obtidas em vez dos valores brutos. A pontuação é a razão dos valores brutos pela metas dos períodos').' Pontuação:'.dicaF().'<input type="checkbox" class="texto" name="pratica_indicador_mostrar_pontuacao" value="1" '.($pratica_indicador_mostrar_pontuacao ? 'checked="checked"' : '').' />';
echo dica('Mostrar título', 'Marque caso queira que o gráfico apresente no título o nome do indicador.').' Título:'.dicaF().'<input type="checkbox" class="texto" name="pratica_indicador_mostrar_titulo" value="1" '.($pratica_indicador_mostrar_titulo ? 'checked="checked"' : '').' />';
echo dica('Mostrar Máximos e Mínimos', 'Marque caso queira que o gráfico apresente os valores extremos para cada ponto.').' Max e Min:'.dicaF().'<input type="checkbox" class="texto" name="pratica_indicador_max_min" value="1" '.($pratica_indicador_max_min ? 'checked="checked"' : '').' />';
if ($Aplic->profissional) echo dica('Mostrar Faixas', 'Marque caso queira que o gráfico apresente faixas de valores de bom, regular e ruim.').' Faixas:'.dicaF().'<input type="checkbox" class="texto" name="faixas" value="1" '.($faixas ? 'checked="checked"' : '').' />';
echo dica('Número de Pontos à Plotar', 'Qual a quantidade de valores distintos a plotar no gráfico.<br><br>Ex: gráfico mensal de janeiro à dezembro teria 12 pontos, com data final em dezembro.').' Nr pontos:'.dicaF().'<input type="text" name="pratica_indicador_nr_pontos" style="width:30px;" value="'.$pratica_indicador_nr_pontos.'" class="texto" />';
echo dica('Data da Final', 'Última data a ser pesquisada quando da busca dos valores.').' Data final:'.dicaF().'<input type="hidden" name="pratica_indicador_data" id="pratica_indicador_data" value="'.($data ? $data->format(FMT_TIMESTAMP_DATA) : '').'" /><input type="text" name="data" style="width:70px;" id="data" onchange="setData(\'mudar_grafico\', \'data\',\'pratica_indicador_data\');" value="'.($data ? $data->format($df) : '').'" class="texto" />'.dica('Data Final', 'Clique neste ícone '.imagem('icones/calendario.gif').' para abrir um calendário onde poderá selecionar a data do último valor aferido.').'<a href="javascript: void(0);" ><img id="f_btn1" src="'.acharImagem('calendario.gif').'" style="vertical-align:middle" width="18" height="12" alt="Calendário" border=0 /></a>'.dicaF();
echo ' <a href="javascript: void(0);" onclick="if (document.getElementById(\'segundo\').style.display==\'none\') document.getElementById(\'segundo\').style.display=\'\'; else document.getElementById(\'segundo\').style.display=\'none\';">'.imagem('icones/comparar_indicadores.gif','Comparar Indicadores','Clique neste ícone '.imagem('icones/comparar_indicadores.gif').' para comparar os valores do indicador atual com outro a ser selecionado.').'</a>';
if ($Aplic->profissional) {
echo ' <a href="javascript: void(0)" onclick="exportar_excel();">'.imagem('icones/excel_p.gif', 'Exportar para Excel' , 'Clique neste ícone '.imagem('icones/excel_p.gif').' para exportar os valores do indicador para o formato excel.').'</a>'.dicaF();
echo ' <a href="javascript: void(0)" onclick="exportar_link();">'.imagem('icones/indicador_exporta_p.png', 'Exportar Link' , 'Ao clicar neste ícone '.imagem('icones/indicador_exporta_p.png').' será exibido o endereço web para visualização do indicador em ambiente externo.').'</a>'.dicaF();
}
echo '</td><td>'.botao('exibir', 'Exibir', 'Clique neste botão para exibir o gráfico de acordo com os parâmetros entrados à esquerda.','','mudar_grafico.submit();').'</td>';
echo '</tr>';
echo '<tr><td id="segundo" name="segundo" style="display:'.($segundo_indicador ? '' : 'none').'">';
echo dica('Indicador de Comparação', 'Indicador escolhiodo para comparar os gráficos').'Indicador de comparação:'.dicaF();
echo '<input type="hidden" name="segundo_indicador" value="'.$segundo_indicador.'" /><input type="text" id="nome" name="segundo_indicador_nome" value="'.nome_indicador($segundo_indicador).'" style="width:250px;" class="texto" READONLY />';
echo '<a href="javascript: void(0);" onclick="popIndicador();">'.imagem('icones/indicador_p.gif','Selecionar Indicador','Clique neste ícone '.imagem('icones/indicador_p.gif').' para selecionar um indicador.').'</a>';
echo dica('Data da Final', 'Última data a ser pesquisada quando da busca dos valores.').' Data final:'.dicaF().'<input type="hidden" name="pratica_indicador_data2" id="pratica_indicador_data2" value="'.($data2 ? $data2->format(FMT_TIMESTAMP_DATA) : '').'" /><input type="text" name="data2" style="width:70px;" id="data2" onchange="setData(\'mudar_grafico\', \'data2\',\'pratica_indicador_data2\');" value="'.($data2 ? $data2->format($df) : '').'" class="texto" />'.dica('Data Final', 'Clique neste ícone '.imagem('icones/calendario.gif').' para abrir um calendário onde poderá selecionar a data do último valor aferido.').'<a href="javascript: void(0);" ><img id="f_btn2" src="'.acharImagem('calendario.gif').'" style="vertical-align:middle" width="18" height="12" alt="Calendário" border=0 /></a>'.dicaF();
echo '</td></tr>';
echo '<tr><td colspan=20>';
$src = '?m=praticas&a=grafico_free&sem_cabecalho=1&ano='.$ano.'&faixas='.$faixas.'&mostrar_valor='.$pratica_indicador_mostrar_valor.'&mostrar_pontuacao='.$pratica_indicador_mostrar_pontuacao.'&data_final='.$data->format("%Y-%m-%d").'&data_final2='.$data2->format("%Y-%m-%d").'&nr_pontos='.$pratica_indicador_nr_pontos.'&mostrar_titulo='.$pratica_indicador_mostrar_titulo.'&max_min='.$pratica_indicador_max_min.'&agrupar='.$pratica_indicador_agrupar.'&tipografico='.$pratica_indicador_tipografico.'&segundo_indicador='.$segundo_indicador.'&pratica_indicador_id='.$pratica_indicador_id."&width='+((navigator.appName=='Netscape'?window.innerWidth:document.body.offsetWidth)*0.95)+'";
echo "<table cellspacing='0' cellpadding='0' align='center' class='tbl3'><tr><td><script>document.write('<img src=\"$src\">')</script></td></tr></table>";
echo '</td></tr></table>';
echo '</form>';
echo '<script language="javascript">function exportar_excel(){url_passar(1, \'m=praticas&a=indicador_exportar_excel_pro&sem_cabecalho=1&ano='.$ano.'&faixas='.$faixas.'&mostrar_valor='.$pratica_indicador_mostrar_valor.'&mostrar_pontuacao='.$pratica_indicador_mostrar_pontuacao.'&data_final='.$data->format("%Y-%m-%d").'&data_final2='.$data2->format("%Y-%m-%d").'&nr_pontos='.$pratica_indicador_nr_pontos.'&mostrar_titulo='.$pratica_indicador_mostrar_titulo.'&max_min='.$pratica_indicador_max_min.'&agrupar='.$pratica_indicador_agrupar.'&tipografico='.$pratica_indicador_tipografico.'&segundo_indicador='.$segundo_indicador.'&pratica_indicador_id='.$pratica_indicador_id.'\');}</script>';
?>
<script language="javascript">
function exportar_link(){
if (window.parent.gpwebApp) parent.gpwebApp.popUp('Link', 900, 100, 'm=publico&a=exportar_link&dialogo=1&tipo=indicador&ano=<?php echo $ano ?>&faixas=<?php echo $faixas ?>&mostrar_valor=<?php echo $pratica_indicador_mostrar_valor ?>&mostrar_pontuacao=<?php echo $pratica_indicador_mostrar_pontuacao ?>&data_final=<?php echo $data->format("%Y-%m-%d") ?>&data_final2=<?php echo $data2->format("%Y-%m-%d") ?>&nr_pontos=<?php echo $pratica_indicador_nr_pontos ?>&mostrar_titulo=<?php echo $pratica_indicador_mostrar_titulo ?>&max_min=<?php echo $pratica_indicador_max_min ?>&agrupar=<?php echo $pratica_indicador_agrupar ?>&tipografico=<?php echo $pratica_indicador_tipografico ?>&segundo_indicador=<?php echo $segundo_indicador ?>&pratica_indicador_id=<?php echo $pratica_indicador_id ?>', null, window);
}
function popIndicador() {
if (window.parent.gpwebApp) parent.gpwebApp.popUp('Indicador', 500, 500, 'm=publico&a=selecionar&dialogo=1&chamar_volta=setIndicador&tabela=pratica_indicador&cia_id='+<?php echo $pratica_indicador['pratica_indicador_cia'] ?>, window.setIndicador, window);
else window.open('./index.php?m=publico&a=selecionar&dialogo=1&chamar_volta=setIndicador&tabela=pratica_indicador&cia_id='+<?php echo $pratica_indicador['pratica_indicador_cia'] ?>, 'Indicador','left=0,top=0,height=600,width=350,scrollbars=yes, resizable=yes');
}
function setIndicador(chave, valor){
mudar_grafico.segundo_indicador.value=chave;
mudar_grafico.segundo_indicador_nome.value=valor;
}
var cal1 = Calendario.setup({
trigger : "f_btn1",
inputField : "pratica_indicador_data",
date : <?php echo $data->format("%Y%m%d")?>,
selection: <?php echo $data->format("%Y%m%d")?>,
onSelect: function(cal1) {
var date = cal1.selection.get();
if (date){
date = Calendario.intToDate(date);
document.getElementById("data").value = Calendario.printDate(date, "%d/%m/%Y");
document.getElementById("pratica_indicador_data").value = Calendario.printDate(date, "%Y-%m-%d");
}
cal1.hide();
}
});
var cal2 = Calendario.setup({
trigger : "f_btn2",
inputField : "pratica_indicador_data2",
date2 : <?php echo $data2->format("%Y%m%d")?>,
selection: <?php echo $data2->format("%Y%m%d")?>,
onSelect: function(cal2) {
var date2 = cal2.selection.get();
if (date2){
date2 = Calendario.intToDate(date2);
document.getElementById("data2").value = Calendario.printDate(date2, "%d/%m/%Y");
document.getElementById("pratica_indicador_data2").value = Calendario.printDate(date2, "%Y-%m-%d");
}
cal2.hide();
}
});
function setData( frm_nome, f_data , f_data_real) {
campo_data = eval( 'document.'+frm_nome+ '.'+f_data);
campo_data_real = eval( 'document.'+ frm_nome+'.'+f_data_real);
if (campo_data.value.length>0) {
if ((parsfimData(campo_data.value))==null) {
alert('A data/hora digitada não corresponde ao formato padrão. Redigite, por favor.');
campo_data_real.value = '';
campo_data.style.backgroundColor = 'red';
}
else {
campo_data_real.value = formatarData(parsfimData(campo_data.value), 'yyyy-MM-dd');
campo_data.value = formatarData(parsfimData(campo_data.value), 'dd/MM/Y');
campo_data.style.backgroundColor = '';
}
}
else campo_data_real.value = '';
}
</script>