Difference between revisions of "Crear un Custom Command"
m (→Crear un Custom Command) |
(→Problemas comunes) |
||
(15 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
+ | {{Idiomas | Crear un Custom Command |Creating a Custom Command |カスタムコマンドの作成}} | ||
[[Category: Guías de GXtest]] | [[Category: Guías de GXtest]] | ||
Line 26: | Line 27: | ||
Al implementar la función JavaScript se puede consultar los valores de currentGXVersion (v9, v10, v8, undefined) y currentLanguage (java, net, undefined), por si es necesario hacer distintas acciones de acuerdo a cada uno de estos parámetros. Además se les puede pasar un parámetro en ParamJS.<br> | Al implementar la función JavaScript se puede consultar los valores de currentGXVersion (v9, v10, v8, undefined) y currentLanguage (java, net, undefined), por si es necesario hacer distintas acciones de acuerdo a cada uno de estos parámetros. Además se les puede pasar un parámetro en ParamJS.<br> | ||
Deben devolver OK en la variable ''result'' si terminó bien, o el mensaje de error a mostrar en caso de fallo. | Deben devolver OK en la variable ''result'' si terminó bien, o el mensaje de error a mostrar en caso de fallo. | ||
+ | |||
+ | |||
+ | En el siguiente ejemplo se puede ver cómo se puede aprovechar la información aportada por GXtest en el llamado de la invocación, tomando distintas acciones según se trate de java o .net | ||
+ | |||
+ | |||
+ | if (currentLanguage=="Java") | ||
+ | { | ||
+ | |||
+ | |||
+ | } | ||
+ | else if (currentLanguage=="net") | ||
+ | { | ||
+ | |||
+ | |||
+ | } | ||
+ | else | ||
+ | { | ||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | Lo mismo se puede hacer con las versiones de GeneXus. | ||
+ | |||
+ | |||
+ | Para ver más ejemplos [[Repositorio de Custom Commands| aquí]]. | ||
== Utilizar un Custom Command == | == Utilizar un Custom Command == | ||
Line 39: | Line 66: | ||
Luego hay que ver como es el JS que hace el menú, hay veces que el objeto que hace el menu esta en memoria y hay veces que no. | Luego hay que ver como es el JS que hace el menú, hay veces que el objeto que hace el menu esta en memoria y hay veces que no. | ||
Si está en memoria generalmente es mejor intereactuar por JS con dicho objeto para pedirle el path al menú seleccionado y disparar el evento o la navegación. Si no está en memoria hay que interactuar con el objeto 'document' o 'this' para pedirle el elemento html sobre el cual se tiene que actuar. | Si está en memoria generalmente es mejor intereactuar por JS con dicho objeto para pedirle el path al menú seleccionado y disparar el evento o la navegación. Si no está en memoria hay que interactuar con el objeto 'document' o 'this' para pedirle el elemento html sobre el cual se tiene que actuar. | ||
+ | |||
+ | |||
+ | == Salida == | ||
+ | Cuando necesitamos retornar algún valor (string) desde el custom command, podemos utilizar la variable interna de GXtest llamada _resultCC . En el código del custom command retornamos un valor (utilizando return), y ese valor quedará almacenado en la variable _resultCC. Luego de la ejecución podemos consultar el valor de la misma desde cualquier otro comando de GXtest. | ||
+ | |||
+ | Esto es solamente válido para los custom commands de tipo acción o evento (no para validaciones). | ||
+ | |||
+ | == Problemas comunes == | ||
+ | ;El custom command funciona en Internet Explorer pero no en FireFox. Mensaje de error indicando que la variable "document" o "alert" no están definidas por ejemplo: en Firefox para que funcionen estos elementos estándar tal vez sea necesario ponerle el objeto "window" antes. | ||
+ | "window.document.writeln"...)" | ||
+ | |||
+ | == Más ejemplos ... == | ||
+ | Ver ejemplos en: [[Custom Commands de ejemplo]] y [[Repositorio de Custom Commands]] |
Latest revision as of 18:12, 14 September 2017
Los Custom Commands le dan la flexibilidad a GXtest de crear nuevos comandos expresando las acciones o validaciones a realizar en lenguaje JavaScript.
Contents |
Crear un Custom Command
Acceder al menú para crear un Custom Command.
Luego se le presenta la siguiente pantalla al usuario donde se puede definir el código JavaScript a ejecutar al invocar al comando:
Se debe seleccionar un Nombre, con el cual luego será referenciado, y Descripción del comando.
Se le debe indicar el tipo de comando:
- Acción
- Evento
- Validación
Se debe indicar para qué versiones de Genexus es válido el comando.
En el cuadro de texto JS se muestra una plantilla JavaScript a respetar para la implementación del comando.
Al implementar la función JavaScript se puede consultar los valores de currentGXVersion (v9, v10, v8, undefined) y currentLanguage (java, net, undefined), por si es necesario hacer distintas acciones de acuerdo a cada uno de estos parámetros. Además se les puede pasar un parámetro en ParamJS.
Deben devolver OK en la variable result si terminó bien, o el mensaje de error a mostrar en caso de fallo.
En el siguiente ejemplo se puede ver cómo se puede aprovechar la información aportada por GXtest en el llamado de la invocación, tomando distintas acciones según se trate de java o .net
if (currentLanguage=="Java")
{
}
else if (currentLanguage=="net")
{
}
else
{
}
Lo mismo se puede hacer con las versiones de GeneXus.
Para ver más ejemplos aquí.
Utilizar un Custom Command
Una vez que se crea un Custom Command este queda disponible en GXtest de la misma forma que cualquier comando nativo, permitiendo agregarlos y editarlos en forma manual.
Se podría decir que la única limitante es que no se graban automáticamente con la toolbar.
Consejos útiles
Para facilitar la tarea de crear la función JS se puede utilizar alguna herramienta como el Web Developer de Google Chrome o el Firebug en FireFox, para poder inspecionar los elementos sobre los que se quiere hacer la acción.
Por ejemplo, si queremos hacer un comando para acceder a un menú desarrollado en JavaScript, con estas herramientas podremos ver como se dispara la navegación, ya sea un evento JS o si se genera un link dinámicamente. Luego hay que ver como es el JS que hace el menú, hay veces que el objeto que hace el menu esta en memoria y hay veces que no. Si está en memoria generalmente es mejor intereactuar por JS con dicho objeto para pedirle el path al menú seleccionado y disparar el evento o la navegación. Si no está en memoria hay que interactuar con el objeto 'document' o 'this' para pedirle el elemento html sobre el cual se tiene que actuar.
Salida
Cuando necesitamos retornar algún valor (string) desde el custom command, podemos utilizar la variable interna de GXtest llamada _resultCC . En el código del custom command retornamos un valor (utilizando return), y ese valor quedará almacenado en la variable _resultCC. Luego de la ejecución podemos consultar el valor de la misma desde cualquier otro comando de GXtest.
Esto es solamente válido para los custom commands de tipo acción o evento (no para validaciones).
Problemas comunes
- El custom command funciona en Internet Explorer pero no en FireFox. Mensaje de error indicando que la variable "document" o "alert" no están definidas por ejemplo
- en Firefox para que funcionen estos elementos estándar tal vez sea necesario ponerle el objeto "window" antes.
"window.document.writeln"...)"
Más ejemplos ...
Ver ejemplos en: Custom Commands de ejemplo y Repositorio de Custom Commands