Conheça as melhorias da versão 8.0, 8.1, 8.2!
Clique aqui para saber mais
Gráficos com adianti Caros, Estou tendo problemas com a qualidade das fontes nos gráficos, alguma forma de alterar cor, tamanho, fonte ? att, ...
UP
Gráficos com adianti  
Fechado
Caros,

Estou tendo problemas com a qualidade das fontes nos gráficos, alguma forma de alterar cor, tamanho, fonte ?


att,

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (16)


FC

Bom dia Udson

O Adianti Reports é um módulo completo muito bom, mas com custo alto para um desenvolvedor iniciante.

Aqui eu uso para isso o highcharts não é difícil de implementar eu fiz esses gráficos a mais de 1 ano.

www.highcharts.com/demo

a integração é igual ao exemplo do tutor jquery
www.adianti.com.br/framework_files/tutor/index.php?class=JqueryGalle

Esse exemplo abaixo é igual a esse link
www.highcharts.com/demo/pie-basic

 
  1. <?php
  2. class GraficoPIE extends TPage
  3. {
  4. /**
  5. * Class constructor
  6. * Creates the page
  7. */
  8. function __construct()
  9. {
  10. parent::__construct();
  11. // loads the galleria javascript library
  12. //apontar para onde baixar seu arquivo
  13. TPage::include_js('lib/jquery/js/highcharts.js');
  14. // creates a table
  15. $table = new TTable;
  16. // creates the DIV element with the images
  17. $div = new TElement('div');
  18. $div->id = 'container';
  19. $div->style = "width:700px;height:500px";
  20. // add the DIV to the table
  21. $table->addRow()->addCell($div);
  22. parent::add($table);
  23. }
  24. function onGera(){
  25. $script = new TElement('script');
  26. $script->type = 'text/javascript';
  27. $javascript = "
  28. $('#container').highcharts({
  29. chart: {
  30. plotBackgroundColor: null,
  31. plotBorderWidth: null,
  32. plotShadow: false
  33. },
  34. title: {
  35. text: 'Browser market shares at a specific website, 2014'
  36. },
  37. tooltip: {
  38. pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
  39. },
  40. plotOptions: {
  41. pie: {
  42. allowPointSelect: true,
  43. cursor: 'pointer',
  44. dataLabels: {
  45. enabled: true,
  46. format: '<b>{point.name}</b>: {point.percentage:.1f} %',
  47. style: {
  48. color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
  49. }
  50. }
  51. }
  52. },
  53. series: [{
  54. type: 'pie',
  55. name: 'Browser share',
  56. data: [
  57. ['Firefox', 45.0],
  58. ['IE', 26.8],
  59. {
  60. name: 'Chrome',
  61. y: 12.8,
  62. sliced: true,
  63. selected: true
  64. },
  65. ['Safari', 8.5],
  66. ['Opera', 6.2],
  67. ['Others', 0.7]
  68. ]
  69. }]
  70. });
  71. ";
  72. $script->add($javascript);
  73. parent::add($script);
  74. }
  75. ?>


Boa sorte

Felipe Cortez
FC

Esquecendo depois para testar chame assim no navegador.

index.php?class=GraficoPIE&method=onGera


Abraços...
UP

Felipe,
Isto era exatamente o que eu estava procurando, muito obrigado mesmo, ficou top.

Você sabe como posso parametrizar para que na legenda ao invés de porcentagem aparecer a quantidade ?
FC

É só configurar os parametros dentro do "plotOptions" use o jsfiddle para ajustar a sua necessidade.

jsfiddle.net/gh/get/jquery/1.9.1/highslide-software/highcharts.com/t

UP

Felipe,
Quero te agradecer mais uma vez, veja o resultado na imagem. Ficou muito bom mesmo, ainda posso exportar para png, jpeg,pdf e svg.

IMG: escritorio.brfonetelecom.com.br:8881/grafico-easycontact.png

Muito grato.

UP

Vou deixar o código abaixo caso alguém precise:

Baixei a Biblioteca para: lib/jquery/js

Biblioteca: www.highcharts.com
Link para download: code.highcharts.com/zips/Highcharts-4.1.5.zip

 
  1. <?php
  2. /*
  3. * To change this license header, choose License Headers in Project Properties.
  4. * To change this template file, choose Tools | Templates
  5. * and open the template in the editor.
  6. */
  7. /**
  8. * Description of CurrentState Graphic
  9. *
  10. * @author udson
  11. */
  12. class CurrentState extends TPage
  13. {
  14. function __construct()
  15. {
  16. parent::__construct();
  17. TPage::include_js('lib/jquery/js/Highcharts-4.1.5/js/highcharts.js');
  18. TPage::include_js('lib/jquery/js/Highcharts-4.1.5/js/modules/exporting.js');
  19. $table = new TTable;
  20. $div = new TElement('div');
  21. $div->id = 'container';
  22. $div->style = "width:950px;height:600px";
  23. $table->addRow()->addCell($div);
  24. parent::add($table);
  25. $this->onGenerator();
  26. }
  27. function onGenerator(){
  28. $status = $this->onStatus();
  29. $script = new TElement('script');
  30. $script->type = 'text/javascript';
  31. $javascript = "
  32. $('#container').highcharts({
  33. chart: {
  34. plotBackgroundColor: null,
  35. plotBorderWidth: null,
  36. plotShadow: false
  37. },
  38. title: {
  39. text: 'Estado Atual'
  40. },
  41. tooltip: {
  42. enabled: true,
  43. valueDecimals: 0
  44. },
  45. plotOptions: {
  46. pie: {
  47. allowPointSelect: true,
  48. cursor: 'pointer',
  49. dataLabels: {
  50. enabled: true,
  51. format: '<p>{point.name}:</p> {point.y}',
  52. style: {
  53. color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
  54. }
  55. },
  56. showInLegend: true
  57. }
  58. },
  59. series: [{
  60. type: 'pie',
  61. name: 'Quantidade',
  62. data: [
  63. ['Confirmação fila', 23],
  64. ['Confirmado', 32],
  65. ['Confirmação s/ sucesso', 7],
  66. ['Lembrete fila', 11],
  67. ['Lembrete c/ sucesso', 35],
  68. ['Lembrete s/ sucesso', 2],
  69. ['Reagendado', 1],
  70. ['Reagendamento s / sucesso', 0],
  71. ['Cancelado', 12]
  72. ]
  73. }]
  74. });
  75. ";
  76. $script->add($javascript);
  77. parent::add($script);
  78. }
  79. }
  80. Resultado: http://escritorio.brfonetelecom.com.br:8881/grafico-easycontact.png
FS

Boa tarde,
Alguém poderia mostrar um exemplo de como gerar o gráfico com dados do Banco de Dados, utilizando o highcharts? Com dados estáticos tá tranquilo, o problema é com dados da base.

Obrigado.
FC

Acho que quando fiz esse exemplo ainda era Adianti 1 depois foi implementado o toArray e o fromArray basta substituir no séries data pelo pelo array.

Exemplo www.adianti.com.br/framework_files/tutor/index.php?class=ObjectFromA
FS

Obrigado Felipe,
Vou estudar aqui com este exemplo.

Abraços.
FS

Bom dia Felipe, tudo blz?
Teria como você postar um código de exemplo utilizando o highcharts? Eu sei que vc já me passou um exemplo, mas não tô conseguindo implementar aqui. Não pense que estou pedindo de mão beijada, é que eu estou ainda aprendendo e tenho dificuldade ainda em alguns pontos, então com algo mais visual eu vou entender melhor.

Desde já agradeço.

Abraços.
FC

Bom dia Fabiano

Vamos lá fui buscar o código repare somente precisamos mudar essa parte :
data: [ ['Confirmação fila', 23], ['Confirmado', 32], ['Confirmação s/ sucesso', 7], ['Lembrete fila', 11], ['Lembrete c/ sucesso', 35], ['Lembrete s/ sucesso', 2], ['Reagendado', 1], ['Reagendamento s / sucesso', 0], ['Cancelado', 12]


A não ser que queira fazer todo o código JS com o json isso seria cansativo.... vamos para minha solução.

vamos fazer uma conexão com BD usarei o get pois geralmente nesses gráficos são feitos calculos.

TTransaction::open('ORACLE');
 
  1. <?php
  2. $conn = TTransaction::get();
  3. $sql = " SELECT TAREFA, CALCULO1 FROM TABELA ) ";
  4. //executa query
  5. $colunas = $conn->query($sql);
  6. //crio as variaveis
  7. $dados = '';
  8. //percorro as colunas e coloco na string
  9. foreach ($colunas as $coluna)
  10. {
  11. $dados = $dados . '[\\''.$coluna[0].'\\','.$coluna[1].'],';
  12. }
  13. TTransaction::close();
  14. //retiro a ultima virgula
  15. $dados = substr($dados,0,-1);
  16. //verificar dados
  17. echo $dados;
  18. ?>


É so colocar dentro do javascript data: [{$dados}]

FS

Quanto ao séries/data eu entendi que tem que chamar o array, o que estou me confundindo é onde eu devo fazer a conexão com o banco. O código abaixo é a classe conforme tentei fazer, mas sei que está errada.

 
  1. <?php
  2. class GraficoPIE extends TPage
  3. {
  4. /**
  5. * Class constructor
  6. * Creates the page
  7. */
  8. function __construct()
  9. {
  10. parent::__construct();
  11. // loads the galleria javascript library
  12. //apontar para onde baixar seu arquivo
  13. TPage::include_js('lib/jquery/js/highcharts.js');
  14. // creates a table
  15. $table = new TTable;
  16. // creates the DIV element with the images
  17. $div = new TElement('div');
  18. $div->id = 'container';
  19. $div->style = "width:700px;height:500px";
  20. // add the DIV to the table
  21. $table->addRow()->addCell($div);
  22. parent::add($table);
  23. TTransaction::open('meubanco'); // open transaction
  24. // Convert an Active Record into array
  25. $conn = TTransaction::get();
  26. $sql = " SELECT nome_curso, valor_curso FROM idiomas ) ";
  27. //executa query
  28. $colunas = $conn->query($sql);
  29. //crio as variaveis
  30. $dados = '';
  31. //percorro as colunas e coloco na string
  32. foreach ($colunas as $coluna)
  33. {
  34. $dados = $dados . '[\''.$coluna[0].'\','.$coluna[1].'],';
  35. }
  36. TTransaction::close();
  37. //retiro a ultima virgula
  38. $dados = substr($dados,0,-1);
  39. //verificar dados
  40. echo $dados;
  41. }
  42. function onGera(){
  43. $script = new TElement('script');
  44. $script->type = 'text/javascript';
  45. $javascript = "
  46. $('#container').highcharts({
  47. chart: {
  48. plotBackgroundColor: null,
  49. plotBorderWidth: null,
  50. plotShadow: false
  51. },
  52. title: {
  53. text: 'Browser market shares at a specific website, 2014'
  54. },
  55. tooltip: {
  56. pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
  57. },
  58. plotOptions: {
  59. pie: {
  60. allowPointSelect: true,
  61. cursor: 'pointer',
  62. dataLabels: {
  63. enabled: true,
  64. format: '<b>{point.name}</b>: {point.percentage:.1f} %',
  65. style: {
  66. color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
  67. }
  68. }
  69. }
  70. },
  71. series: [{
  72. type: 'pie',
  73. name: 'Browser share',
  74. data: [{$dados}]
  75. }]
  76. });
  77. ";
  78. $script->add($javascript);
  79. parent::add($script);
  80. }
  81. }
  82. ?>



Obrigado!
FC

Acho que entendi a função deve estar atrapalhando retire ela.

class GraficoPIE extends TPage
{
/**
* Class constructor
* Creates the page
*/
function __construct()
{
parent::__construct();


// loads the galleria javascript library
//apontar para onde baixar seu arquivo
TPage::include_js('lib/jquery/js/highcharts.js');

// creates a table
$table = new TTable;

// creates the DIV element with the images
$div = new TElement('div');
$div->id = 'container';
$div->style = "width:700px;height:500px";
// add the DIV to the table
$table->addRow()->addCell($div);

parent::add($table);


TTransaction::open('meubanco'); // open transaction

// Convert an Active Record into array
$conn = TTransaction::get();
$sql = " SELECT nome_curso, valor_curso FROM idiomas ) ";
//executa query
$colunas = $conn->query($sql);
//crio as variaveis
$dados = '';
//percorro as colunas e coloco na string
foreach ($colunas as $coluna)
{
$dados = $dados . '[''.$coluna[0].'','.$coluna[1].'],';
}

TTransaction::close();
//retiro a ultima virgula
$dados = substr($dados,0,-1);
//verificar dados
echo $dados;

$script = new TElement('script');
$script->type = 'text/javascript';
$javascript = "
$('#container').highcharts({
chart: {
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false
},
title: {
text: 'Browser market shares at a specific website, 2014'
},
tooltip: {
pointFormat: '{series.name}: {point.percentage:.1f}%'
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
dataLabels: {
enabled: true,
format: '{point.name}: {point.percentage:.1f} %',
style: {
color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
}
}
}
},
series: [{
type: 'pie',
name: 'Browser share',
data: [{$dados}]
}]
});
";
$script->add($javascript);
parent::add($script);

}
FS

Boa noite Felipe,
Infelizmente não adiantou retirar a função, agora está apresentando o erro

" Parse error: syntax error, unexpected ''.$coluna[0].'' (T_CONSTANT_ENCAPSED_STRING) in C:xampphtdocsunaappcontrolgraficosGraficoPIE.class.php on line 41"

Mas tranquilo, não quero tomar muito seu tempo, vou dar mais uma pesquisada e tentar achar uma solução.

Obrigado.
FC

Nada rapaz, não desistimos assim facilmente percebi que quando posto a msg ele corta o código por causa da "barra" no forum não aparece, por isso esta dando o erro.

me encaminhe um email que te envio o código certinho felipecortez.fgc@gmail.com
FV

Olá galera, esse exemplo é muito bom, consegui gerar o que eu queria, porém queria tirar uma dúvida de como alinhar a div.
De acordo com que vi ela ta dentro de um table então gostaria de saber como tirar da table e alinhar para o top.
Fico no aguardo pela ajuda.