Focal Point
Graph hangs when drill down parameter exceeds certain number of values

This topic can be found at:
https://forums.informationbuilders.com/eve/forums/a/tpc/f/7971057331/m/9001044332

June 20, 2007, 11:28 AM
Frosh
Graph hangs when drill down parameter exceeds certain number of values
I have a problem that causes a graph to hang and locks up the agent until is it manually killed. This is a line graph graph that drills down to a report. The problem occurs when one or more of the drill down parameters exceeds a certain number of values.
For e.g
if a parameter NQ_PHYSICIANSPECIALTY = '~COL~ OR ~DER~ OR ~DIA~ OR ~EMR~ OR ~FM~ OR ~DEN~ OR ~SUR~ OR ~GYN~'
the graph runs fine

if the same parameter has an additional value NQ_PHYSICIANSPECIALTY = '~COL~ OR ~DER~ OR ~DIA~ OR ~EMR~ OR ~FM~ OR ~DEN~ OR ~SUR~ OR ~GYN~ OR ~IM~'
the graph hangs
I am able to reproduce the problem using different parameters with both alpha and numeric values.

Upon running traces to isolate the problem, it was found that, the graph gets stuck in the 'Entering DoTheDrill' step in the trc file which generates the hyperlink string. This causes the graph to hang indefinitely.
This only happens when the drill down is on a across column, I have a similar drill down in the header which does not cause any problems.
I have a case open with IBI, but I was wondering if anyone has experienced a similar problem and found a solution.

Thanks
June 20, 2007, 01:12 PM
dhagen
I doubt that this is the problem, but I had a graph with a query string that was too long (for some browsers). I did the following to convert the drill down link to a post from a query string. Give this a try and see if this helps.

Fex:
SET JSURL=/approot/js/changeatoform_graph.js
GRAPH FILE EMPDATA
SUM SALARY
ACROSS DIV
ON GRAPH SET LOOKGRAPH PIEMULTI
ON GRAPH SET GRAPHEDIT SERVER
ON GRAPH SET BARNUMB OFF
ON GRAPH SET 3D OFF
ON GRAPH SET VZERO ON
ON GRAPH SET GRID ON
ON GRAPH PCHOLD FORMAT PNG
ON GRAPH SET GRAPHSTYLE *
setMarkerDisplay(true);
setConnectLineMarkers(false);
setConnectScatterMarkers(false);
setO1LabelDisplay(true);
setO1AxisSide(0);
setO1MajorGridDisplay(true);
setO1MajorGridStyle(0);
setO1MinorGridDisplay(false);
setAxisAssignment(0,0);
setSeriesType(0,0);
setY1LabelDisplay(true);
setY1AxisSide(0);
setY1MajorGridDisplay(true);
setY1MajorGridStyle(0);
setY1MinorGridDisplay(false);
setTextFormatPreset(getY1Label(),-1);
setTextFormatPattern(getY1Label(),"#.##");
setPieFeelerTextDisplay(1);
setPieLabelDisplay(0);
setTextFormatPreset(getPieSliceLabel(),1);
setRiserBorderMode(1);
setSeriesDefaultTransparentBorderColor(true);
setUseSeriesBorderDefaults(true);
setLegendDisplay(true);
setFontSizeAbsolute(getY1Title(),true);
setFontSizeAbsolute(getY1Label(),true);
setFontSizeAbsolute(getY2Title(),true);
setFontSizeAbsolute(getY2Label(),true);
setFontSizeAbsolute(getO1Title(),true);
setPlace(true);
ENDSTYLE
ON GRAPH SET STYLE *
     PAGESIZE='Letter',
     LEFTMARGIN=0.250000,
     RIGHTMARGIN=0.250000,
     TOPMARGIN=0.250000,
     BOTTOMMARGIN=0.250000,
     SQUEEZE=ON,
     ORIENTATION=PORTRAIT,
$
TYPE=REPORT,
     GRID=OFF,
     FONT='TIMES NEW ROMAN',
     SIZE=10,
     BACKCOLOR='NONE',
     STYLE=NORMAL,
$
TYPE=DATA,
     ACROSSCOLUMN=N1,
     FOCEXEC=divpeople.fex(DIV1=A1),
     TARGET=_self,
$
ENDSTYLE
END  


JS File: changeatoform_graph.js (note that this was put in an app space named "js" above.
function changeAllA() {
     
     var areaList = document.getElementsByTagName("area");
     for (var i = 0; i < areaList.length; i++) {
          areaList[i].href = "JavaScript:submitAasForm(\"" + areaList[i].href + "\",\"" + areaList[i].target + "\");";
     }

}

var submit_form = "submit_form";

function submitAasForm(qs, target) {
     var submit_form = document.getElementById(submit_form);
	submit_form = document.createElement("FORM");
	if(submit_form) {
		submit_form.name = submit_form;
		submit_form.id = submit_form;
		submit_form.target = target;
		document.body.appendChild(submit_form);
	}
     var qsValues = qs.split('?');
     submit_form.action = qsValues[0];
     submit_form.method = "post";
     var keyPairs = qsValues[1].split("&");
     for (i=0; i<keyPairs.length; i++) {
          if (keyPairs[i] != "") {
               var keyValues = keyPairs[i].split("=");
     	     var input = document.createElement("INPUT");
	          if(input)
	          {
		          input.type = "hidden";
		          input.name = keyValues[0];
     		     input.value = keyValues[1];
     		     submit_form.appendChild(input);
     	     }
     	}
     }
     submit_form.submit();
}

if (window.addEventListener) {
	window.addEventListener('load', 'changeAllA', false);
} else if (window.attachEvent) {
	window.attachEvent('onload', changeAllA);
} else {
	alert("not supported");
}  


Hope this helps


"There is no limit to what you can achieve ... if you don’t care who gets the credit." Roger Abbott
June 20, 2007, 04:37 PM
Frosh
Thanks for the tip. I'll give it a whirl!