Ver Mensaje Individual
  #4 (permalink)  
Antiguo 02/01/2012, 17:53
Avatar de marlanga
marlanga
 
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Cambiar color a valores ajax

Vamos a ver si me aclaro.
¿Entonces quieres que despues de flashear a verde lo haga en rojo, azul o negro, en vez de siempre a negro, segun el caso?
Por lo que he visto, hay una función llamada function reset_ajax_color( usecolor ) que se dispara dentro de un timeout cuando se resuelve una petición AJAX. Es decir, a los X milisegundos de ponerse verde el valor, esa función hace que se ponga el color que se le pasa como argumento (y si se le pasa vacío, como es el caso, se utilizará el color por defecto, que en el caso de tu página es el negro).
La forma más fácil de hacer lo que creo que tú quieres, es modificar dos funciónes, la que he nombrado antes y la de set_ajax-_obs.
Por ejemplo, en la que actualiza los SPAN con los nuevos valores, creamos un nuevo atributo donde mantener el valor viejo:
Código javascript:
Ver original
  1. function set_ajax_obs( name, inValue ) {
  2. // store away the current value in both the doc and the span as lastobs="value"
  3. // change color if value != lastobs
  4.         var value = inValue;
  5.         if(decimalComma) {
  6.             value = inValue.replace(/(\d)\.(\d)/,"$1,$2");
  7.         }
  8.  
  9.         var element = document.getElementById(name);
  10.         if (! element ) { return; } // V1.04 -- don't set if missing the <span id=name> tag
  11.         var lastobs = element.getAttribute("lastobs");
  12.                 //CODIGO NUEVO
  13.                 element.setAttribute("oldLastobs",lastobs);
  14.                 //FIN CODIGO NUEVO
  15.         element.setAttribute("lastobs",value);
  16.         if (value != unescape(lastobs)) {
  17.           element.style.color=flashcolor;
  18.           if ( doTooltip ) { element.setAttribute("title",'AJAX tag '+name); }
  19.           element.innerHTML =  value; // moved inside to fix flashing issue (Jim at jcweather.us)
  20.         }
  21. }

Y en la otra, en vez de simplemente quitar el color verde, lo que hacemos es poner un rojo, un negro o un azul (siempre que el argumento usecolor nos llegue sin valor):
Código javascript:
Ver original
  1. function reset_ajax_color( usecolor ) {
  2. // reset all the <span class="ajax"...> styles to have no color override
  3.       var elements = get_ajax_tags();
  4.       var numelements = elements.length;
  5.       for (var index=0;index!=numelements;index++) {
  6.          var element = elements[index];
  7.  
  8.         //NUEVO CODIGO
  9.         if (usecolor =="")
  10.         {
  11.             if (element.getAttribute("lastobs")>element.getAttribute("oldLastobs"))
  12.             {
  13.                 element.style.color="red";
  14.             }
  15.             else if(element.getAttribute("lastobs")<element.getAttribute("oldLastobs"))
  16.             {
  17.                 element.style.color="blue";
  18.             }
  19.         }
  20.         else
  21.         }
  22.             element.style.color=usecolor;
  23.         }
  24.         //FIN NUEVO CODIGO
  25.       }
  26. }
Lo malo es que la hora, por ejemplo, creo que la pintará roja; y que las comparaciones quizás no funcionen bien, si los valores inscritos en el atributo "lastobs" no son alfabéticamente u numéricamente ordenables. Aunque en el caso de la hora (u otros SPAN que no te interese pintar de azul o rojo) bastaría con mirarles tambíen su ID y comparalos con una lista de ID's "intocables". Para lo segundo, la solución es mucho más difícil, creo.
Con que murciano, eh? Un saludo paisano.