Adición de acciones personalizadas a páginas existentes
Añada acciones personalizadas a las páginas existentes utilizando el enfoque de personalización diferencial, que actualiza el archivo buc-page-definitions.json para personalizar la página. Utilizando el enfoque de personalización diferencial, las actualizaciones se conservan cuando Order Hub publica actualizaciones en las mismas páginas que ha personalizado.
Procedimiento
- Cree o edite el archivo buc-page-definitions.json para la página a la que desea añadir la acción personalizada.Para averiguar a qué páginas dan soporte a la adición de acciones, consulte las páginas listadas en el archivo siguiente:
- buc-app-<module>/packages/<module>-shared/assets/buc-app-<module>/buc-page-definitions.json
La página de detalles del pedido se utiliza como ejemplo en esta tarea, que se encuentra en packages/order-details/src-custom/assets/custom/buc-page-definitions.json.
- Añada una acción personalizada a la página con las propiedades siguientes:
- ID
- Un ID exclusivo.
- etiqueta
- Una serie que se mostrará como una etiqueta de acción de página en la interfaz de usuario. Puede proporcionar una serie traducible.
- resourceId
- Un ID exclusivo para mostrar u ocultar la acción. Cree un nuevo ID de recurso y especifique el valor.
Por ejemplo, para actualizar la página de detalles del pedido, actualice el archivo packages/order-details/src-custom/assets/custom/buc-page-definitions.json con los siguientes detalles:{ "order-details": { "name": "order-details", "actions": [ { "id": "custom-action", "label": "custom.LABEL_CUSTOM_ACTION", "resourceId": "BUCORD0014AT0001" } ] } } - Añadir series de conversión para la acción personalizada.
- Cree o edite el archivo en.json . Por ejemplo, para la página de detalles del pedido, packages/order-details/src-custom/assets/custom/i18n/en.json.
- Escriba el siguiente contenido JSON en el archivo en.json . Esta etiqueta se utiliza para la nueva acción personalizada que añadirá a la página.
{ "custom": { "LABEL_CUSTOM_ACTION": "Custom action" } }
- Verifique que la nueva acción personalizada se muestre en Order Hub.
- Inicie sesión en Order Hub. Si ya ha iniciado sesión, vuelva a cargar el bastidor.
- Vaya a la página que ha actualizado para poder verificar la visualización de la acción personalizada.
Por ejemplo, si ha actualizado la página de detalles del pedido, pulse Pedidos (modalidad DEV) y busque pedidos. Pulse cualquier pedido para ir a la página de detalles del pedido.
- Pulse Acciones y verifique que la nueva acción personalizada se muestra en el menú. Por ejemplo:

- Cree un archivo de servicio de acciones custom-action.service.ts y pase un ID de acción (que se ha especificado como id para la acción personalizada en el archivo buc-page-definitions.json ) al método
selectde ActionProcessorService.Por ejemplo, para la página de detalles del pedido, packages/order-details/src-custom/app/services/custom-action.service.ts se actualiza en el código siguiente y Acción personalizada mostrará una ventana emergente de alerta:import { Injectable } from '@angular/core'; import {ActionProcessorService } from '@buc/order-shared'; @Injectable() export class CustomActionService{ constructor( private actionProcessorService: ActionProcessorService ) { this.actionProcessorService.select<any>('custom-action').subscribe(({params}) => { const componentId = params.component; // component id of the order-details-page const orderDetailsData = params.data; // params.data contains the following properties // params.data = { // pageObject -> details page data // routeData -> the page router object // context -> sometimes a page has a context object // } alert('Custom action invoked'); }); } } - Registre un servicio de acciones personalizadas en el archivo app-customization.impl.ts .Por ejemplo, para la página de detalles del pedido, packages/order-details/src-custom/app/app-customization.impl.ts.
- Importar un servicio de acción personalizada, que se ha creado en el paso anterior.
- Importar
BucActionsModuledesde"@buc/common-components". - Añada el servicio de acciones personalizadas a las importaciones tal como se muestra en el ejemplo siguiente:
import { BucActionsModule } from "@buc/common-components"; import { CustomActionService } from "./services/custom-action-service"; export class AppCustomizationImpl { static readonly components = []; static readonly providers = []; static readonly imports = [ BucActionsModule.forChild( [ { name: 'custom-action', action: CustomActionService } ] ) ]; }Nota: El valor de la propiedadnamedebe ser el mismo que el ID de acción especificado en el archivo buc-page-definitions.json .
- Volver a cargar el marco y verificar que se visualiza una ventana emergente de alerta al seleccionar la nueva acción personalizada. Por ejemplo:
