this.isAddMode() or this.isCopyMode() in Freedom UI pages
Hi
Somebody know how determine, when working with a record in a Freedom UI page if it corresponds to a new record (new/copy)?
Thanks in advance
Regards
Julio Falcón
Like
Hello Julio,
const cardState = await request.$context.CardState; if (cardState == "add" || cardState == "copy") { // do something here }
Ryan
Ryan Farley,
Thanks Ryan, where did you find/get this kind of information?
Ryan Farley,
Ryan,
In which kind of handler request I must introduce the code? I tried in crt.OpenPageRequest, but nothing happens. The code I'm using:
handlers: /**SCHEMA_HANDLERS*/[ // NdosEntity_4ad7b54DS.NdosPeriodicidadMP { request: "crt.OpenPageRequest", handler: async (request, next) => { const okBtn = { key: "OK", config: { color: "accent", caption: "OK" } }; const cancelBtn = { key: "CANCEL", config: { color: "primary", caption: "Salir" } }; // Nuevo o Copia const cardState = await request.$context.CardState; // Mensaje... const result = await request.$context.executeRequest({ type: "crt.ShowDialogRequest", $context: request.$context, dialogConfig: { data: { message: ( cardState == "add" || cardState == "copy" ) ? "New: Este es un nuevo registro" : "Existing one: Este registro ya existe" , actions: [ okBtn, cancelBtn ] } } }); if (result === "OK") { // Clica en OK } /* Siguiente handler, retorna resultado */ return next?.handle( request ); }, }, ]
Julio.Falcon_Nodos,
You would add this in the page you’re opening, not in the code that opens the page. What is the intent you’re trying to produce? I assume that in a page you’re wanting to know if the page is in add mode vs edit. Correct? To accomplish this you’d add something such as a crt.HandleViewModelResumeRequest on the page and check the cardstate there.
Thanks Ryan, I'm also try using crt.HandleViewModelResumeRequest, but nothnig happens.
What I need is that when I open the page "Air Equipment/NdosPage_3ud8c3e" it can detect if I am working with a new record and do something. So it is in the code of this page, where I enter the commented code, compile, open an existing record and create a new one and the code entered does not execute/does not work in any situation.
If I add the code inside a crt.HandleViewModelAttributeChangeRequest, it works, but it stays
in loop and to exit I have to go back in the browser.
I made a short video to show what I'm doing and where the code is in case it helps to understand, see at
https://share.vidyard.com/watch/NRBjhx3hjzCi9sZ2x5qsSK?
In Classic UI I've the onEntityInitialized method to execute when open the page, but in Freedom is very different
Thanks again
Julñio
Julio.Falcon_Nodos,
Hello Julio,
Does it also not enter the handler if you try adding a "crt.HandleViewModelInitRequest"?
Ryan Farley,
No Ryan, I didn't understand what's wrong with my code :-(,