<p:char> pie por varios atributos

Entity

public class Tienda{
 @id
 private String idtienda;
 }

 public class Ganga{
 @Id
 private String idganga;
 }


 public class Cliente{
 @Id
 private String idcliente;
 private String tipoalmacen; // indica si es tienda o bodega
 private String idalmacen;  // codigo de la tienda o bodega
}

Componentes

 <b:row>
                <!-- Row 1 -->
                <b:column span="4">
                    <!--<p:outputLabel value="#{msg['graph.cliente']}"/>-->
              <p:chart id="totalportienda" widgetVar="chartTotalporTienda"
                              type="pie" model="#{dashboardController.pieModelTotalporTienda}"  />  


                    <!--                        <h:link outcome="starter_template">
                                                <h:graphicImage library="examples" class="thumbnail" name="starter-template.jpg"/>
                                            </h:link>
                                            <h4>Starter template</h4>
                                            <p>Nothing but the basics: compiled CSS and JavaScript along with a container.</p>-->
                </b:column>
                <b:column span="4"> 
                         <p:chart id="totalporganga" widgetVar="chartTotalporGanga"
                              type="pie" model="#{dashboardController.pieModelTotalporGanga}"  /> 


<!--                    <h4>Grids</h4>
                    <p>Multiple examples of grid layouts with all four tiers, nesting, and more.</p>-->
                </b:column>

Controller

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.avbravo.store.controller;

// <editor-fold defaultstate="collapsed" desc="imports">

import com.avbravo.avbravoutils.JsfUtil;
import com.avbravo.store.util.ResourcesFiles;
import com.avbravo.storeejb.entity.Ganga;
import com.avbravo.storeejb.entity.Tienda;
import com.avbravo.storeejb.repository.ClienteRepository;
import com.avbravo.storeejb.repository.GangaRepository;
import com.avbravo.storeejb.repository.TiendaRepository;
import java.io.Serializable;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.bson.Document;
import org.primefaces.model.chart.PieChartModel;
// </editor-fold>

/**
 *
 * @author avbravo
 */
@Named
@ViewScoped
public class DashboardController implements Serializable{

    // <editor-fold defaultstate="collapsed" desc="fields">  
        private static final long serialVersionUID = 1L;
    private PieChartModel pieModelCliente;
    private PieChartModel pieModelTotalporTienda;
    private PieChartModel pieModelTotalporGanga;

    @Inject
    ClienteRepository clienteRepository;
    @Inject
    GangaRepository gangaRepository;
    @Inject
    TiendaRepository tiendaRepository;
     @Inject
    ResourcesFiles rf;

      // </editor-fold>
// <editor-fold defaultstate="collapsed" desc="getter/setter">

    public PieChartModel getPieModelCliente() {
        return pieModelCliente;
    }

    public void setPieModelCliente(PieChartModel pieModelCliente) {
        this.pieModelCliente = pieModelCliente;
    }

    public PieChartModel getPieModelTotalporTienda() {
        return pieModelTotalporTienda;
    }

    public void setPieModelTotalporTienda(PieChartModel pieModelTotalporTienda) {
        this.pieModelTotalporTienda = pieModelTotalporTienda;
    }

    public PieChartModel getPieModelTotalporGanga() {
        return pieModelTotalporGanga;
    }

    public void setPieModelTotalporGanga(PieChartModel pieModelTotalporGanga) {
        this.pieModelTotalporGanga = pieModelTotalporGanga;
    }




     // </editor-fold>
    /**
     * Creates a new instance of DashboardController
     */
    public DashboardController() {
    }

    // <editor-fold defaultstate="collapsed" desc="init">

    @PostConstruct
    public void init() {
        createPieModelCliente();
        createPieModelTotalPorTienda();
        createPieModelTotalPorGanga();

    } // </editor-fold>

      // <editor-fold defaultstate="collapsed" desc="createPieModelColegio"> 
    private void createPieModelCliente() {
        try {


        pieModelCliente = new PieChartModel();
        List<Tienda> list= tiendaRepository.findAll(new Document("idtienda",1));
        for(Tienda t:list){
            Integer n = clienteRepository.count(new Document("tienda.idtienda",t.getIdtienda()));                     
                pieModelCliente.set(t.getTienda(),n);
            }



        pieModelCliente.setTitle(rf.getMessage("graph.cliente"));
        pieModelCliente.setLegendPosition(rf.getAppMessage("info.total"));
          } catch (Exception e) {
              JsfUtil.errorMessage("createPieModelCliente() "+e.getLocalizedMessage());
        }
    }// </editor-fold>
      // <editor-fold defaultstate="collapsed" desc="createPieModelTotalPorTienda()"> 
    private void createPieModelTotalPorTienda() {
        try {


        pieModelTotalporTienda = new PieChartModel();
        List<Tienda> list= tiendaRepository.findAll(new Document("idtienda",1));
        for(Tienda t:list){
            Document doc = new Document("tipoalmacen","tienda").append("idalmacen", t.getIdtienda());
//            Integer n = clienteRepository.count(new Document("tienda.idtienda",t.getIdtienda()));                     
            Integer n = clienteRepository.count(doc);                     
                pieModelTotalporTienda.set(t.getTienda(),n);
            }



        pieModelTotalporTienda.setTitle(rf.getMessage("graph.clienteportienda"));
        pieModelTotalporTienda.setLegendPosition(rf.getAppMessage("info.total"));
          } catch (Exception e) {
              JsfUtil.errorMessage("createPieModelTotalPorTienda() "+e.getLocalizedMessage());
        }
    }// </editor-fold>
      // <editor-fold defaultstate="collapsed" desc="createPieModelTotalPorGanga()"> 
    private void createPieModelTotalPorGanga() {
        try {


        pieModelTotalporGanga = new PieChartModel();
          List<Ganga> list= gangaRepository.findAll(new Document("idtienda",1));
        for(Ganga t:list){
            Document doc = new Document("tipoalmacen","ganga").append("idalmacen", t.getIdganga());
//            Integer n = clienteRepository.count(new Document("tienda.idtienda",t.getIdtienda()));                     
            Integer n = clienteRepository.count(doc);                     
                pieModelTotalporGanga.set(t.getGanga(),n);
            }



        pieModelTotalporGanga.setTitle(rf.getMessage("graph.clienteporganga"));
        pieModelTotalporGanga.setLegendPosition(rf.getAppMessage("info.total"));
          } catch (Exception e) {
              JsfUtil.errorMessage("createPieModelTotalPorGanga() "+e.getLocalizedMessage());
        }
    }// </editor-fold>
}

Last updated