I have given three color for code.
Red indicated that it is
mandatory.
Black indicates comment and
green indicates custom code.
Physical Model
/*---------------------------Coding starts------------------------*/
if( typeof( SiebelAppFacade.ValidatePM ) === "undefined"
){
/* No
Need to worry about this line. This line make sure that the same definition is
not yet defined. */
SiebelJS.Namespace( "SiebelAppFacade.ValidatePM" );
/* SiebelJS.Namespace(
"SiebelAppFacade.ValidatePM" ); This will create new name space
called ValidatePM. */
SiebelApp.S_App.RegisterConstructorAgainstKey("ValidatePModel","SiebelAppFacade.ValidatePM"
);
/*Above code will register our constructor It s format is
“RegisterConstructorAgainstKey
(key, constructor)”. This is very important because we need this key to
map our customized file in many places.
*/
SiebelAppFacade.ValidatePM = ( function(){
/*we
just started to define our class. Its name is ValidatePM */
function ValidatePM( proxy ){
SiebelAppFacade.ValidatePM.superclass.constructor.call(
this, proxy);
}
/*Calling
super class*/
SiebelJS.Extend( ValidatePM,
SiebelAppFacade.PresentationModel );
/*
Above line add our class to frame work,
now our class can access many prebuilt functions. */
ValidatePM.prototype.Init = function(){
/*Init
method will initialize, we can initialize properties, methods etc.. */
SiebelAppFacade.ValidatePM.superclass.Init.call( this );
this.AddProperty( "isEmailSet", "" );
this.AddMethod(
"FieldChange", OnFieldChange,
{ sequence : false, scope: this } );
};
function OnFieldChange( control, value ){
if(
control.GetName() === "EmailAddress" ){
this.SetProperty(
"isEmailSet", ( value ? true: false ) );
}
}
return ValidatePM;
}());
}
/*-------------------------------Coding Ends--------------------------------------*/
Now lets take a look in to Init function.
ValidatePM.prototype.Init =
function(){
SiebelAppFacade.ValidatePM.superclass.Init.call( this );
this.AddProperty( "isEmailSet", "" ); this.AddMethod(
"FieldChange", OnFieldChange,
{ sequence : false, scope: this } );
};
Here
this.AddProperty(
"isEmailSet", "" ); created a
property called “isEmailSet” and initialized this value as null. Now I initialized
a method this.AddMethod(
"FieldChange", OnFieldChange,
{ sequence : false, scope: this } ); read more
Now lets discuss our custom method
function OnFieldChange( control,
value ){
if(
control.GetName() === "EmailAddress" ){
this.SetProperty(
"isEmailSet", ( value ? true: false ) );
}
}
Every field
change will trigger this method. And this will check for changed control name. In our case, we are listening to
changes in email field. So if email address has any change, then we will set isEmailset to true.
This change
will trigger our PhysicalRender file. Because in physical render file we will
listen this property (That we will discuss later). So any change in this property (isEmailSet)
will trigger our custom methods in physical render file.