Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Valores null

Estas en el tema de Valores null en el foro de Javascript en Foros del Web. Buenas, tengo una variable del tipo: presupuesto = {"rangos":[(null),(1,1000000),(1000001,5000000)], "colores":["#00FFFF","#FECDF9","#FD8AF1"],"unitades":"(Hab/Km2)", "170010":"442228.69","170031":"141322.89","null":" 175567.98", etc.etc. En el caso de los valores numéricos, los colores se asignan correctamente, ...
  #1 (permalink)  
Antiguo 15/06/2011, 08:07
 
Fecha de Ingreso: octubre-2010
Ubicación: Costa Brava
Mensajes: 58
Antigüedad: 13 años, 6 meses
Puntos: 2
Exclamación Valores null

Buenas, tengo una variable del tipo:

presupuesto = {"rangos":[(null),(1,1000000),(1000001,5000000)], "colores":["#00FFFF","#FECDF9","#FD8AF1"],"unitades":"(Hab/Km2)", "170010":"442228.69","170031":"141322.89","null":" 175567.98", etc.etc.

En el caso de los valores numéricos, los colores se asignan correctamente, pero en el caso de los registros que contienen el valor nulo no le asigna el color. Sospecho profundamente que el error está en el"(null)" cuando defino los rangos, pero he probado de distintas formas y no da resultado.

Alguien podría darme alguna idea de cómo distinguir esos valores nulos en el rango?

Muchas gracias de antemano. Es un gran foro, de gran apoyo para los que somos novatos ;p
  #2 (permalink)  
Antiguo 15/06/2011, 08:09
 
Fecha de Ingreso: octubre-2010
Ubicación: Costa Brava
Mensajes: 58
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: Valores null

hay un error en el ejemplo, lo corrijo:

presupuesto = {"rangos":[(null),(1,1000000),(1000001,5000000)], "colores":["#00FFFF","#FECDF9","#FD8AF1"],"unitades":"(Hab/Km2)", "170010":"442228.69","170031":"null","171812": " 175567.98", etc.etc.
  #3 (permalink)  
Antiguo 15/06/2011, 08:16
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Valores null

buenas,
no se si sea yo que no lei bien o si es que no te has explicado bien. no encuentro la relacion de los valores numericos con los colores. adicionalmente, deberias explicar como estas usando esos datos porque probablemente ahi sea donde tienes problema. otro detalle, en la definicion de los rangos tienes un error con los numeros en parentesis. cuando pones una serie de sentencia entre parentesis, todas se evaluan pero la ultima es la que devuelve el parentesis. es decir, el array termina siendo [null, 1000000, 5000000].

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #4 (permalink)  
Antiguo 15/06/2011, 08:25
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Valores null

creo que entendi la estructura, pero tendras que confirmarlo. tienes unos limites definido en rango, luego tienes una serie de colores. el resto son registros donde dependiendo en que rango cae el valor numerico de cada registro, se le aplica uno u otro color. si es asi, entonces si, probablemente el problema sea null. supongo que en tu codigo comparas el registro con el rango. entonces, fijate que null no es lo mismo que "null". cambia el null del rango por "null". tambien toma en cuenta lo que mencione en el mensaje anterior acerca del array rango.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 15/06/2011, 10:02
 
Fecha de Ingreso: octubre-2010
Ubicación: Costa Brava
Mensajes: 58
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: Valores null

Buenas, y muchas gracias antes de nada!

perdón por no especificar. Es tal como lo has dicho, defino los rangos, los colores y el resto ya son los registros que luego se clasificarán en esos rangos. El primer número corresponde a un código de referencia y el segundo es el dato a representar.

He probado con lo que me has comentado pero no coge el color indicado... de hecho no coge ninguno ;p

te muestro:

presupuesto = {"rangos":[("null"),(1000000),(5000000)], "colores":["#00FFFF","#FECDF9", "#FD8AF1", "#FB02E2"], "unidades":"(Hab/Km2)", "170010":"442228.69","170031":"null","170059":"175 567.98","170118":"325067.71","170123":"1079527.83" ,"170144":"109399.57", etc. etc }
  #6 (permalink)  
Antiguo 15/06/2011, 10:04
 
Fecha de Ingreso: octubre-2010
Ubicación: Costa Brava
Mensajes: 58
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: Valores null

He probado con lo que me has comentado pero no coge el color indicado... de hecho no coge ninguno ;p

cuando digo que no coge ningun color me refiero a los registros de valor null, los otros si se clasifican bien.
  #7 (permalink)  
Antiguo 15/06/2011, 10:05
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Valores null

vuelvo y te indico, habria que ver el codigo que hace uso de esos datos para determinar como lo esta manejando porque seguramente el problema esta ahi, en el algoritmo.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #8 (permalink)  
Antiguo 15/06/2011, 13:23
 
Fecha de Ingreso: octubre-2010
Ubicación: Costa Brava
Mensajes: 58
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: Valores null

este es el codigo, previamente he puesto los datos de presupuesto en "dades_indicador"

IncRadi=5;

ranges = dades_indicador.rangs;
colors = dades_indicador.colors;
var context = {
getColor: function(feature) {
for (var i = 1; i < ranges.length; i++){
if (dades_indicador[feature.attributes.id] < ranges[i]){
return colors[i];
}}

if (dades_indicador[feature.attributes.id] >= ranges[ranges.length -1]){
return colors[ranges.length]}
},

radius: function(feature) {
for (var i = 0; i < ranges.length; i++){
if (feature.attributes.value < ranges[i]){
return IncRadi*(i+1);
}
}

if (feature.attributes.value >= ranges[ranges.length -1]){
return IncRadi*(i+1);
}
}
};
var template = {
fillColor: "${getColor}", // using context.getColor(feature)
//pointRadius: "${radius}",
fillOpacity: ".85",
strokeColor:"black",
strokeWidth:1};
var style = new OpenLayers.Style(template, {context: context});
var styleMap = new OpenLayers.StyleMap({'default': style});//, select: {fillColor: "333333"}, hover: {fillColor: "333333"}});
  #9 (permalink)  
Antiguo 15/06/2011, 15:02
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Valores null

fijate en el algoritmo, por ejemplo de getColor, estas omitiendo la primera posicion del array de rango y luego haces una comparacion directamente con el ultimo elemento. por eso no te toma ningun color para "null", porque no hay ninguna comprobacion para ese valor. un apaño bien rapido, agrega otra condicion para especificamente comparar con null, asi como hicistes para determinar si el numero es mayor que el ultimo elemento. otra forma, quizas puedas devolver un valor predeterminado cuando ninguna de las comparaciones anteriores coinciden, de modo que automaticamente se puede entender que el valor es "null". en ese caso, puedes eliminar "null" del rango y el color que le pertenece a este. en el siguiente esquema usa como idea la funcion getColor pero tambien tienes que aplicarlo radius.

Código:
// alternativa 1;
for(...){
// la comprobacion
}

if(...) return colors[i]; // comprobacion si es mayor que el ultimo elemento;
else if(...) return colors[0]; // aqui comprueba si el valor es "null";

// alternativa 2;
for(...){
// la comprobacion
}

if(...) return colors[i]; // comprobacion si es mayor que el ultimo elemento;
return "#00FFFF"; // automaticamente se entiende que es null porque no concidio con ningun elemento de rangos; 
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #10 (permalink)  
Antiguo 16/06/2011, 00:42
 
Fecha de Ingreso: octubre-2010
Ubicación: Costa Brava
Mensajes: 58
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: Valores null

Muchas gracias por tu ayuda Zerokilled!!!

Ya he logrado que funcione correctamente.

Etiquetas: null, rangos, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:06.