Skip to main content

< p:chart > por varios atributos

<p:chart> pie por varios atributos
Vamos a crear un gráfico por varios atributos utilizando el componente de primefaces <p:chart>, contamos con una base de datos NoSQL MongoDB y utilizamos ejbmoordb.



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; 
 private String idalmacen;  

}




Pagina .xhtml


<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>


</b:column>




Controller

i

mport 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(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>

}

Comments

Popular posts from this blog

Primefaces v13

 La versión nueva de primefaces v13.0 elimina el componente <p:repeat>  Consulte los cambios en  https://github.com/primefaces/primefaces/releases/tag/13.0.0 por lo tanto si necesita una solución similar considere utilizar  <p:carousel>  o  <ui:repeat> En la versión 13 genera una excepción

Jmoordb-Core @UpdateMany y @DeleteMany

 Jmoordb-Core @UpdateMany y @DeleteMany Estoy trabajando en una versión nueva de jmoordb-core en la cual se estará implementando nuevas funcionalidades como lo son @DeleteMany y    @UpdateMany con la finalidad de hacer operaciones sobre múltiples documentos de la colección.