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 :-(,
