Hitachi Vantara Pentaho Community Forums
Results 1 to 6 of 6

Thread: Dashboard 'Processing' Box in IE

  1. #1

    Default Dashboard 'Processing' Box in IE

    We're trying to run a CDF page that includes a longer running query (xaction component). In Firefox 3.0 when we either use Dashboards.update or the value of the listener is changed, we get the nice processing box (via the jquery blockUI) as expected.

    But under IE7 (yes, I know), the processing box does not display until the very end when the component is finished running, in a quick flash. We've created a 'refresh' button to call the refresh of the component.

    Tried this (where 'change' is the name of the listener on the component):
    Dashboards.fireChange('change', 'x');

    and this:

    $().ajaxStart($.blockUI).ajaxStop($.unblockUI);
    Dashboards.update(metaLayerComponent.componentName);

    and this:

    Dashboards.showProgressIndicator();
    Dashboards.update(metaLayerComponent.componentName);
    Dashboards.hideProgressIndicator();

    ..and these all work great under FF, but not on IE. Is there another way to somehow call the processing box and have IE recognize it while IE is doing it's AJAX business? I'd think that the blockUI stuff would work on top of that, but does not seem to do the trick.

    Thanks for any suggestions you can offer.

  2. #2

    Default

    This is one way that I found that seems to partially work...it puts up the processing box, but under IE, the browser is still locked until it's complete:

    $.blockUI();
    setTimeout(function() {
    Dashboards.update(metaLayerComponent.componentName);
    $.unblockUI();
    }, 200);
    Last edited by kevin.haas@openbi.com; 06-11-2009 at 10:16 PM.

  3. #3
    Join Date
    Jul 2007
    Posts
    2,497

    Default

    I was almost absolutely sure this was working.

    I'll keep it in mind and test it in IE
    Pedro Alves
    Meet us on ##pentaho, a FreeNode irc channel

  4. #4
    Join Date
    Jan 2008
    Posts
    177

    Default

    i've the same problem.....
    But i don't understand this workarond:

    $.blockUI();
    setTimeout(function() {
    Dashboards.update(metaLayerComponent.componentName );
    $.unblockUI();
    }, 200);

    Where i put that? (under function load?)

    Thanks!

  5. #5

    Default

    Even I'm facing the same issue...Will you guys achieved any progress on this...
    I need to show this processing box till the reports gets loaded,also I'm loading both html and pdf contents.
    Any suggestions are greatly appreciated and highly helpful... Thanks in advance...

  6. #6
    Join Date
    Nov 2009
    Posts
    28

    Default

    This seems to be a common problems for alot of people trying to display a animated gif during ajax in IE.
    According to all threads regarding this problem IE frezzes the window during javascript execution.
    The most popular solution is the one kevin suggested to force IE to redraw by doing a setTimeOut. I've tested it by changing the code in Dashboard.js.
    The result is that the blockIU appears in IE but after 1000ms i freezes again at least when I'm testing. Since I'm running everything local I don't now if the freeze is just a behavior due to heavy load on my computer or another value added service within IE.

    Pros: the Users will at least see the blockIU and it's moving for min. 1 sec
    Cons: the blockIU will allways be active for at least 1 sec even if it's not neccesary...

    Here's the original code:

    Code:
     
    Dashboards.fireChange = function(parameter, value) {
    //alert("begin block");
    Dashboards.createAndCleanErrorDiv();
    Dashboards.incrementRunningCalls();
    //alert("Parameter: " + parameter + "; Value: " + value);
    Dashboards.setParameter(parameter, value);
     
    for(var i= 0, len = this.components.length; i < len; i++){
    if($.isArray(this.components[i].listeners)){
    for(var j= 0 ; j < this.components[i].listeners.length; j++){
    if(this.components[i].listeners[j] == parameter) {
    this.update(this.components[i]);
    break;
    }
    //alert("finished parameter " + j)
    }
    }
    }
    //alert("finish block");
    Dashboards.decrementRunningCalls();
    };
    and here's what I did (OK in FF and IE8)

    Code:
     
    Dashboards.fireChange = function(parameter, value) {
    //alert("begin block");
    Dashboards.createAndCleanErrorDiv();
    Dashboards.incrementRunningCalls();
    //alert("Parameter: " + parameter + "; Value: " + value);
    var MyObj = this; 
    setTimeout(function () {Dashboards.updateListeners(MyObj,parameter, value);}, 1000);
     
    };
    Dashboards.updateListeners = function (MyObj, parameter, value) {
    Dashboards.setParameter(parameter, value);
    for(var i= 0, len = MyObj.components.length; i < len; i++){
    if($.isArray(MyObj.components[i].listeners)){
    for(var j= 0 ; j < MyObj.components[i].listeners.length; j++){
    if(MyObj.components[i].listeners[j] == parameter) {
    MyObj.update(MyObj.components[i]);
    break;
    }
    //alert("finished parameter " + j)
    }
    }
    }
    Dashboards.decrementRunningCalls();
    return true
    }
    Also noticed that IE having problems with CDF-DE. When I choose a template the layout structure get reversed in IE (footer as first row and the tree expands strange). Anyone else noticed this?

    Br,
    Andreas

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Privacy Policy | Legal Notices | Safe Harbor Privacy Policy

Copyright © 2005 - 2019 Hitachi Vantara Corporation. All Rights Reserved.