Focal Point
Dynamically build a VISDIS page

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

August 22, 2007, 07:46 AM
<Marcel Naumann>
Dynamically build a VISDIS page
I have a question about Visual Discovery. I want to build a screen where the user first chooses a selection (i.e. date, region, product) from a dropdown list. If the user submits his selection, a Visual Discovery screen should be built.

When I try to build an example, I succeed to HOLD the right data, but the problem is that the ActiveX components wouldn't reload the newest data. I still see the data from the original selection, but the HOLD file is filled with the newest data from the selection.

Is it technical possible to build such a screen, and if yes, can I see an example of the code? Is there a script which controls the ActiveX components to reload/ refresh?

Thanks in advance
August 22, 2007, 09:59 AM
dhagen
Yes, it is possible.

Change the data source for the charts to be a query string instead of the hold file. When you select submit, then use JavaScript to reset the Data (i think) parm of the activex object. For example:
http://server:port/ibi_apps/WFServlet?IBIF_ex=fexname&parm=val ....


So long as your fexname has an ON TABLE PCHOLD FORMAT VISDIS, then you should be ok.

I have an example somewhere, but I'm not sure where it is. I will post it if I can find it.


"There is no limit to what you can achieve ... if you don’t care who gets the credit." Roger Abbott
August 22, 2007, 10:09 AM
<Marcel Naumann>
Great, thanks! I look forward to your example
August 22, 2007, 10:21 AM
dhagen
Please note that this does a couple of more things then just refresh the object. It also changes the graph from a horizonal to vertical bar whenever a specific country is selected. Also, it resubmits based on an onchange event on the dropdown. It should be sufficient for what you are trying to do.

Fex (visdis_cartest.fex):
-* File visdis_cartest.fex
-DEFAULT &COUNTRY = 'FOC_NONE'
TABLE FILE CAR
SUM
     DEALER_COST
     RETAIL_COST
     COMPUTE MARGIN/D12.2 = RETAIL_COST - DEALER_COST;
BY COUNTRY
BY CAR
WHERE COUNTRY CONTAINS '&COUNTRY';
ON TABLE PCHOLD FORMAT VISDIS
ON TABLE SET HTMLCSS ON
END


HTML Layout page (ibisamp/visdis_cartest_show_this.htm):
<!-- Generated by Report Layout Painter -->
<HTML>
<HEAD>
<SCRIPT id=IBI_OptionsScript type=text/javascript>
var rltVersion = "714";
var cgipath = "cgipath";
var ibirls = "ibirls2";
var multidrill = "multidrill";
var mntFormValidate = "mntFormValidate";
var dyncalendar = "dyncalendar";
var olap="olap";
var olappanebase="olappanebase";
var ibixmltree="ibixmltree";
var ibilangtrans="ibilangtrans";
var olapdrill="olapdrill";
var ibiOptions = new Array(cgipath,ibirls,mntFormValidate,ibilangtrans,dyncalendar,olap,olappanebase,olapdrill,multidrill);
</SCRIPT>
 
<SCRIPT id=IBI_nls src="/ibi_html/javaassist/nls.js" type=text/javascript></SCRIPT>
 
<SCRIPT id=IBI_ibigbl src="/ibi_html/javaassist/ibi/html/js/ibigbl.js" type=text/javascript></SCRIPT>
 
<SCRIPT id=IBI_ibigblloadCss type=text/javascript>
ibigblloadCss(null);</SCRIPT>
 
<SCRIPT id=IBI_RelCallBack type=text/javascript>function AdjustChildrenPosition(){
}
</SCRIPT>
<TITLE>HtmlPage
</TITLE>
<SCRIPT id=clientEventHandlersJS type=text/javascript>
function window_onload() {
UpdateData();
// TODO: Add your event handler code here
}
 
function combobox1_onchange(ctrl) {
  country = ctrl.options[ctrl.selectedIndex].value;
  var http =  'http://localhost:8080/ibi_apps/';
  var query = 'WFServlet?IBIF_ex=visdis_cartest&IBIAPP_app=ibisamp&COUNTRY=' + escape(country);
  activex1.Files = http + query;
  if (country == 'FOC_NONE') {
    activex1.Data  = query + ' COUNTRY :Y: RETAIL_COST DEALER_COST';
    activex1.ColorBy = query + ' COUNTRY';
    activex1.Horizontal = 0;
  } else {
    activex1.Data  = query + ' CAR :Y: MARGIN';
    activex1.ColorBy = query + ' CAR';
    activex1.Horizontal = -1;
  }
}
</SCRIPT>
 
<SCRIPT for=window eventname="onload">window.onload = function() { window_onload(); }</SCRIPT>
</HEAD>
<BODY style="OVERFLOW: auto">
     
<OBJECT CLASSID = "clsid:5220cb21-c88d-11cf-b347-00aa00a28331" id=licensemgrobj>
     
<PARAM NAME="LPKPath" VALUE="/ibi_html/visdis/VzLicense.lpk">
</OBJECT>
 
<OBJECT id=activex1 style="Z-INDEX: 1; LEFT: 45px; WIDTH: 725px; POSITION: absolute; TOP: 30px; HEIGHT: 595px" tabIndex=1 height=595 width=725 classid=clsid:601CD7CF-7278-11D1-871D-00A02411D404 name=activex1>
<PARAM NAME="_cx" VALUE="19182">
<PARAM NAME="_cy" VALUE="15743">
<PARAM NAME="Files" VALUE="http://localhost:8080/ibi_apps/WFServlet?IBIF_ex=visdis_cartest&IBIAPP_app=ibisamp">
<PARAM NAME="Data" VALUE="WFServlet?IBIF_ex=visdis_cartest&IBIAPP_app=ibisamp COUNTRY :Y: DEALER_COST RETAIL_COST">
<PARAM NAME="Animate" VALUE="0">
<PARAM NAME="AnimateCommand" VALUE="0">
<PARAM NAME="Horizontal" VALUE="0">
<PARAM NAME="Order" VALUE="0">
<PARAM NAME="SpinePlot" VALUE="0">
<PARAM NAME="StackColors" VALUE="1">
<PARAM NAME="ColorBy" VALUE="WFServlet?IBIF_ex=visdis_cartest&IBIAPP_app=ibisamp COUNTRY">
<PARAM NAME="ColorScale" VALUE="1">
<PARAM NAME="ContinuousIndicate" VALUE="0">
<PARAM NAME="SecondaryOrder" VALUE="0">
<PARAM NAME="ShowUnselected" VALUE="-1">
<PARAM NAME="LabelMode" VALUE="0">
<PARAM NAME="LabelledValues" VALUE="">
<PARAM NAME="LineMode" VALUE="0">
<PARAM NAME="AllowZoom" VALUE="-1">
<PARAM NAME="LabelSpace" VALUE="-1">
<PARAM NAME="ZoomXScale" VALUE="1">
<PARAM NAME="PanX" VALUE="0">
<PARAM NAME="ZoomYScale" VALUE="1">
<PARAM NAME="PanY" VALUE="0">
<PARAM NAME="ClusterColors" VALUE="0">
<PARAM NAME="GoalLines" VALUE="">
<PARAM NAME="BrowserComponent" VALUE="VzLibrary.BrowserTweak">
<PARAM NAME="BrowserScript" VALUE="">
<PARAM NAME="GraphicsStyle" VALUE="2">
<PARAM NAME="MissingLabel" VALUE="

<NULL>">
<PARAM NAME="ShowMissing" VALUE="0">
<PARAM NAME="Average" VALUE="">
<PARAM NAME="CalcEquation" VALUE="">
<PARAM NAME="CalcOption" VALUE="0">
<PARAM NAME="ModifyWeightName" VALUE="0">
<PARAM NAME="VwAxisFont" VALUE="SanSerif-Arial-14-Bold">
<PARAM NAME="VwLabelFont" VALUE="SanSerif-Arial-12">
<PARAM NAME="VwTitleFont" VALUE="SanSerif-Arial-14-Bold">
<PARAM NAME="FocusFormat" VALUE="'%1%\n%2%=%3% (%4%%%)\nSelected=%5% (%6%%%)' *Category* *WeightName* *Weight* *%Weight* *SelectedWeight* *%Selected*">
<PARAM NAME="TitleText" VALUE="DEALER_COST, etc. per CAR">
<PARAM NAME="ShowTitle" VALUE="-1">
<PARAM NAME="XAxisText" VALUE="CAR">
<PARAM NAME="YAxisText" VALUE="DEALER_COST:RETAIL_COST">
<PARAM NAME="PoolWeights" VALUE="0">
</OBJECT>  
<SELECT language=javascript id=combobox1 style="Z-INDEX: 3; LEFT: 805px; WIDTH: 145px; POSITION: absolute; TOP: 170px" tabIndex=3 onchange=combobox1_onchange(this) name=combobox1 operation="NONE"> 
<OPTION value=FOC_NONE selected displaytext="All">All
</OPTION> 
<OPTION value=ENGLAND displaytext="ENGLAND">ENGLAND
</OPTION> 
<OPTION value=JAPAN displaytext="JAPAN">JAPAN
</OPTION> 
<OPTION value="W GERMANY" displaytext="W GERMANY">W GERMANY
</OPTION> 
<OPTION value=ITALY displaytext="ITALY">ITALY
</OPTION> 
<OPTION value=FRANCE displaytext="FRANCE">FRANCE
</OPTION>
</SELECT> 
<INPUT id=ibiapp_app style="LEFT: -100px; POSITION: absolute; TOP: -100px" type=hidden value=ibisamp name=ibiapp_app>
</BODY>
</HTML>


Good luck!


"There is no limit to what you can achieve ... if you don’t care who gets the credit." Roger Abbott
August 22, 2007, 10:37 AM
<Marcel Naumann>
This works! Thank you very much! Also, I like the auto-submit action in this script, thanks again!