Tuesday, January 30, 2007

Implementing a navigation path

The Dashboard application, as of I blogged before, contains a navigation path ('kruimelpad' in Dutch).

The navigation path is a series of one or more hyperlinks showing the path of reports a user has run from the Portal via the Dashboard down to the Monthly reports ('Marap') and the Trend graph reports.

The path is presented as one line in the top of the report and looks like this:


Each hyperlink in the navigation path consists of an HTML item object in the report. The '>' signs are just text item objects.

The HTML item contains an anchor tag calling the browser's page history and skipping a number of pages back.

For instance the link to 'Marap' looks like this, calling the history two pages back (-2):

<a href="#" onclick="history.go(-2);return false;">Marap</a>

Why two pages back and not one? Well, when Cognos executes a report, it will show an intermediate page "Your report is running." as long as the report is not ready and you're waiting for it. This page needs to be skipped when navigating back, so I don't go back one page but two.

In case of the prior run reports 'Integraal dashboard' and 'Portal', the same code is used, but instead of -2, the number of pages back is -4 and -6 respectively.

The main drawback of this technique is that Cognos does not show this page when the report can be run very quickly, so in that case the history call should be only one page back. For this potential issue, I have not found a solution yet.

I don't want the report to be re-run, as this is not user friendly in my opinion. By the way, a re-execution of the prior report would be possible using the following code:

<script language="javascript">
function exit()
{
document.formWarpRequest.method.value = 'release';
document.formWarpRequest.m.value = 'portal/report-viewer-release.xts';
setTimeout("document.formWarpRequest.submit()", 1);
}
</script>
<a class="ccOptions" href="javascript:exit()">Marap</a>

If someone knows of a way to elimininate the intermediate "Your report is running." page, please let me know! Cognos offers no solution for this as fas as I know.

10 comments:

Anonymous said...

I'm very pleased with your little peace of javascript-code to re-execute a report. It pointed me to the setTimeout()-function.

We have build a dashboard with user-specific KPI's which are retrieved in page 1 of a report and are now submitted to the database to build the charts on the second page of the report, using the following function-call:

setTimeout("promptButtonFinish();", 0);

Marc said...

Hi Jochem,

That's just what my blog is meant for, thanks for your feedback!

adkrylov said...

Marc, the intermediate "Your report is running..." page can be disabled using primaryWaitThreshold report option. See http://akrylov.blogspot.com/2007/11/reportnet-your-report-is-running-page.html

Marc said...

@adklylov:
Thanks a lot you for your tip, this should help in combination with the browser history back function, making navigation fast as it should be...

As stated in my latter post, I replaced it with the Javascript exit() function, but this re-executes the previous report, and is as such much slower than just browsing back through the history.

Thanks again!

Unknown said...

Hi Marc,

I came across to your blog. It is very interesting and helpful! Dank U wel! I am looking for some solution for my “Your report is running…” problem. What I want to do is to disable the standard Cognos message but to display a sand clock next to the mouse pointer instead of it. May be you have some solution for that?

Alexey

Marc said...

Hi Alexy,

That's a nice suggestion, displaying an hour glass next to the mouse cursor... In a client app this could be done, but in a browser I think it's not possible.

Besides that, the intermediate "report is running" page also gives you the opportunity to change the delivery options, which is a nice extra feature.

Unknown said...

Hi Marc,

Thank you very much for your reply! What are those delivery options? Please let me know where I can read about them?

Marc said...

Well, below the "your report is running" message you should see a link called "Select a delivery method". This will give you some options like "Save the report as a report view" and " Send the report by email" so you won't have to wait on a response in the web session. If you don't see this message, then I think your administrator may have disabled this option (if possible at all).

Unknown said...

These ones I know but do not see much use of them although they might be helpful. I just avoid developing reports that take much time to run. There is a link in one of the previous posts (http://akrylov.blogspot.com/2007/11/reportnet-your-report-is-running-page.html). Unfortunately, it is not available any more. Can you please let me know what is the primaryWaitThreshold option? Sorry to take so much of your time.

Unknown said...

These ones I know but do not see much use of them although they might be helpful. I just avoid developing reports that take much time to run. There is a link in one of the previous posts (http://akrylov.blogspot.com/2007/11/reportnet-your-report-is-running-page.html). Unfortunately, it is not available any more. Can you please let me know what is the primaryWaitThreshold option? Sorry to take so much of your time.