Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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;'}
}
">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?.
Não, não é isso.
Converta o '2015-05-19' e row.dt_vencimento1 para timestamps. Ai vai funcionar a ordenação.
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?
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'){
..
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
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
funcionou 100%, obrigado Hugo Sóstenes... :clap: :clap: :clap:
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.