/** * Copyright (c) 2009-2014 Câmara dos Deputados. Todos os direitos reservados. * * e-Democracia é um software livre; você pode redistribuí-lo e/ou modificá-lo dentro * dos termos da Licença Pública Geral Menor GNU como publicada pela Fundação do * Software Livre (FSF); na versão 2.1 da Licença, ou (na sua opinião) qualquer versão. * * Este programa é distribuído na esperança de 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 Menor GNU para maiores detalhes. */ package br.gov.camara.edemocracia.portlets.dashboard.beans; import java.util.List; import javax.annotation.PostConstruct; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.ViewScoped; import org.primefaces.event.ItemSelectEvent; import org.primefaces.model.chart.PieChartModel; import br.gov.camara.edemocracia.portlets.dashboard.VisualizacaoDados; import br.gov.camara.edemocracia.portlets.dashboard.dto.RecursoDTO; @ViewScoped @ManagedBean public class GraficoBean { @ManagedProperty(value = "#{initBean}") private InitBean initBean; private List<RecursoDTO> dados; private PieChartModel dadosGrafico; private int totalDePostagens; private int indexRecursoSelecionado; private RecursoDTO recursoSelecionado; private boolean possuiDados; private boolean exibeDetalhes; private String classeCssParaLegenda; private String classeCssGrafico; @PostConstruct() private void init() { configurarClassesCssParaGrafico(); dados = initBean.getDados(); possuiDados = dados != null && !dados.isEmpty(); if (possuiDados) { preencherDadosGrafico(); } indexRecursoSelecionado = -1; } private void configurarClassesCssParaGrafico() { if(initBean.getConfig() != null) { if (initBean.getConfig().getQtdDeRecursos() == 15) { classeCssParaLegenda = "lgLabel15"; classeCssGrafico = "painelGraficoGrd"; } else { classeCssParaLegenda = "lgLabel"; classeCssGrafico = "painelGrafico"; } } } private void preencherDadosGrafico() { dadosGrafico = new PieChartModel(); int contador = 1; for (RecursoDTO recurso : dados) { String descricaoTopico = criarDescricao(contador, recurso); int participacoes = recurso.getQuantidade(); totalDePostagens += participacoes; dadosGrafico.set(descricaoTopico, participacoes); contador++; } } private String criarDescricao(int classificacao, RecursoDTO dados) { StringBuilder builder = new StringBuilder(); builder.append("<span class='" + classeCssParaLegenda + "'>"); builder.append(classificacao + ". "); builder.append(dados.getTituloComunidade()); if (!initBean.getRecurso().isQuantitativoGeral()) { builder.append(" <br />"); builder.append(" <span class='lgTopico'>"); builder.append(dados.getTitulo()); builder.append("</span>"); } builder.append("</span>"); return builder.toString(); } public void itemSelect(ItemSelectEvent event) { recursoSelecionado = dados.get(event.getItemIndex()); indexRecursoSelecionado = event.getItemIndex(); exibeDetalhes = true; } public boolean isVisualizacaoGrafico() { return initBean.getConfig() != null && initBean.getConfig().getModoVisualizacao() == VisualizacaoDados.Grafico.getValue(); } public String getClasseCssGrafico() { return classeCssGrafico; } public PieChartModel getDadosGrafico() { return dadosGrafico; } public InitBean getInitBean() { return initBean; } public void setInitBean(InitBean initBean) { this.initBean = initBean; } public boolean isPossuiDados() { return possuiDados; } public RecursoDTO getRecursoSelecionado() { return recursoSelecionado; } public boolean isExibeDetalhes() { return exibeDetalhes; } public int getTotalDePostagens() { return totalDePostagens; } public int getIndexRecursoSelecionado() { return indexRecursoSelecionado; } }