Here I will explain one of the requirements I came across to refresh from automatically without User interaction.
Note: Make sure we do have all the handlers to stop UIrefreshing after certain hours of execution, else it causes the system to slow down after a certain time of continuous usage of this UI
in the below example to overcome this case we use to check session login time and stopping form to refresh after certain hours of execution.
Recommended to use this on pages that hold less data or smaller data sets.
- -NoofSeconds.value() is an integer control on UI that allows the user to choose a value.( best to fix a value like 5 seconds or a Minimum value to avoid unnecessary executions)
Create a new form method and create as of below.
void refreshFormWithTimeout(AsyncTaskResult _result)
{
System.Exception ex;
try
{
if(!element.closed() && NoofSeconds.value() > 0) // Make sure UI not to refresh if form close or input = 0
{
xSession xSession = new Session();
real diff = DateTimeUtil::getDifference(DateTimeUtil::utcNow(), xSession.loginDateTime()) / 60 / 60; // Getting user session to make sure to stop auto refreshing after certain time based on configuration
if (prodParameters.DellSessionTimeout == 0 || diff <= prodParameters.DellSessionTimeout) // Config created to kill refreshing post exceeding certain time I.E 8 hours
{
Formdatasource1_ds.executeQuery();
this.setTimeOutEX(formMethodStr(Formname,refreshFormWithTimeout),ConNull(), NoofSeconds.value() * 1000);
}
}
}
catch (ex)
{
}
}
........................... Create other form method and call refreshFormWithTimeout
void refreshForm()
{
this.setTimeOutEX(identifierstr(refreshFormWithTimeout),ConNull(), NoofSeconds.value());
}
Override form Run method and call refreshForm form
public void run()
{
super();
element.refreshForm();
}
...................................................
override modified method for the control created NoofSeconds initially and call refreshForm as below. This is to reflect the modified time if your change refresh count.
[Control("Integer")]
class NoofSeconds
{
/// <summary>
///
/// </summary>
/// <returns></returns>
public boolean modified()
{
boolean ret;
ret = super();
element.refreshForm();
return ret;
}
}
Due to system limitations, we cannot place screenshots, reach out to chandu.noudu@gmail.com for any clarification/Queries.
Comments
Post a Comment