<!DOCTYPE html>
<html>
<!--
Organograma com os departamentos cadastrados no gpweb
google orgchart
sem jquery (nada contra)
em um só arquivo
-->
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<meta http-equiv="expires" content="0">
<meta http-equiv="cache-control" content="no-cache"/>
<meta http-equiv="pragma" content="no-cache"/>
<script type="text/javascript" src="
https://www.google.com/jsapi?ext.js&autoload={'modules':[{'name':'visualization','version':'1.1','packages':['orgchart'],language:'pt_BR'}]}"></script> <style type="text/css" media="print">
.noPrint
{
display:none;
}
#chart_div
{
width: 100%;
height: 100%;
}
</style>
<script type="text/javascript">
try
{
<?php
header("Pragma: no-cache");
header("Content-type: text/html; charset=UTF-8");
setlocale(LC_ALL, 'pt_BR.utf8');
$dept_superior=isset($_GET['dept_superior']) ? $_GET['dept_superior'] : '';
$sql="";
try
{
require_once './config.php';
//
function toUtf8(&$item, $key)
{
$item = iconv("iso-8859-1","utf-8",$item);
}
//
$hospedadoBd=$config['hospedadoBd'];
$usuarioBd=$config['usuarioBd'];
$senhaBd=$config['senhaBd'];
$nomeBd=$config['nomeBd'];
//
$db = new mysqli($hospedadoBd, $usuarioBd, $senhaBd, $nomeBd);
if (!$db)
{
throw new Exception ($db->error);
}
//
$db->set_charset("utf8");
//function PopularOrganograma()
//{
//global $db;
$sql="SELECT c.dept_nome AS name_child, p.dept_nome AS name_parent FROM depts c LEFT JOIN depts AS p ON p.dept_id=c.dept_superior ";
if (intval($dept_superior)>0)
{
$sql.=" WHERE c.dept_superior='" . $dept_superior . "' ";
}
$sql.=" ORDER BY c.dept_id";
//if (intval($dept_superior)>0)
//{
//echo 'alert("' . $sql . '");';
//}
$result=$db->query($sql);
if (!$result)
{
throw new Exception ($db->error);
}
//
$table = array();
$table['cols'] = array
(
array('label' => 'name_child', 'type' => 'string'),
array('label' => 'name_parent', 'type' => 'string')//,
//array('label' => 'userID', 'type' => 'number', 'role' => 'tooltip','trigger'=>'selection' ),
//array('label' => 'userID', 'type' => 'number')
);
$table['rows'] = array();
while ($row=$result->fetch_array())
{
array_walk($row, 'toUtf8');
$temp = array();
$temp[] = array('v' => $row['name_child']);
$temp[] = array('v' => $row['name_parent']);
//$temp[] = array('v' => $row['userID']);
$table['rows'][] = array('c' => $temp);
}
$result->close();
//$db->close();
$jsonTable = json_encode($table);
//return $jsonTable;
//}
//
function PopularCombobox()
{
global $db,$dept_superior;
$sql="SELECT DISTINCT a.dept_superior id, (SELECT b.dept_nome FROM depts b WHERE b.dept_id=a.dept_superior) nome FROM depts a WHERE a.dept_superior IS NOT NULL ORDER BY nome ASC";
$result=$db->query($sql);
if (!$result)
{
throw new Exception ($db->error);
}
//
echo 'var select = document.formOrganograma.cboSetor;'. PHP_EOL;
echo 'select.innerHTML="<option value=\"\">Selecione...</option>";'. PHP_EOL;
while ($row=$result->fetch_array())
{
array_walk($row, 'toUtf8');
echo 'select.innerHTML+="<option value=\"' . $row['id'] . '\">' . $row['nome'] . '</option>";' . PHP_EOL;
}
//
$result->close();
if (intval($dept_superior)>0)
{
echo 'select.value=' . $dept_superior . ';' . PHP_EOL;
}
}
}
catch(Exception $e)
{
$db->close();
$msg='ERRO: ' . $e->getMessage() . PHP_EOL . 'LINHA: ' . $e->getLine() . PHP_EOL . 'SQL: ' . $sql;
echo 'alert("' . $msg . '");';
exit;
}
?>
function placeOrder()
{
var i = document.formOrganograma.cboSetor.selectedIndex;
var dept_superior=document.formOrganograma.cboSetor[i].value;
if (dept_superior!="")
{
document.forms['formOrganograma'].action="./organograma.php?dept_superior=" + dept_superior;
}
else
{
document.forms['formOrganograma'].action="./organograma.php";
}
document.forms['formOrganograma'].submit();
}
//
function drawOrgChart()
{
var data = new google.visualization.DataTable(<?php echo $jsonTable; ?>);
var chart = new google.visualization.OrgChart(document.getElementById('chart_div'));
var options =
{
//enableInteractivity: true,
allowHtml: true,
allowCollapse: false,
size: 'small'
};
chart.draw(data,options);
<?php PopularCombobox(); ?>
// destroy object
for (element in chart)
{
delete chart[element];
}
//
chart = null;
delete chart;
//
}
//
google.setOnLoadCallback(drawOrgChart);
}
catch(err)
{
alert("Erro: " + err.message + "\n\n" + err.stack + "\n\n na linha: " + err.line);
}
</script>
</head>
<body>
<form name="formOrganograma" action="#" method="POST">
<div style="width: 100%;background: #f2f2f2;border: 1px solid #e6e6e6;">
<div style="width: 30%; float: left; display: inline-block;">
<div style="text-align:left">
<select id="cboSetor" style="margin-left:5%;width:40%;">
<option value="Selecione..."></option>
</select>
<button type="button" onclick="placeOrder();"><b>Filtrar</b></button>
</div>
</div>
<div style="width: 50%; float: left; display: inline-block;">
<div style="text-align:center">
<b>Organograma</b>
</div>
</div>
<div style="width: 20%; display: inline-block;">
<div style="text-align:right;margin-right:5%;">
<button type="button" onclick="window.print()"><b>Imprimir</b></button>
</div>
</div>
</div>
<div id="chart_div" style="margin-top: 5px;border: 0px solid #000000;"></div>
</form>
</body>
</html>