Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

AnibalJR

Data atual na função rowstyler

Recommended Posts

estou sofrendo com algo muito simples, acredito que alguem possa me ajudar, estou tentando colorir uma linha do datagrid quando a data de vencimento for menor que a data atual, mas nao sei como trazer a data atual para essa condição do rowstyler.

Abaixo segue o codigo da table e o campo que deveria trazer a data atual em vermelho.

 

 

 

 

 

<table id="dg" title="Controle de Propostas" class="easyui-datagrid" style="width:1000px; height:300px; font-size: 10px;"

data-options="
singleSelect: true,
url: 'pegar_controlchurn.php',
method: 'get',
rownumbers: 'true',
fitColumns: 'true',
toolbar: '#toolbar',
pagination: 'true',
rowStyler: function(index,row){
if (row.status_install == 'DESABILITADO'){
return 'background-color:#A4D3EE;color:#00688B;'}
else if (row.status_install == 'INSTALADO' && row.fatura1_pg == '' && row.dt_vencimento1 < '2015-05-19'){return 'background-color:#F90808;color:#fff;'}
else if (row.status_install == 'DESCONECTADO'){return 'background-color:#C1CDC1;color:#00688B;'}
}
">

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que vc está comparando uma string.

Para o operador de < ou > funcionar, vc precisa comparar números.

 

Transforme essa data em um inteiro que faça sentido e depois compare. Vc pode transforma-la em um unix timestamp por exemplo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

dessa forma ai em cima funciona, mas eu preciso de fazer ele buscar a data de forma automatica, sem eu precisar digitar, se eu substituir o campo < '2015-05-19' por < 'date()', ele não lê correto.... nesse caso eu teria de salvar em uma variavel e colocar a variavel no lugar do 2015-05-19? tem como me citar um exemplo?.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, não é isso.

 

Converta o '2015-05-19' e row.dt_vencimento1 para timestamps. Ai vai funcionar a ordenação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi, na verdade o campo que eu registro a data de vencimento é tipo 'date' e registra um valor inteiro, igual o exemplo que usei = '2015-05-19' não tem fração de horas e segundo, a data atual eu até tentei trabalhar ela usando php fazendo ela ficar dentro de uma variavel $data_atual, mas quando coloquei $data_atual para ordenar ele não deu erro, mas não tratou certo. sou iniciante em web e ainda não tratei nada em timestamp... tem como me dar um exemplo William Bruno?

Compartilhar este post


Link para o post
Compartilhar em outros sites


function dataVencida(str){

if (/^\d{2}\/\d{2}\/\d{4}$/.test(str)){

var venci = new Date(str.split('/').reverse().join('/')).getTime();

var atual = new Date().getTime();

if (venci < atual) return false;

return true;

} alert('Error: data não corresponde ao formato DD/MM/YYYY');

}


...

 

else if (!row.fatura1_pg && !dataVencida(row.dt_vencimento1) && row.status_install=='INSTALADO'){

 

..

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi, usei a função, mais da erro: data não corresponde ao formato DD/MM/YYYY, quando a função executa o campo dt_vencimento1, acredito que deve ser porque ele é yyyy-mm-dd no mysql.

e no else if não entendi a formatação, não deveria usar < ou > nele para trazer a cor ao inves de na função? porque na verdade eu preciso descrever assim:

 

dt_vencimento1 < data atual = cor vermelha

Compartilhar este post


Link para o post
Compartilhar em outros sites

a comparação já é feita na função dataVencida(str)

 

altere a função para:

function dataVencida(str){
 if (/^\d{4}-\d{2}-\d{2}$/.test(str)){
   var venci = new Date(str.replace(/-/g,'/')).getTime();
   var atual = new Date().getTime();
   if (venci < atual) return false;
   return true;
 } alert('Error: data não corresponde ao formato YYYY-MM-DD');
}

e teste novamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.