Hi Creatio Community,
I am developing a client side filter for a lookup in a section page (Freedom UI). I want to reload (re-filter) the lookup when the stage of the current record is updated (when GlbReloadEntityPage message is received).
Base logic for lookup loading:
{ request: "crt.LoadDataRequest", handler: async (request, next) => { if(request.dataSourceName == "PDS_LookupCol") { request = await ModFunctions.filterAssignTo(request); } return await next?.handle(request); } }
Reload function (Re-triggered ModFunctions.filterAssignTo(request);)
{ request: "crt.HandleViewModelInitRequest", handler: async (request, next) => { request.$context.ServerMessageReceivedFunc = async function(event, message) { if (message.Header.Sender === "GlbReloadEntityPage") { await OPGlbReloadEntity.refreshScreen(request, message); ModFunctions.filterAssignTo(request); } }; Terrasoft.ServerChannel.on(Terrasoft.EventName.ON_MESSAGE, (await request.$context.ServerMessageReceivedFunc), request.$context); return next?.handle(request); } },
Filtering function
filterAssignTo: async function(request){ .... Custom logic ....... const newFilter = Object.assign({}, filter); newFilter.items = filter.items; if(request.parameters){ request.parameters.push({ type: "filter", value: newFilter }); } return request; },
Even if the function is triggered when "GlbReloadEntityPage" is called the lookup is not reloaded with the new filtering rules.
How can i reload lookup options from freedom ui client side?
Like
Hello,
Try to reload the data using the following code:
const handlerChain = sdk.HandlerChainService.instance;
await handlerChain.process({
type: 'crt.LoadDataRequest',
$context: request.$context,
config: {
loadType: 'reload'
},
dataSourceName: '{YOUR LOOKUP DATA SOURCE}'
});