Mudar cor fundo aplicação grid

Eu fui responder, o tópico sumiu.

O que ocorreu. Eu tenho uma versão em produção gerado pelo SC 7.1 no qual o código funcionada e pintava a cor de fundo da linha de acordo com o status da OS.

Agora eu precisei fazer uma manutenção com a versão SC8.1 e está dando erro:


Atenção
Use of undefined constant iw - assumed 'iw'

Script: /home/mgsistem/public_html/scriptcase/app/motoexpressweb218/grid_ordem_servico/grid_ordem_servico_grid.class.php (1835)
Atenção
Undefined index: realca_vermelho

Script: /home/mgsistem/public_html/scriptcase/app/motoexpressweb218/grid_ordem_servico/grid_ordem_servico_grid.class.php (1835)

Segue o código:

onScriptInit - eu limito alguns registros de acordo com o status da ordem de serviço:

//sc_select_where(add) = "WHERE situacao in ('P','E')";
	
if (empty({sc_where_current})){
    sc_select_where(add) = " where situacao <> 'X' ";
} else {
    sc_select_where(add) = " AND situacao <> 'X' ";
}	

No onRecord - de acordo com o status eu defino o array de cores


// Define as cores de acordo com a situacao da OS

sc_warning = 'off';

sc_field_color('id_ordem','#FFFFFF');
sc_field_color('data_cadastro','#FFFFFF');
sc_field_color('descricao_tipo_transporte','#FFFFFF');
sc_field_color('id_cliente','#FFFFFF');
sc_field_color('nome_cliente','#FFFFFF');
sc_field_color('nome_solicitante','#FFFFFF');
sc_field_color('local1','#FFFFFF');
sc_field_color('valor_servico','#FFFFFF');
sc_field_color('nome_funcionario','#FFFFFF');
sc_field_color('descricao_situacao','#FFFFFF');
sc_field_color('id_recebimento','#FFFFFF');
sc_field_color('nome_funcionario','#FFFFFF');
sc_field_color('itinerario','#FFFFFF');
sc_field_color('previsao_entrega','#FFFFFF');

// Pendente
[iw]["i"]=$_i=[iw]["i"]+1;
if ({situacao}=='P') {  // realçar linhas cuja situacao == 'C'
   [iw]["realca_vermelho"][$_i]=[iw]["i"];
}

// Cancelado ou cancelado pelo cliente
if ({situacao}=='X' || {situacao}=='T') {
   [iw]["realca_branco"][$_i]=[iw]["i"];
   sc_field_color('id_ordem','#000000');
   sc_field_color('data_cadastro','#000000');
   sc_field_color('descricao_tipo_transporte','#000000');
   sc_field_color('id_cliente','#000000');
   sc_field_color('nome_cliente','#000000');
   sc_field_color('nome_solicitante','#000000');
   sc_field_color('local1','#000000');
   sc_field_color('valor_servico','#000000');
   sc_field_color('nome_funcionario','#000000');
   sc_field_color('descricao_situacao','#000000');
   sc_field_color('id_recebimento','#000000');
   sc_field_color('nome_funcionario','#000000');
   sc_field_color('itinerario','#000000');
   sc_field_color('previsao_entrega','#000000');
}

// Entregue, em transito ou devolvido
if ({situacao}=='R' || {situacao}=='E' || {situacao}=='D') {
   [iw]["realca_amarelo"][$_i]=[iw]["i"];
   sc_field_color('id_ordem','#000000');
   sc_field_color('data_cadastro','#000000');
   sc_field_color('descricao_tipo_transporte','#000000');
   sc_field_color('id_cliente','#000000');
   sc_field_color('nome_cliente','#000000');
   sc_field_color('nome_solicitante','#000000');
   sc_field_color('local1','#000000');
   sc_field_color('valor_servico','#000000');
   sc_field_color('nome_funcionario','#000000');
   sc_field_color('descricao_situacao','#000000');
   sc_field_color('id_recebimento','#000000');
   sc_field_color('nome_funcionario','#000000');
   sc_field_color('itinerario','#000000');
   sc_field_color('previsao_entrega','#000000');
}

// Concluido ou fechado
if ({situacao}=='C' || {situacao}=='F'){
   [iw]["realca_verde"][$_i]=[iw]["i"];
}


$sql = "select * from ocorrencia where id_ordem = " . {id_ordem};
sc_lookup(rs_ocor, $sql);
if (isset({rs_ocor[0][0]})) {
	{ocorrencias} = "<img src='../_lib/img/sys__NM__alerta4.gif' />";
	
} else {
	{ocorrencias} = "";
}

if ({situacao} == 'P' || {situacao} == 'E' || {situacao} == 'R' || {situacao} == 'D' || {situacao} == 'T'){
	{fechar_ordem_servico} = "<img src='../_lib/img/sys__NM__icone-cifrao.png' height=15 width=15 />";
} else {
	{fechar_ordem_servico} = "";
}

$sql = " select * from protocolo where id_ordem = " . {id_ordem};
sc_lookup(pro,$sql);
if (isset({pro[0][0]})) {
	{ver_protocolo} = "<img src='../_lib/img/sys__NM__m1.gif' height=15 width=15 />";
} else {
	{ver_protocolo} = "";
}
	
// 
if ([ACESSO] >= 2) {
	{excluir_os} = "<img src='../_lib/img/delete_16.png' height=15 width=15 />";
} else {
	{excluir_os} = "";
}


// Verifica se houve uma avaliação
$sql = " select id_ordem from ordem_servico_avaliacao where id_ordem='{id_ordem}'";
sc_lookup(ava,$sql);
if (isset({ava[0][0]})) {
	{avaliar_os} = "<img src='../_lib/file/img/lock.png' height='15' width='15' alt='Ordem de Serviço já Avaliada' />";
} else {
	{avaliar_os} = "<img src='../_lib/file/img/star_full.png' height='15' width='15' alt='Avaliar esta Ordem de Serviço'/>";
}

No onHeader

[iw]["i"]=0;
[iw]["realca_vermelho"]=array();
[iw]["realca_azul"]=array();
[iw]["realca_amarelo"]=array();
[iw]["realca_branco"]=array();
[iw]["realca_verde"]=array();

No onFooter

$_js="<script >";
foreach ([iw]["realca_vermelho"] as &$_line) {
    $_js.="$('#id_sc_field_id_ordem_".$_line."').parent().parent().css( \"background\", \"red\" );";
}

foreach ([iw]["realca_azul"] as &$_line) {
   $_js.="$('#id_sc_field_id_ordem_".$_line."').parent().parent().css( \"background\", \"blue\" );";
}

foreach ([iw]["realca_amarelo"] as &$_line) {
   $_js.="$('#id_sc_field_id_ordem_".$_line."').parent().parent().css( \"background\", \"yellow\" );";
}

foreach ([iw]["realca_branco"] as &$_line) {
   $_js.="$('#id_sc_field_id_ordem_".$_line."').parent().parent().css( \"background\", \"white\" );";
}

foreach ([iw]["realca_verde"] as &$_line) {
   $_js.="$('#id_sc_field_id_ordem_".$_line."').parent().parent().css( \"background\", \"green\" );";
}

$_js.="</script>";
echo $_js;

teste isso:

onrecord:

IF ({resposta}):
echo "<style>
    #SC_ancor$sc_seq_register          {background-color:#cbd0f6 !important} 
    #SC_ancor$sc_seq_register:hover {background-color:#b1b9f2 !important}
</style>";
endif;

Inclui o hover para não perder a ação do mouse sobre a linha.

Essa sugestão é muito mais simples que a antiga, não precisa de jquery no footer.

Agora fica bem mais fácil porque a linha (TR) possui atributo id.

Na Prática:

http://iw.servehttp.com:81/sc81/app/forum_sc/grid_onclick/

TAGS: COLORIR , LINHAS, GRID, BACKGROUND

Haroldo,

Está dando erro no link: Parse error: syntax error, unexpected ‘;’ in /var/www/html/sc81/app/forum_sc/grid_onclick/grid_onclick_grid.class.php on line 2114

É que eu descobri que ao navegar só esta funcionando para a primeira página, estou verificando.

O problema é que o sc_seq_register na segunda pagina continua incrementando o contador, mas o id da linha (TR) se reinicia em 1 na primeira linha de cada pagina.

CORREÇÃO:

Teremos que usar uma global.
Aplicação/Variáveis Global:

iw_seq (Opcional de saída) Sessão: Não Post:Nâo Get:Nâo

onNavigate e onScriptInit:

[iw_seq]=0;

onrecord:

[iw_seq]++;
IF ({resposta}):
echo "<style>
    #SC_ancor[iw_seq]          {background-color:#cbd0f6 !important} 
    #SC_ancor[iw_seq]:hover {background-color:#b1b9f2 !important}
</style>";
endif;

Na Prática:

http://iw.servehttp.com:81/sc81/app/forum_sc/grid_onclick/

** Apesar da dificuldade encontrada a solução ainda continua simples **

TAGS: Colorir, Linha, Grid, Fundo, Background

Haroldo
Funcionou apenas quando a aplicação é iniciada.

Depois que navego, tanto na página 2 quanto na primeira página, as cores não são mais aplicadas.

Eu implementei [iw_seq] e inicie em onNavigate e onScriptInit.

Um detalhe: Quando ativo “Exibir Output Ajax” além de pintar as linhas ele exibe um janela de output fazia na pagina 2.

O Exemplo http://iw.servehttp.com:81/sc81/app/forum_sc/grid_onclick/

esta funcionando pelo que testei.

Quanto a janela output, é porque há espaços e enter no código do echo… deve-se eliminar ou escapar o PHP.

Pelo que me consta o código está funcionando.

Oi Haroldo

Tem razão. Vou rever novamente meu código.

Obrigado!

De um retorno mesmo obtendo sucesso.

DEU CERTO GALERA?

O MEU AQUI FUNCIONOU MAS COM ESTE PROBLEMA DO OUTPUT E NAVEGO NAS OUTRAS PAGINAS DA ERRO.

Apresente seu código aqui.

Estou com o mesmo problema, alguém resolveu?