Showing elapsed time in web views without using Today

This tip describes the procedure for showing elapsed time in web views without using Today.

This Content Component encountered an error

If you use @today or @now function in view columns or selection formulas, it will result in noticable performance problem on server.

In Web environment, we have a powerful tool: javascript...

We will have a view with a field StartDateTime and we are going to show the time between now and StartDateTime.

Code is self-explanatory...


 <SCRIPT>
function showElapsed() {

// **************************************************************
//  Display elapsed time at the web client
//  (C) Serdar Basegmez
//  sbasegmez%yahoo.com   (anti-spam precaution :)))
// **************************************************************
// 1-->
// dateadjustment is a variable that needs to be computed at the top of form. It shows us the difference of server's now and browser's now. We
// avoid negative elapsed times with the variable. At the top of template of the view ($$View Template of XXX), place a computed-for-display 
// field with the following formula. This notation is used to avoid date format conflicts...
//
//    yr:=@Text(@Year(@Now));
//    mnt:=@Text(@Month(@Now)-1);
//    dy:=@Text(@Day(@Now));
//    hr:=@Text(@Hour(@Now));
//    mn:=@Text(@Minute(@Now));
//    sc:=@Text(@Second(@Now));
//    "[<SCRIPT>var dayAtServer=new Date("+yr+"," +mnt+ "," +dy+ "," + hr+ "," +mn + "," +sc+ "); 
//     var dateadjustment=((new Date())-dayAtServer)"+"</SCRIPT>]"

// 2 -->
// You should place a declaration in JS Header of template of the view:
//
// var dates=new Array();

// 3-->
// You should place a column in a view that has a formula: It creates div's with unique names. The code set inner html's of div's according to related
// member of dates array. You should beware of replication conflicts and response documents... I have excluding these documents in the view.
//
// ourdate:=StartDateTime;
// yr:=@Text(@Year(ourdate));
// mnt:=@Text(@Month(ourdate)-1);
// dy:=@Text(@Day(ourdate));
// hr:=@Text(@Hour(ourdate));
// mn:=@Text(@Minute(ourdate));
// sc:=@Text(@Second(ourdate));
// order:=@Text(@DocNumber(""));
//
// "[<div ID='ElapsedTime"+order+"'></DIV><SCRIPT>dates["+order+"]=new Date("+yr+"," +mnt+ "," +dy+ "," + hr+ "," +mn + "," +sc+ ");</SCRIPT>]"


var datenow=(new Date())-dateadjustment;  // computes date of the server.
var i=1;

while (dates[i]!=null)  // Loop until the last doc...
{
var elapsed=0;
elapsed=Math.floor((datenow-dates[i])/60000);  //compute elapsed time in minutes. This can be replaced... division by 1000 gives time in seconds.
showdt="";


if (elapsed>=1440) {
 showdt+=String(Math.floor(elapsed/1440))+"d:";   //compute # of days...
 elapsed=elapsed%1440;
}
if (elapsed>=60) {
 showdt+=String(Math.floor(elapsed/60))+"h:";   // compute # of hours
 elapsed=elapsed%60;
} 
if (elapsed!=0) {
 showdt+=String(Math.floor(elapsed))+"m";   //compute # of minutes
}

document.getElementById("ElapsedTime"+i).innerHTML = "<Center>"+showdt+"</Center>"; //place the element...
i++;
}

counter=setTimeout("showElapsed()",1000);  //I am using this command to refresh the elapsed times each second. I am not using it for large views.
}

</SCRIPT>

<SCRIPT>
showElapsed();   //initiate the function...
</SCRIPT>
  
This was first published in August 2002

Dig deeper on Domino Resources - Part 4

0 comments

Oldest 

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to:

-ADS BY GOOGLE

SearchWinIT

Search400

  • iSeries tutorials

    Search400.com's tutorials provide in-depth information on the iSeries. Our iSeries tutorials address areas you need to know about...

  • V6R1 upgrade planning checklist

    When upgrading to V6R1, make sure your software will be supported, your programs will function and the correct PTFs have been ...

  • Connecting multiple iSeries systems through DDM

    Working with databases over multiple iSeries systems can be simple when remotely connecting logical partitions with distributed ...

SearchEnterpriseLinux

SearchVirtualDataCentre.co.UK

Close