Change the line color of a datatable

Asked

Viewed 1,546 times

1

I am using JAVA,JPA,Primefaces, I have a datatable that summarizes a stock.I want to color the rows of the table if the check value to the minimum of each product, I do not know how to proceed, someone can help me?

MY VIEW

<h:panelGrid style="margin-top: 10px">
    <p:dataTable id="tabelaEstoque" value="#{estoqueMB.listaEstoque}"
        var="est" paginator="true" rows="7" 
        rendered="#{not empty estoqueMB.listaEstoque}"
        emptyMessage="Nenhum registro encontrado..."
        rowsPerPageTemplate="5,10,15">
        <p:column headerText="Produto" sortBy="#{est.produto}" >
            <h:outputText value="#{est.produto}" style="width:100%" />
        </p:column>
        <p:column headerText="Quantidade" sortBy="#{est.quantidade}">
            <p:cellEditor>
                <f:facet name="output">
                    <h:outputText value="#{est.quantidade}" />
                </f:facet>
                <f:facet name="input">
                    <p:inputText value="#{est.quantidade}" style="width:100%"
                        label="Year" />
                </f:facet>
            </p:cellEditor>
        </p:column>
        <p:column headerText="Ponto Atendimento"
            sortBy="#{est.pontoAtendimento}">
            <h:outputText value="#{est.pontoAtendimento}" />
        </p:column>
        <p:column headerText="Data Cadastro" sortBy="#{est.data}">
            <h:outputText value="#{est.data}">
                <f:convertDateTime pattern="dd/MM/yyyy HH:mm"
                    timeZone="GMT-03:00" />
            </h:outputText>
        </p:column>
        <p:column headerText="Ações">
            <p:commandButton value="Editar"
                action="#{estoqueMB.editar(est)}" update="@form"
                icon="ui-icon-pencil" />
            <p:commandButton value="Remover" icon="ui-icon-trash"
                action="#{estoqueMB.remover(est)}" update="@form" />
        </p:column>
    </p:dataTable>
</h:panelGrid>

MY DAO

package br.com.sicoob.DAO;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import br.com.sicoob.Service.EstoqueService;
import br.com.sicoob.entidades.Estoque;

@Stateless
public class EstoqueDAO implements Serializable, EstoqueService {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    @PersistenceContext
    private EntityManager em;

    /**
     * 
     * @param u
     */
    public void salvar(Estoque e) {
        if (e.getId() == 0) {
            em.persist(e);
        } else {
            em.merge(e);
        }
    }

    /**
     * 
     * @param u
     */
    public void remover(Estoque e) {
        e = em.merge(e);
        em.remove(e);
    }

    /**
     * 
     * @return
     */
    @SuppressWarnings("unchecked")
    public List<Estoque> listarTodos() {
        List<Estoque> estoque = new ArrayList<Estoque>();
        Query q = em.createQuery("select obj from Estoque obj");
        estoque = q.getResultList();
        return estoque;
    }


    /**
     * 
     * @param id
     * @return
     */
    public Estoque buscarPorId(Long id) {
        return em.find(Estoque.class, id);
    }

    /**
     * 
     * @param u
     * @return
     */
    public Estoque carregarEntidade(Estoque e) {
        return em.merge(e);
    }

    @Override
    public void salvarEstoque(Estoque estoque) {
        if (estoque.getProduto() == null) {
            em.persist(estoque);
        } else {
            em.merge(estoque);
        }
    }

    @Override
    public void salvarCadastro(Estoque estoque) {


    }

    @Override
    public List<Estoque> listarDescricao() {
        // TODO Auto-generated method stub
        return null;
    }
}

MY MB

package br.com.sicoob.ManagedBeans;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;

import org.primefaces.context.RequestContext;
import org.primefaces.model.UploadedFile;

import br.com.sicoob.Service.EstoqueService;
import br.com.sicoob.entidades.Estoque;

@ManagedBean(name = "estoqueMB")
@ViewScoped
public class EstoqueMB implements Serializable {

    /**
     * CLASSE DE CONTROLE DE ESTOQUE; Criada por: Pedro Henrique
     */
    private static final long serialVersionUID = 1L;

    @Inject
    private EstoqueService estoqueService;

    private Estoque estoque = new Estoque();

    private List<Estoque> listaEstoque = new ArrayList<Estoque>();
    private boolean edicao = true;

    private int contBobinas, contBomAr, contBoracha, contCaixaPag, contCaixaReceb, contCaneta, contCanetaPon,
            contCarbono, contCera, contClipsG, contClipsM, contClips04, contCola, contColher, contCopo, contElast,
            contEnvCarta, contEnvePardo, contEnvPlast, contExtrator, contFitaAdes, contFitaERC, contGrampeador,
            contGrampo, contLacre, contLapis, contMarTexto, contMataIns, contMolhaDedo, contMovNum, contPapelA4,
            contPastaPapel, contRegua20, contRegua30, contTesoura, contTintaCarimbo;

    @PostConstruct
    public void init() {
        contBobinas = 0;
        contBomAr = 0;
        contBoracha = 0;
        contCaixaPag = 0;
        contCaixaReceb = 0;
        contCaneta = 0;
        contCanetaPon = 0;
        contCarbono = 0;
        contCera = 0;
        contClipsG = 0;
        contClipsM = 0;
        contClips04 = 0;
        contCola = 0;
        contColher = 0;
        contCopo = 0;
        contElast = 0;
        contEnvCarta = 0;
        contEnvePardo = 0;
        contEnvPlast = 0;
        contExtrator = 0;
        contFitaAdes = 0;
        contFitaERC = 0;
        contGrampeador = 0;
        contGrampo = 0;
        contLacre = 0;
        contLapis = 0;
        contMarTexto = 0;
        contMataIns = 0;
        contMolhaDedo = 0;
        contMovNum = 0;
        contPapelA4 = 0;
        contPastaPapel = 0;
        contRegua20 = 0;
        contRegua30 = 0;
        contTesoura = 0;
        contTintaCarimbo = 0;
        listaEstoque = estoqueService.listarTodos();
        contarRegistros();
    }

    /**
     * Método responsavel por adicionar cadastro
     */

    public void salvar() {

        if (validarEstoque(estoque) == false) {
            return;
        }
        estoque.setData(new Date());
        estoque.setAutor(System.getProperty("user.name"));
        estoqueService.salvarEstoque(estoque);
        listaEstoque = estoqueService.listarTodos();
        estoque = new Estoque();
        FacesContext.getCurrentInstance().addMessage(null,
                new FacesMessage(FacesMessage.SEVERITY_INFO, "", "Cadastro Realizado com SUCESSO!"));
    }

    private UploadedFile file;

    public UploadedFile getFile() {
        return file;
    }

    public void setFile(UploadedFile file) {
        this.file = file;
    }

    public void upload() {
        if (file != null) {
            FacesMessage message = new FacesMessage("Succesful", file.getFileName() + " is uploaded.");
            FacesContext.getCurrentInstance().addMessage(null, message);
        }
    }

    /**
     * 
     * @return
     */
    public String redirecionar() {
        return "perfil";
    }

    /**
     * 
     * @param cadastro
     * @return
     */
    private boolean validarEstoque(Estoque estoque) {

        if (estoque.getProduto() == null || "".equals(estoque.getProduto())) {
            FacesContext.getCurrentInstance().addMessage(null,
                    new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "Favor preencher o campo: PRODUTO"));
            return false;
        }
        if (estoque.getQuantidade() == 0 || "".equals(estoque.getQuantidade())) {
            FacesContext.getCurrentInstance().addMessage(null,
                    new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "Favor preencher o campo: QUANTIDADE"));
            return false;
        }
        if (estoque.getPontoAtendimento() == null || "".equals(estoque.getPontoAtendimento())) {
            FacesContext.getCurrentInstance().addMessage(null,
                    new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "Favor preencher o campo: PA"));
            return false;
        }
        return true;
    }


    public void contar(){

    }

    public void contarRegistros() {
        for (int x = 0; x < listaEstoque.size(); x++) {
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Bobinas 2 vias de caixa-Caixa ( 30uni)")) {
                contBobinas = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Bom ar")) {
                contBomAr = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Borracha")) {
                contBoracha = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Caixa Pagamento-Bloco")) {
                contCaixaPag = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Caixa Recebimento-Bloco")) {
                contCaixaReceb = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Caneta-Caixa (50 uni)")) {
                contCaneta = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Caneta ponta fina")) {
                contCanetaPon = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Carbono-Pacote (5 uni)")) {
                contCarbono = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Cera para limpeza")) {
                contCera = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Clips 4/0 -Caixa")) {
                contClips04 = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Clips  Grande")) {
                contClipsG = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Clips Médio")) {
                contClipsM = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Cola Bastão")) {
                contCola = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Colher Descartavel-Pacote (25uni)")) {
                contColher = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Copo Descartável-Pacote (100uni)")) {
                contCopo = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Elástico Dinheiro-Pacote 500g")) {
                contElast = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Envelope Carta - Pacote (100 uni)")) {
                contEnvCarta = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Envelope Pardo A4-Caixa (250 uni)")) {
                contEnvePardo = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Envelpe Plastico  4 furos-Pacote ( 100 uni)")) {
                contEnvPlast = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Extrator de Grampo")) {
                contExtrator = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Fita adesiva (Larga)")) {
                contFitaAdes = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Fita ERC03-Caixa (10 uni)")) {
                contFitaERC = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Grampeador")) {
                contGrampeador = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Grampo-Caixa")) {
                contGrampo += listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Lacre Malote -Pacote (100 uni)")) {
                contLacre = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Lápis-Caixa( 12 uni)")) {
                contLapis = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Marca texto")) {
                contMarTexto = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Mata Insetos")) {
                contMataIns = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Molha Dedo")) {
                contMolhaDedo = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Movimento Numerario -Bloco")) {
                contMovNum = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Papel A4 -Caixa (10 pct)")) {
                contPapelA4 = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Pasta Papel A4")) {
                contPastaPapel = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Régua 20 cm")) {
                contRegua20 = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Régua 30 cm")) {
                contRegua30 = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Tesoura")) {
                contTesoura = listaEstoque.get(x).getQuantidade();
            }
            if (listaEstoque.get(x).getProduto().equalsIgnoreCase("Tinta Carimbo")) {
                contTintaCarimbo = listaEstoque.get(x).getQuantidade();
            }
        }
    }

    /**
     * Método responsavel por adicionar cadastro
     */
    public void atualizar() {
        estoqueService.salvarEstoque(estoque);
        estoque = new Estoque();
        edicao = false;
    }

    /**
     * 
     * @param u
     */
    public void remover(Estoque c) {
        estoqueService.remover(c);
        listaEstoque = estoqueService.listarTodos();
        c = new Estoque();
    }

    public void reset() {
        RequestContext.getCurrentInstance().reset("form:panel");
    }

    /**
     * 
     * @param u
     */
    public void editar(Estoque e) {
        this.estoque = e;
        edicao = true;
    }

    public List<Estoque> getListaEstoque() {
        return listaEstoque;
    }

    public void setListaEstoque(List<Estoque> listaEstoque) {
        this.listaEstoque = listaEstoque;
    }

    public Estoque getEstoque() {
        return estoque;
    }

    public void setEstoque(Estoque estoque) {
        this.estoque = estoque;
    }

    public boolean isEdicao() {
        return edicao;
    }

    public void setEdicao(boolean edicao) {
        this.edicao = edicao;
    }

    public int getContBobinas() {
        return contBobinas;
    }

    public void setContBobinas(int contBobinas) {
        this.contBobinas = contBobinas;
    }

    public int getContBomAr() {
        return contBomAr;
    }

    public void setContBomAr(int contBomAr) {
        this.contBomAr = contBomAr;
    }

    public int getContBoracha() {
        return contBoracha;
    }

    public void setContBoracha(int contBoracha) {
        this.contBoracha = contBoracha;
    }

    public int getContCaixaPag() {
        return contCaixaPag;
    }

    public void setContCaixaPag(int contCaixaPag) {
        this.contCaixaPag = contCaixaPag;
    }

    public int getContCaixaReceb() {
        return contCaixaReceb;
    }

    public void setContCaixaReceb(int contCaixaReceb) {
        this.contCaixaReceb = contCaixaReceb;
    }

    public int getContCaneta() {
        return contCaneta;
    }

    public void setContCaneta(int contCaneta) {
        this.contCaneta = contCaneta;
    }

    public int getContCanetaPon() {
        return contCanetaPon;
    }

    public void setContCanetaPon(int contCanetaPon) {
        this.contCanetaPon = contCanetaPon;
    }

    public int getContCarbono() {
        return contCarbono;
    }

    public void setContCarbono(int contCarbono) {
        this.contCarbono = contCarbono;
    }

    public int getContCera() {
        return contCera;
    }

    public void setContCera(int contCera) {
        this.contCera = contCera;
    }

    public int getContClipsG() {
        return contClipsG;
    }

    public void setContClipsG(int contClipsG) {
        this.contClipsG = contClipsG;
    }

    public int getContClipsM() {
        return contClipsM;
    }

    public void setContClipsM(int contClipsM) {
        this.contClipsM = contClipsM;
    }

    public int getContClips04() {
        return contClips04;
    }

    public void setContClips04(int contClips04) {
        this.contClips04 = contClips04;
    }

    public int getContCola() {
        return contCola;
    }

    public void setContCola(int contCola) {
        this.contCola = contCola;
    }

    public int getContColher() {
        return contColher;
    }

    public void setContColher(int contColher) {
        this.contColher = contColher;
    }

    public int getContCopo() {
        return contCopo;
    }

    public void setContCopo(int contCopo) {
        this.contCopo = contCopo;
    }

    public int getContElast() {
        return contElast;
    }

    public void setContElast(int contElast) {
        this.contElast = contElast;
    }

    public int getContEnvCarta() {
        return contEnvCarta;
    }

    public void setContEnvCarta(int contEnvCarta) {
        this.contEnvCarta = contEnvCarta;
    }

    public int getContEnvePardo() {
        return contEnvePardo;
    }

    public void setContEnvePardo(int contEnvePardo) {
        this.contEnvePardo = contEnvePardo;
    }

    public int getContEnvPlast() {
        return contEnvPlast;
    }

    public void setContEnvPlast(int contEnvPlast) {
        this.contEnvPlast = contEnvPlast;
    }

    public int getContExtrator() {
        return contExtrator;
    }

    public void setContExtrator(int contExtrator) {
        this.contExtrator = contExtrator;
    }

    public int getContFitaAdes() {
        return contFitaAdes;
    }

    public void setContFitaAdes(int contFitaAdes) {
        this.contFitaAdes = contFitaAdes;
    }

    public int getContFitaERC() {
        return contFitaERC;
    }

    public void setContFitaERC(int contFitaERC) {
        this.contFitaERC = contFitaERC;
    }

    public int getContGrampeador() {
        return contGrampeador;
    }

    public void setContGrampeador(int contGrampeador) {
        this.contGrampeador = contGrampeador;
    }

    public int getContGrampo() {
        return contGrampo;
    }

    public void setContGrampo(int contGrampo) {
        this.contGrampo = contGrampo;
    }

    public int getContLacre() {
        return contLacre;
    }

    public void setContLacre(int contLacre) {
        this.contLacre = contLacre;
    }

    public int getContLapis() {
        return contLapis;
    }

    public void setContLapis(int contLapis) {
        this.contLapis = contLapis;
    }

    public int getContMarTexto() {
        return contMarTexto;
    }

    public void setContMarTexto(int contMarTexto) {
        this.contMarTexto = contMarTexto;
    }

    public int getContMataIns() {
        return contMataIns;
    }

    public void setContMataIns(int contMataIns) {
        this.contMataIns = contMataIns;
    }

    public int getContMolhaDedo() {
        return contMolhaDedo;
    }

    public void setContMolhaDedo(int contMolhaDedo) {
        this.contMolhaDedo = contMolhaDedo;
    }

    public int getContMovNum() {
        return contMovNum;
    }

    public void setContMovNum(int contMovNum) {
        this.contMovNum = contMovNum;
    }

    public int getContPapelA4() {
        return contPapelA4;
    }

    public void setContPapelA4(int contPapelA4) {
        this.contPapelA4 = contPapelA4;
    }

    public int getContPastaPapel() {
        return contPastaPapel;
    }

    public void setContPastaPapel(int contPastaPapel) {
        this.contPastaPapel = contPastaPapel;
    }

    public int getContRegua20() {
        return contRegua20;
    }

    public void setContRegua20(int contRegua20) {
        this.contRegua20 = contRegua20;
    }

    public int getContRegua30() {
        return contRegua30;
    }

    public void setContRegua30(int contRegua30) {
        this.contRegua30 = contRegua30;
    }

    public int getContTesoura() {
        return contTesoura;
    }

    public void setContTesoura(int contTesoura) {
        this.contTesoura = contTesoura;
    }

    public int getContTintaCarimbo() {
        return contTintaCarimbo;
    }

    public void setContTintaCarimbo(int contTintaCarimbo) {
        this.contTintaCarimbo = contTintaCarimbo;
    }

}
  • Which lines do you want to color ? And the colors are patterns or will vary ?

  • Each line there is a quantity, I want to color when this quantity value reaches a minimum value(the minimum value of each line may vary), the color does not matter much.. rsrs can be the same color for all lines

1 answer

1

You need to define what would be the minimum (number of units)?

If you already have this information coming from the bank just use the object itself that references the row in the table, otherwise you need to define what is the minimum for a given product

A p:datatable has a property called rowStyleClass where you can define a css.

I think 2 ways to solve the problem.

The first and easiest would be to create a JS function that would read the table, check the quantities and as the minimum quantity setting changes the line css.

In the second option would treat this in the backend by creating a method in manageBean where you can send the product id and check, gets bad because for each line that is rendered it goes on the server check, when with JS you would do everything at once, ex:

 <p:dataTable id="tabelaEstoque" value="#{estoqueMB.listaEstoque}"
                            var="est" paginator="true" rows="7" 
                            rendered="#{not empty estoqueMB.listaEstoque}"
                            emptyMessage="Nenhum registro encontrado..."
                            rowsPerPageTemplate="5,10,15"
                            rowStyleClass="#{(seuBean.checkQuantity(ext.produto.id) eq 7 ) ? 'red': null 
                                                  or (seuBean.checkQuantity(ext.produto.id) eq 15 ) ? 'orange' : null }">   

As I mentioned above, if by chance you already have in your bean controller the value of the minimum quintity, it could be:

est.quantidade > est.quantidadeMin

The checkQuantity method could check the quantity, ex:

public int checkQuantity(Long idProduto) {
    // retorna a quantidade
}

More or less this idea :) I did it all in my head and wrote as I imagined, so there may be syntax errors

For CSS, you could create a file.css add in /src/main/webapp/Resources/css

.orange {
    background: yellow  !important ;
}

.red {
    background: red  !important ;
}
  • I understood your reasoning, my doubt is the following: I have the amount coming from the bank so I can make the condition for each product,how do I put the conditions in the CSS? how I change this CSS understands?

  • yes, I added the example there.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.