Mensajes y Botones en APEX

En esta entrega vamos a ver cómo podemos manejar distintos mensajes disparados por medio de botones.

Vamos a crear estos cuatro botones en una página en APEX:

BTN_ALERT

CSS Classes: u-warning

Icon: fa-warning

Creamos una acción dinámica de tipo JavaScript:

// Se muestra el cuadro de diálogo ‘alerta sin bloqueo’,
// entonces después que se da clic en OK se ejecuta el próximo cuadro de alerta
// y si tuviéramos cualquier otro código se ejecutaría al cerrar el cuadro de diálogo.
apex.message.alert('alerta sin bloqueo', function() {
    apex.message.alert('cerrar la alerta');
    --mifuncion();
});

Usamos la función alert(pMessage, pCallback)

Parámetros:

Nombre              Tipo                  Descripción

pMessage             String                   El mensaje que se mostrará en el cuadro de diálogo de alerta.

pCallback             Función               Llamada a la Función Callback cuando el diálogo está cerrado.

Esta función muestra un cuadro de diálogo de alerta con el mensaje dado y el botón Ok. La función de devolución de llamada es pasada cuando se llama al parámetro pCallback cuando se cierra el cuadro de diálogo.

El cuadro de diálogo se muestra con el widget jQuery UI “Diálogo”. Existen algunas diferencias entre esta función y la función de alerta incorporada de un navegador: – El estilo de diálogo será coherente con el resto de la aplicación. – El cuadro de diálogo se puede mover. – La llamada a apex.message.alert no se bloquea. Cualquier código definido después de la llamada a apex.message.alert se ejecutará antes de que el usuario presione OK. Por lo tanto, el código que se ejecutará después de que el usuario cierre el cuadro de diálogo debe realizarse desde la devolución de llamada, como lo vemos en el ejemplo.

Nota: Si alguno de los siguientes dos requisitos previos no se cumple, la función recurre al uso de la confirmación integrada del navegador: – el código del widget del cuadro de diálogo de la interfaz de usuario jQuery debe cargarse en la página. – El navegador debe estar ejecutándose en modo “Standards”. Esto se debe a que si se está ejecutando en modo ‘Quirks’ (como es el caso con algunos temas más antiguos), esto puede causar problemas con la posición de visualización, donde el cuadro de diálogo se posiciona en el centro vertical de la página, en lugar del centro de la página visible.

BTN_SUCCESS

CSS Classes: u-success

Icon: fa-check-circle-o

Creamos una acción dinámica de tipo JavaScript:

apex.message.showPageSuccess('¡Exitoso!');

Usamos la función showPageSuccess(pMessage)

Parámetro:

Nombre              Tipo                  Descripción

pMessage             String                  El mensaje de éxito para mostrar.

Esta función muestra un mensaje de éxito a nivel de página. Esto borrará cualquier mensaje de éxito anterior que se muestre, y también supone que no hay errores, por lo que borrará cualquier error que se haya mostrado anteriormente.

Los mensajes de éxito se mostrarán utilizando la plantilla del tema de la aplicación actual. Específicamente para los mensajes de éxito de la página, se utilizará el marcado del atributo “Subtemplate > Success Message” de la plantilla de página.

Consejo: como desarrollador de temas, podemos influir o anular lo que sucede cuando se muestra un mensaje de éxito a nivel de página.

Para obtener más información, podemos consultar la función apex.message.setThemeHooks (específicamente la función de devolución de llamada beforeShow, donde necesitaremos verificar ‘pMsgType === apex.message.TYPE.SUCCESS’ para aislar cuando se muestra un mensaje de éxito a nivel de página).

BTN_ERROR

CSS Classes: u-danger

Icon: fa-exclamation-diamond-o

Creamos una acción dinámica de tipo JavaScript:

apex.message.showErrors([
    {
        type:            'error',
        location:        'page',
        message:         '¡Hubo un problema!',
        unsafe:           false
    }
]);

Usamos la función showErrors(pErrors)

Parámetro

Nombre: pErrors

 Tipo: Object | Array <Object>

 Descripción: Un objeto o conjunto de objetos con las siguientes propiedades:

Name Type Attributes Default Description
type string Debe pasar “error”, aunque puede admitir diferentes tipos de notificación en el futuro.
location string | Array.<string> Los valores posibles son: “inline”, “page” o [ “inline”, “page” ].
pageItem string Referencia del elemento donde debe aparecer un error ‘inline’ . Necesario cuando location = “inline”.
message string El mensaje de error.
unsafe boolean <optional> true Pasar verdadero (true) para que el mensaje sea escapado por showErrors. Pasar falso (false) si el mensaje ya se escapó y no necesita ser escapado por showErrors.

Esta función muestra todos los errores en la pila de errores apex.message. Los errores se mostrarán usando las plantillas del tema de la aplicación actual. Para los mensajes de nivel de página (donde ubicación = “page”), los mensajes de error usan marcado del atributo “Subtemplate > Notification” de la plantilla de página. Para los mensajes a nivel de elemento (donde ubicación = “inline”), los mensajes de error utilizan el marcado del atributo “Error Display > Error Template” de la plantilla de etiqueta del elemento.

Nota: los desarrolladores de temas deben tener en cuenta lo siguiente: Para mostrar los errores de un tema correctamente, deben definir los dos atributos de plantilla descritos anteriormente. Además, para los errores en línea, la plantilla de etiqueta debe hacer referencia a la cadena de sustitución #ERROR_TEMPLATE# en los atributos “Before Item” o “After Item” de sus plantillas de etiquetas.

Como desarrolladores de temas, también pueden influir o anular lo que sucede al mostrar errores a nivel de página de igual forma descripta anteriormente.

BTN_ERROR_CLEAR

CSS Classes: u-danger

Icon: fa-exclamation-circle-o

Creamos una acción dinámica de tipo JavaScript:

apex.message.clearErrors();
apex.message.showErrors([
    {
        type:            'error',
        location:         'page',
        message:         '¡Eliminado todos esos errores!',
        unsafe:           false
    }
]);

Si no deseamos agregar a la pila los errores, primero debemos llamar a la función clearErrors(), como vemos en el ejemplo.

// Primero se limpian los errores 
apex.message.clearErrors(); 

// Ahora se muestran nuevos errores 
apex.message.showErrors([ 
    { 
        type: "error", 
        location: [ "page", "inline" ], 
        pageItem: "P1_ENAME", 
        message: "¡El nombre es requerido!", 
        unsafe: false 
    },{
        type: "error", 
        location: "page", 
        message: "¡Se ha producido un error de página!", 
        unsafe: false 
    } 
]);

Para más información sobre estas funciones puedes ir a la documentación de Oracle APEX 19.2 AQUI

Publicado por Ing. Clarisa Maman Orfali

Clarisa es Oracle ACE Director, con más de 27 años de experiencia como desarrolladora, docente, autora y consultora en Tecnologías de la Información. Clarisa es de Argentina que vive y trabaja en Irvine, California, en los Estados Unidos. Ella es autora de los primeros tres libros de Oracle APEX. También es co-fundadora del Grupo de Usuarios de Oracle de Argentina (AROUG) y se ha especializado los últimos 13 años en el desarrollo de aplicaciones web con Oracle Application Express (APEX).

Deja un comentario

A %d blogueros les gusta esto: