viernes, 10 de enero de 2014

Editor de gráficos web con hoja de cálculo en google drive

Después de un largo tiempo ausente me anime a publicar algo así que al actualizarme un poco en visualization encontré un componente gráfico muy útil que se llama chart editor, para visitar la página y descargar el código original en code playground click aquí. Así que me puse a modificar un poco el código del editor original lo cual iré comentando en este artículo.

Primero debemos entender como es que genera los diferentes tipos de gráficos este asistente en web, por lo general podemos usar un rango seleccionado de celdas de una hoja de calculo alojada en google drive, debemos tener en cuenta que tal hoja de calculo debe estar en modo compartido público de los contrario no podrá cargarse la data, hay otro modo de usar este generador de gráficos web al establece un data table haciendo uso de JSON lo cual publicaré en otro artículo.

Entonces manos a la obra, primero debemos crear una hoja de calculo en drive y compartirla como pública de la siguiente manera:


Después click en el botón compartir y definir como público.


La dirección pública generada por drive de mi hoja de cálculo por ejemplo es:

https://docs.google.com/spreadsheet/ccc?key=0AplEIWl3vfe3dEk2TkJrdjBESkpkcHFJRV9lLUJ0bmc&usp=sharing

Luego modificamos el código del chart editor en el campo denominado dataSourceUrl y establecemos el rango de celdas en ese campo


Primero debemos cambiar el parámetro llamado key por el parámetro key de la dirección publica generada por drive de nuestra propia hoja de calculo, también el parámetro range en mi caso puse B3:C5 pues es el intervalo en el que se encuentra la data en la hoja de calculo (notar el intervalo en la segunda imagen de este articulo que muestra el contenido de la hoja de calculo).

Finalmente probamos el código abriendo el archivo html modificado en el navegador


Para cambiar de tipo de gráfico solo deben darle click en la opción abrir chart wizard y si quieren obtener el código estático para embeberlo en cualquier pagina denle click en obtener embed y copian el código generado en el text area de la parte inferior.

Vale resaltar que modifique un poco el código original del chart editor de google code playground para que me generase un código embebido y así poder usarlo en todos lados sin necesidad de conexión a internet, si alguien encuentra otra forma de hacerlo por favor compartirlo. Finalmente les dejo mi código modificado del chart editor a continuación: Ver/Descargar Código HTML.


viernes, 24 de septiembre de 2010

Buscar contenido dentro de un feed o rss especifico

Hola a todos, este post va dirigido a personas que tienen un blog y han querido poner un gadget de busqueda sin que salga el famoso mensajito "con la tecnologia de google", no me malentiendan la busqueda es utilizando el motor de google pero sin el famoso logo, para hacer esto vamos a utilizar el API de google para Feeds los que deseen saber mas pueden entrar a la siguiente direccion http://code.google.com/apis/ajax/playground/?exp=libraries#find_feed sino tambien pueden bajar mi ejemplo al final del post.

Simplemente tenemos que modificar una linea de codigo del javascript para variar el ejemplo para que busque en nuestro blog(excepto si deseas agregarle algo de diseño con css), en mi caso yo ya lo tengo implementado en mi blog al costado izquierdo abajo de mi perfil.

En mi ejemplo customizado tendrian que variar la siguiente linea:


var query = 'site:humancompiler.blogspot.com '+document.getElementById('c4').value;

Solo deben reemplazar la URL de mi blog por su blog o dominio con una fuente rss, a continuacion pueden bajar mi ejemplo completo, para ponerlo en su blog solo deben poner esa pagina con un iframe, para probar mi ejemplo busquen cualquier palabra que contenga algun post de mi blog.



jueves, 23 de septiembre de 2010

Formatear un input tipo text a entero, o con 2 decimales, o con separador de n caracteres en n caracteres

Hola a todos, despues d eun largo tiempo de ausencia retomo la blogosfera para compartir algo con lo que estruve lidiando esta semana, se me presento el problema de formatear una caja de texto para que acepte solo numeros enteros y otra caja de texto para q acepte numeros con n decimales, les explicare el codigo a usar y al final del articulo dejare los archivos para que descarguen los ejemplos.

Primero veremos el ejemplo para numero entero:

Javascript a utilizar:


function validarEntero(valor){
//intento convertir a entero.
//si era un entero no le afecta, si no lo era lo intenta convertir
valor = parseInt(valor)
//Compruebo si es un valor numérico
if (isNaN(valor)) {
//entonces (no es un numero) devuelvo el valor cadena vacia
return ""
}else{
//En caso contrario (Si era un número) devuelvo el valor
return valor
}
}
function validarFormulario(){
//extraemos el valor del campo
textoCampo = window.document.formul.texto.value
//lo validamos como entero
textoCampo = validarEntero(textoCampo)
//colocamos el valor de nuevo
window.document.formul.texto.value = textoCampo
}


Y dentro del tag body ponemos el objeto input dentro de un form:


< method="post" name="formul" action="">
Teclea un número:
< id="texto" onkeyup="validarFormulario()" onchange="validarFormulario()" name="texto">
< /form>


Ahora veremos el ejemplo para numero con 2 decimales, para esto hago la observacion que el usuario no ingresara el punto decimal por ejemplo si se desa ingresar 45.68 el usuario solo tecleara 4568 y el punto se añadira automaticamente, otro ejemplo si se desa ingresar 45.6 el usuario debera teclear solamente 4560 y se añadira el punto automaticamente.

Javascript a utilizar:


function format(input)
{
var num = input.value.replace(/\./g,'');
if(!isNaN(num)){
if(num.length>2)
{
num=num.substring(0,num.length-2)+'.'+num.substring(num.length-2);
}
input.value = num;
}

else{ alert('Solo se permiten numeros');
input.value = input.value.replace(/[^\d\.]*/g,'');
}
}


Y dentro del tag body ponemos el objeto input dentro de un form:


< form>
< type="text" id="c4" name="c4" runat="server" onkeyup="format(this)" onchange="format(this)">
< /form>


Bueno aqui les dejo los ejemplos a descargar, por tiempo no les comente el codigo del separador pero les dejo el archivo es el tercer archivo. Saludos y espero que les sirva, agradecer no cuesta nada, comenten si les gusto el post...










lunes, 16 de noviembre de 2009

Como Obtener El Navegador Web y La Versión usando PHP

Es clasico toparse con problemas de diseño en web, especificamente con internet explorer 6 por lo que a continuación les recomiendo usar dos funciones, la primera es para obtener el nombre del navegador web desde el que se accede y la otra es para obtener la version de este, estas funciones son muy útiles a la hora de diferenciar contenidos debido al renderizado de cada cliente web.

-Función para obtener el nombre del navegador:


function get_user_browser()
{
$u_agent = $_SERVER['HTTP_USER_AGENT'];
$ub = '';
if(preg_match('/MSIE/i',$u_agent))
{
$ub = "ie";
}
elseif(preg_match('/Firefox/i',$u_agent))
{
$ub = "firefox";
}
elseif(preg_match('/Safari/i',$u_agent))
{
$ub = "safari";
}
elseif(preg_match('/Chrome/i',$u_agent))
{
$ub = "chrome";
}
elseif(preg_match('/Flock/i',$u_agent))
{
$ub = "flock";
}
elseif(preg_match('/Opera/i',$u_agent))
{
$ub = "opera";
}

return $ub;
}


-Función para obtener la versión del navegador:


function gbversion()
{
$Name="";
$Version="";
$browsers = array("firefox", "msie", "opera", "chrome", "safari",
"mozilla", "seamonkey", "konqueror", "netscape",
"gecko", "navigator", "mosaic", "lynx", "amaya",
"omniweb", "avant", "camino", "flock", "aol");
$Agent = strtolower($_SERVER['HTTP_USER_AGENT']);
foreach($browsers as $browser)
{
if (preg_match("#($browser)[/ ]?([0-9.]*)#", $Agent, $match))
{
$Name = $match[1] ;
$Version = $match[2] ;
break ;
}
}
return $Version;
}


-Como en mi caso el problema solo se daba cuando usaba internet explorer 6 use el siguiente codigo:


if(get_user_browser()=="ie" && gbversion()=="6.0")
{
echo "hacer ie6";
}
else
{
echo "hacer otro";
}

viernes, 31 de julio de 2009

Crear Reportes Gráficos Con Google Visualization

La semana pasada me tope con un requerimiento particular, este consistia en crear un reporte gráfico(especificamente un pie chart) pero sin usar controles predefinidos en dll y pues digamos que ahora la gente no esta dispuesta a perder mucho tiempo, encontré dos curiosas alternativas dadas por google una es Google Visualization y la otra es Google Chart las dos son buenas sin embargo elegí la primera por que daba mejor vistosidad por su contenido y manejo de eventos. Mientras en Google Charts se consigue generar una imagen estática, en Google Visualization se consigue una animación, por ejemplo se puede dar click en una sección del pie chart y se puede observar el detalle. El resultado fue así, aunque esta es solo es la captura de pantalla del html...
Las lineas que genere son las siguientes:

data.addRows(5);
data.setValue(0, 0, 'Willy');
data.setValue(0, 1, 27);
data.setValue(1, 0, 'Cesar');
data.setValue(1, 1, 10);
data.setValue(2, 0, 'Harold');
data.setValue(2, 1, 5);
data.setValue(3, 0, 'Jorge');
data.setValue(3, 1, 8);
data.setValue(4, 0, 'Marco');
data.setValue(4, 1, 7);

El 5 de la primera linea es el numero de areás que va tener el pie chart, por cada registro se añaden dos lineas por ejemplo para willy se añaden estas dos lineas

data.setValue(0, 0, 'Willy');
data.setValue(0, 1, 27);

siendo la primera el nombre y la segunda el valor recuperado, el porcentaje lo calcula el mismo web service de google no deben preocuparse en generar eso. En este caso el ejemplo es estático sin embargo se pueden generar estas lineas desde cualquier lenguaje como java, php, asp o c sharp.

A continuación dejo el código ejemplo... Saludos
Descargar Ejemplo

viernes, 29 de mayo de 2009

Don Xumas conoce a Dari

Como dijo el cura recien ampayado no es bueno que el hombre este solo y xumas no es la excepción asi que...

[xumas1.png]

miércoles, 6 de mayo de 2009

Antivirus

Don Xumas tuvo unas breves vacaciones por el dia del trabajo, pero ya esta reincorporandose de nuevo a la rutinaria vida laboral y lo demuestra publicitando su nuevo producto...

[xumas1.png]