<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;
}
<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>
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>
}
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.
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
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(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