Etiqueta

3 de enero de 2025

Nueva funcionalidad jsRemoteForm (history stack)

 La última revisión de Omnis Studio 11.2, incorpora una (más que interesante) funcionalidad que añadir a nuestras aplicaciones Web, denominada "history stack".

El "history stack" puede estar formado por la lista de páginas que visitamos o por los estados entre los que navega un usuario durante el transcurso de una sesión abierta desde el navegador. Los estados en dicho historial pueden ser agregados o reemplazados, pero nunca eliminados.

Sin embargo, al agregarse un nuevo estado, se invalidan los estados que estén por delante de la posición actual del usuario. El historial persiste durante el tiempo que dure la sesión con el usuario, aún en el caso de que éste refresque la página.

Una nueva aplicación de muestra incluida en el "HUB" denominada "JS History" nos enseña cómo es posible hacer uso de las flechas de dirección del navegador web (ver imagen superior) para moverse entre las diferentes pestañas del formulario"jsRemoteForm".

El comportamiento habitual de los botones del navegador puede ser cambiado mediante un nuevo método en los "jsRemoteForm" denominado "$pushhistorystate()", el cual puede ser ejecutado desde un método de tipo cliente o bien de servidor.

Cuando el usuario usa los botones "Atrás" o "Adelante" del navegador para moverse por el historial, lo que sucederá es que se invocará un método de devolución de llamada denominado "$applynewhistory", que a su vez recibirá el valor de "$pushhistorystate" como parámetro.

Gracias a ésta nueva funcionalidad nuestras aplicaciones Web se verán aún mas integradas en la ventana de navegación del cliente Web, mejorando su experiencia de uso.

29 de agosto de 2024

Campos PDF editables con Omnis Studio 11.2

Una de las novedades que nos trae Omnis Studio 11.2 es la capacidad para colocar campos editables en nuestros informes PDF.

Ahora los campos de entrada de informes tienen una nueva propiedad, $enterable, que permite al usuario final ingresar y guardar texto en un informe en formato PDF. (Revisión 38452, ST/EC/1849)

La activación de la mencionada propiedad permitirá que el usuario final ingrese y guarde texto en un campo de un informe PDF configurando su propiedad $enterable en kTrue. Cuando el usuario final abra el informe PDF generado, el campo estará activo y se podrá ingresar texto, tras lo que podrá guardar el PDF con el nuevo contenido.

Sólo se aplica a archivos PDF generados mediante Omnis PDF Device.

Tenga en cuenta que si el campo editable del informe está vacío cuando se imprime y la propiedad $nolineifempty es kTrue, entonces toda la línea que incluye el campo editable no será incluida en el informe. En este caso, es recomendable fijar la propiedad $nolineifempty para los campos editables del informe en kFalse (que es el valor predeterminado).

PRIobjectStruct también se ha actualizado con un nuevo miembro mEnterable, con el fin de que los desarrolladores de componentes externos puedan crear sus propios campos editables.


28 de abril de 2024

Uso del método $showurl y $closeurl()


 La estructura de éstos métodos es la siguiente:

  • $showurl(cURL[,cFrame,cWindowProperties,cWindowRef]) abre la URL en una nueva ventana o marco en el cliente; cURL es la URL de la página HTML; cFrame es el nombre del marco HTML; si cFrame está vacío, la página se muestra en una nueva ventana; de lo contrario, se muestra en el marco especificado para la ventana actual.
  • $close(cWindowRef) cierra la ventana del navegador que fue abierta previamente mediante el método $showurl(), consta de un solo parámetro y deberá ser el indicado mediante el cuarto parámetro del método $showurl() anterior.
En este artículo hablare del método $showurl, sus alternativas de uso, su equivalente JavaScript y algunos ejemplos, empecemos por desgranar sus parámetros:

  1. cURL: Es la dirección de la página a presentar en una nueva ventana del cliente o bien sobre el marco especificado mediante el siguiente parámetro de la página HTML que figura actualmente en el cliente.
  2. cFrame: Es el nombre de marco HTML. Si cFrame está vacío, la página se mostrará  en una nueva ventana, de lo contrario se mostrará en el marco especificado para la ventana actual.
  3. cWindowProperties: Será ignorado si cFrame no existe. De lo contrario, tiene el mismo formato que los argumento del método Javascript "window.open", por ejemplo, "toolbar = 0, menubar = 1" indicaría que la ventana del navegador tendrá una barra de menú, pero no una barra de herramientas.
A continuación les muestro las posibles palabras clave o argumentos que podemos aportar en este tercer parámetro:

toolbar - La ventana del navegador tendrá una barra de herramientas
status - La ventana del navegador tendrá una barra de estado
menubar - La ventana del navegador tendrá una barra de menú
scrollbars - La ventana del navegador tendrá barras de desplazamiento
resizable - La ventana del navegador es de tamaño variable
location - La ventana del navegador tendrá una barra para direcciones
directories - La ventana del navegador mostrará el directorio Web
width - Anchura de la ventana del navegador
height - Altura de la ventana del navegador
top  - Coordenada superior de la ventana del navegador
left - Coordenada izquierda de la ventana del navegador

Todas éstas palabras clave son boleanas (0 o 1) a excepción de la width, height, top y left, que deberán ser valores expresados en píxel's. 

Les mostraré ahora algunos ejemplos de uso:

$cinst.$showurl(lvURL,,"toolbar=yes,location=no,width=750,height=400,resizable=yes,scrollbars=yes")
$cinst.$showurl("http://www.myserver.com/cgi-bin/omniscgi?OmnisServer=192.168.1.1&OmnisLibrary=MyLib&OmnisClass=rtLookup&Ukey=132456778","_blank")

Decir que también podremos usar una alternativa JavaScript inmersa en el mismo método:

$cinst.$showurl('javascript:self.close()','_top')
$cinst.$showurl("javascript:document.write('Testing');","_blank")
$cinst.$showurl(“javascript:self.close();window.open('http://127..0.0.1/insite/html/ejemplo.htm','orderpad','width=400,height=300,top=50,left=300,status=no,toolbar=no,menubar=no,scrollbars=yes’);”) 
$cinst.$showurl("javascript:window.top.location.href=‘https://framosmu.blogspot.com/’") 

De modo que podemos decir que el método $showurl(cURL[,cFrame,cWindowProperties]) es equivalente al método javascript: window.open(URL,target,options)

En éste caso “target” sería el equivalente a cFrame y puede tener los valores siguientes:

"_self" - Nueva página en la misma ventana
"_blank" - Nueva página en otra ventana
"_parent"- Nueva página en la ventana padre
"_top"- Nueva página en la ventana superior
frame_name - Nueva página en la ventana o marco denominado “frame_name”

Un último ejemplo para abrir una ventana en otra pestaña del navegador sin hacer uso del método $showurl, sería:

JavaScript: window.open(lvURL,lvNewTabName,"titlebar=no,toolbar=no,location=no,status=no,menubar=no,resizable=yes,scrollbars=yes")

Bueno, hacía mucho que no publicaba algo nuevo en éste blog, espero que les resulte útil, déjenme sus comentarios y/o aportaciones si lo consideran oportuno, nos vemos...