Google map control

Marcos Canán | Genexus, Genexus User Controls | 13/05/2008

Mapa

Hace unos meses me contactó Rogelio Arosemena de Inalambrik para desarrollar un user control que le permitiera usar los servicios de Google Maps desde Genexus. Había visto el Map Control pero necesitaba funcionalidades mas específicas.

Acordamos la metodología de trabajo y en pocas semanas ya teníamos el user control funcional. Quedamos ambos muy conformes con el resultado obtenido y nos demostró que la distancia (Ecuador-Uruguay) no impide que se pueda trabajar de manera fluida.

El Google Map Control soporta:

  • Markers (con eventos click, drag)
  • Polilíneas
  • Polígonos
  • KML
  • LocalSearch

UPDATE: Si alguien quiere más información o le interesa usar el control contactarse conmigo.

Herramientas Javascript

Marcos Canán | Genexus, Genexus User Controls | 19/11/2007

Herramientas

A la hora de desarrollar user controls son muy útiles (diría necesarias) algunas herramientas que faciliten el desarrollo javascript. Yo he utilizado las siguientes extensiones para Firefox e IE:

Firefox

  • Firebug
    • Permite debugear javascript
    • Permite modificar HTML y CSS y ver los resultados instantaneamente en el browser.
    • Muestra información clara de los errores javascript (archivo, numero de línea, stack trace, valores de los parámetros y variables, etc…)
  • Web Developer
    • Permite ver el código HTML generado.
    • Permite deshabilitar la cache.
  • Cache Status
    • Permite eliminar el contenido de la cache de manera rápida.

IE

Todas estas extensiones tienen más funcionalidades. Detallo solamente las que más he usado.

Early adopter de User Controls

Marcos Canán | Evento, Genexus, Genexus User Controls | 01/10/2007

Early Adopter User Controls

Muchas gracias.

Gran parte del mérito es de Rodrigo que me vendió en su charla ;)

Task list extension v2

Marcos Canán | Genexus, Genexus Extensions, Task List | 24/08/2007

Una nueva versión de la task list extension aquí.

Le agregué categorías a las tareas, nuevos estados y le hice algunos cambios estéticos. Empezó a tomar forma de bug tracker.

Task List v2

A partir de una idea de Enrique Almeida y luego de José Lamas, hice una pequeña API para que otras extensions puedan administrar tareas. La API es bastante simple, consta de 4 métodos (AddTask, GetTaskData, UpdateTask y RemoveTask). Para poder usarla lo único que hay que hacer es agregar como referencia al proyecto el assemby TaskList.dll.

Ejemplo de uso

AddTask

AddTask-task-list

GetTaskData

gettaskdata-task-list

UpdateTask

UpdateTask-task-list

RemoveTask

removetask-task-list

PD.: Ya me bajé algunas de las extensions del gxchallenge, en cuanto pueda las voy a ir probando…

Task List extension

Marcos Canán | Genexus, Genexus Extensions, Task List | 14/08/2007

Siguiendo con la misma idea de extender Genexus y sacando un poco de ideas de eclipse hice una extensión task list (ToDo list).

¿En que consiste?

Básicamente es una tool window donde se agendan tareas a hacer.

taskList-tool-window

Cada tarea puede tener prioridad, estado, fecha, notas, etc…

taskList-detail-editor

Pendientes:

- Ordenes en la lista de tareas, actualmente es siempre por orden de creación.
- Filtros y alarmas por fecha de agendado (scheduled date).
- Ver algún nombre menos llamativo para los objetos Task y que no se repita (actualmente esta usando el HashCode de los objetos, se repite?).
- Un tema que está muy interesante es el concepto de “contexto” de las tareas de la task list de eclipse. Cada tarea tiene un “contexto” (clases, métodos y atributos relacionados). Creo que haciendo algo similar y aprovechando el versionado de objetos de la rocha se podría llegar a implementar un bug/issue tracker interesante e integrado al DE.

La Task List extension está para bajar acá.

Genexus Tag Cloud Control v2

Marcos Canán | Genexus, Genexus User Controls, Tag Cloud | 06/08/2007

Nueva versión del Tag Cloud Control aquí.

Changelog:

- Render de diseño
- Se crean las variables y se asocia la variable de databinding con “Actions”.
- Se agregó una propiedad para elegir el tipo de distribución (lineal, logarítmica) para el tamaño de las fuentes.

Distribución del tamaño de las fuentes

Un tag cloud es una especie de histograma con la diferencia que permite representar información de manera mucho mas densa. Lo equivalente a una barra sería un tag y lo equivalente al tamaño de la barra es el tamaño de la fuente.

Hay veces que por la naturaleza de los datos y por la alta densidad de información si se hace una distribución lineal del tamaño de la fuente se pierde la capacidad de identificar a golpe de vista que tag es mas relevante que otro (se agrupan muchos tags en la misma categoría). Por ejemplo usando 8 diferentes tamaños de fuentes y con el siguiente juego de datos:

Juego de datos

Haciendo una distribución lineal del tamaño de las fuentes el resultado es el siguiente:

Ejemplo Distribución lineal

Sin embargo, si utilizamos una distribución logarítmica obtenemos:

Ejemplo Distribución logaritmica

Con la distribución logarítmica se pierde un poco el “cuánto” mas relevante es un tag pero para algunos casos es útil para representar mejor el “cuál” es mas relevante.

En esta versión se le agregó al control una propiedad para poder elegir el tipo de distribución.

Propiedad distribution

Genexus Tag Cloud Control

Marcos Canán | Genexus, Genexus User Controls, Tag Cloud | 31/07/2007

Experimentando con los nuevos user controls de Genexus Rocha me surgió la idea de hacer un control Tag Cloud. Una primera versión (beta o CTP1 ;-) ) está disponible para bajar acá.

¿Cómo lo uso?

Instalación

- Crear la carpeta TagCloud bajo la carpeta de User Controls. Ej.:

user-controls-carpeta

- Copiar el contenido del archivo TagCloud.zip a la carpeta creada.

Uso

- Arrastro el control a un web panel.
- Creo una variable del tipo TagCloud y otra del tipo TagCloudItem.

variables-tagcloud-control-genexus

- Asocio a la propiedad “Data” del control la variable de tipo TagCloud.

tagcloud properties

 

- Cargo los tags. Ej.:

carga tags tagcloud

Resultado

tagcloud.GIF

¿Qué arreglos tiene pendiente?

- Que no sea necesario ni crear las variables ni asociar la variable databinding, que esto se haga solo al insertar el control.
- Hacer que la cantidad de diferentes tamaños de tags sean una propiedad del control, actualmente son 10 y son fijos.
- Poder asociar una clase de un theme al control.
- Hacerle un render de diseño.
- Etc…

Gestionado con WordPress