Focal Point
[CLOSED] Need help/advice for long select lists (drop-down lists)

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

December 29, 2006, 03:07 PM
Trav
[CLOSED] Need help/advice for long select lists (drop-down lists)
I have a very long list that I need to allow the user to pick from (be it a dropdown list or something else). I know the first and most obvious advice should be: use shorter lists. But just humor me for a moment. I've done some searching, but haven't really found anything promising yet...

Background: I'm building a report that will be highly parameterized. I'm creating an HTML layout page for the parameters that will be separate from the report output. On that layout page I have several dropdowns, some of which are chained together. It's already starting to slow down because of the number of drop-downs, chains, and values in the dropdowns. But now I need to add another dropdown that contains customers/counterparties. Well, we have over 7000 of them.

Problem: Adding the customer dropdown makes the HTML layout literally take several minutes to load. However, I have to have a way for the user to pick from our list of customers. In fact, it's entirely possible the user might want to multi-select from the customer list.

Options that I see at the moment:


Personally, I like the first option the best, but I'm open to suggestions from you all. In fact I might want to combine several options together for ultimate flexibility. Specific examples would be great -- keep in mind the goal here is a relatively fast loading page (5-10 seconds MAX). Any advice you can give on what you've done in similar situations would be MUCH appreciated!!

Thanks!!

This message has been edited. Last edited by: Kerry,



Production: 7.6.6 WF Server  <=>  7.6.6 WF Client  <=>  7.6.6 Dev Studio
Testing: <none>
Using MRE & BID.  Connected to MS SQL Server 2005
Output Types: HTML, Excel, PDF
December 29, 2006, 04:12 PM
dhagen
This is a very simple example that you can use to help with your problem. There is a list box, and an input box that is used to filter the final output for the dropdown box. This uses the GGORDER database that should be installed with WebFOCUS. This uses a simple ajax call to request the "filtered" drop down list.

html
<!-- 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>
 
// Initialize XMLHttpRequest object (ajax).
var xmlHttp = false;
 
try {
  xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
  try {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (e2) {
    xmlHttp = false;
  }
}
 
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
  xmlHttp = new XMLHttpRequest();
}
 
function callServer(searchString) {
 // Build the URL to connect to
 var url = "/ibi_apps/WFServlet?IBIF_ex=ajax_fex_to_populate_ddbox&IBIAPP_app=ibisamp&SEARCH=" + escape(searchString);
 
 // Open a connection to the server
 xmlHttp.open("GET", url, true);
 
 // Setup a function for the server to run when it's done
 xmlHttp.onreadystatechange = updatePage;
 
 // Send the request
 xmlHttp.send(null);
}
 
 
function window_onload() {
UpdateData();
// TODO: Add your event handler code here
}
 
function button1_OnClick(ctrl) {
// TODO: Add your event handler code here
OnExecute(ctrl)
}
 
function button2_onclick(ctrl) {
 //alert(document.getElementById("edit1").value);
    // call the ajax execute module with the value of the search box
 if (document.getElementById("edit1").value != "") {
  callServer(document.getElementById("edit1").value);
 }
}
 
function updatePage() {
 if (xmlHttp.readyState == 4) {
     if (xmlHttp.status == 200 ) {
         var responseXML = xmlHttp.responseXML;
         var trs = responseXML.getElementsByTagName("tr");
   document.getElementById("combobox1").options.length = 0;
 
   for (r = 0; r < trs.length; r++) {
    var tds = trs[r].getElementsByTagName("td");
    document.getElementById("combobox1").options[r] = new Option(tds[1].firstChild.nodeValue, tds[0].firstChild.nodeValue);
   }
  }
 }
}
 
</SCRIPT>
 
<SCRIPT for=window eventname="onload">window.onload = function() { window_onload(); }</SCRIPT>
</HEAD>
<BODY language=javascript style="OVERFLOW: auto">
<INPUT language=javascript id=button1 style="Z-INDEX: 1; LEFT: 300px; WIDTH: 100px; POSITION: absolute; TOP: 145px; HEIGHT: 30px" onclick=button1_OnClick(this) tabIndex=1 type=button value="Run Report" name=button1 requests_list="0">
<SPAN id=ITEM1 style="Z-INDEX: 2; LEFT: 35px; WIDTH: 64px; POSITION: absolute; TOP: 35px; HEIGHT: 16px" tabIndex=2>ORDER
</SPAN>
<SELECT id=combobox1 style="Z-INDEX: 3; LEFT: 35px; WIDTH: 205px; POSITION: absolute; TOP: 60px" tabIndex=3 size=1 name=ORDER sourcetype="typeMaster" datafieldtype="INTIGER" datatype="0" requiredfield="87624000" datasource displayfield datafield operation="NONE" accept="0" addalloption="0" labelid="ITEM1">
</SELECT>
<SPAN id=ITEM2 style="Z-INDEX: 4; LEFT: 275px; WIDTH: 70px; POSITION: absolute; TOP: 30px; HEIGHT: 16px" tabIndex=4>SEARCH
</SPAN>
<INPUT id=edit1 style="Z-INDEX: 5; LEFT: 275px; POSITION: absolute; TOP: 60px" tabIndex=5 hspace=0 accept=0 name=SEARCH value=101 sourcetype="typeMaster" datafieldtype="INTIGER" datatype="0" requiredfield="87624000" datasource displayfield datafield operation="NONE" addalloption="0" labelid="ITEM2">
<INPUT language=javascript id=button2 style="Z-INDEX: 6; LEFT: 435px; WIDTH: 100px; POSITION: absolute; TOP: 55px; HEIGHT: 30px" onclick=button2_onclick(this) tabIndex=6 type=button value="Filter List" name=button2>
<INPUT id=ibiapp_app style="LEFT: -100px; POSITION: absolute; TOP: -100px" type=hidden value=ibisamp name=ibiapp_app>
<xml id=ibi_requests>
<requests>
 
<request requestid="0" sourcetype="typeFex" targettype="1" targetname="_blank" ibif_ex="ajax_fex_report.fex" ibic_server="EDASERVE" ibiapp_app="ibisamp">
 
<variables>
 
<variable field="ORDER" file="ggorder.mas" desc="ORDER" datatype="0" operation="" default="10" name="ORDER" accept="0" type="default" select="0" controltype="8">
 
</variable>
 
<variable field="SEARCH" file="ggorder.mas" desc="SEARCH" datatype="0" operation="" default="10" name="SEARCH" accept="0" type="default" select="0" controltype="7">
 
</variable>
 
</variables>
 
</request>
</requests>
</xml>
</BODY>
</HTML>  


ajax_fex_to_populate_ddbox.fex
  
-* File ajax_fex_to_populate_ddbox.fex
-DEFAULT &SEARCH = '10';
DEFINE FILE GGORDER
AORDERNO/A6=EDIT(ORDER_NUMBER);
END
TABLE FILE GGORDER
SUM
     MAX.AORDERNO
BY ORDER_NUMBER
WHERE AORDERNO CONTAINS '&SEARCH';
ON TABLE PCHOLD FORMAT XML
END


Modify this to do whatever you like.

Regards


"There is no limit to what you can achieve ... if you don’t care who gets the credit." Roger Abbott
December 29, 2006, 04:41 PM
Trav
dhagen, that gives me a good start. I wasn't thinking about using an ajax method here, so that's great. I may just use your idea to make my first option a reality and not use an actual 'chain' but rather populate that list via an ajax request to another report...

ideas ideas...
thanks!



Production: 7.6.6 WF Server  <=>  7.6.6 WF Client  <=>  7.6.6 Dev Studio
Testing: <none>
Using MRE & BID.  Connected to MS SQL Server 2005
Output Types: HTML, Excel, PDF
December 29, 2006, 09:38 PM
susannah
Trav, i use option lists that are pre-made and sitting out on my server, and my launch pages are .asp , so i use
<!-- #include file="list_INV/list_div.txt" -->

and in the making of my option lists, i group them using the OPTGROUP LABEL="GROUPNAME" tag
so that the long lists (mine are 2k max, not 7k like yours) have some structure to them.
Not as cool as dhagen's ajax solution, but fast to load.




In Focus since 1979///7706m/5 ;wintel 2008/64;OAM security; Oracle db, ///MRE/BID
June 30, 2008, 02:57 PM
Norb Eckert
Hi Trav,

Nice to see you at Summit this year.

I have a need to effectively handle a drop-down list with 3900 entries of customer accounts. Were you ever able to come up with a decent solution to this problem? Incremental filtering would be best I think but I that is beyond my abilities. I'd like to hear how you dealt with this.

Nice presentation at Summit, BTW. I'm planning on using your grouping concepts.

Thanks,

Norb


prod:7.6.9, win2k3 mre, caster, bid, devstudio 7.6.9
June 30, 2008, 04:21 PM
Trav
Thanks Norb -- I appreciate the feedback.

I ended up using an AJAX solution very similar to what dhagen suggested. It worked out very well because in my case, if the user didn't need to select a customer -- if they were going to select "ALL" -- then they wouldn't have to wait on the list to populate. Secondly, I was able to filter that list down considerably by them picking other options first and then one more little button to retrieve the other selection boxes. It's been awhile since I looked at dhagen's example in detail, but at quick glance, I think his pretty much works in the same manner as mine does.



Production: 7.6.6 WF Server  <=>  7.6.6 WF Client  <=>  7.6.6 Dev Studio
Testing: <none>
Using MRE & BID.  Connected to MS SQL Server 2005
Output Types: HTML, Excel, PDF
June 30, 2008, 05:00 PM
Norb Eckert
Thanks Trav.

I'll take a closer look at dhagen's example and see if I can get it working. Right now the perfomance is poor and so I do need an alternative.

See ya,

Norb


prod:7.6.9, win2k3 mre, caster, bid, devstudio 7.6.9
January 09, 2009, 02:03 PM
DivisionByZero
I noticed that this is an older thread but it is not marked as SOLVED yet. I saw this post while I was trying to do the same thing, reduce the listbox response time. You can see the thread at: Reusing an XML hold file between Web Pages


Local Development Environment:
WF 7.6.10 on Vista Ultimate 64-bit Edition
Client Environments:
WF 7.1.3, 7.6.4, and 7.6.10 on various Windows Server platforms using servlet implementation over SSL
Oracle and MSSQL DBs
Output formats: HTML, PDF, Excel 2000, XML
April 16, 2009, 07:41 AM
Mike Johnson
mike.johnson@dot.state.fl.us
I am trying to get dhagen's example working but so far no luck. I'm running 7.1.6 MRE enviroment.

I think the problem is with this line.
 var url = "/ibi_apps/WFServlet?IBIF_ex=ajax_fex_to_populate_ddbox&IBIAPP_app=ibisamp&SEARCH=" + escape(searchString);

 


I'm not getting any errors but the dropdown is not being populated when I click on the filter list button.

can anyone provide me with a working example or tell me what I need to do to get dhagen's working: Step by step if posible. Thanks
April 17, 2009, 02:41 PM
gregv
Mike,

Two things to try:
1. Put an alert in updatePage function to check status and readyState.
2. Change call below to 'false', so the call is synchronous:
xmlHttp.open("GET", url, false);

There may be other considerations if you are using Firefox?

Good luck.



Greg



current client: WF 8.1.05 & 8.2 - Windows 7 64bit - Tomcat 7 - MRE / BID - IE11

local: WF 8.2 - Windows 7 64bit - Tomcat 6 - MRE / BID - FOCUS - IE11

PMF 8
April 17, 2009, 03:23 PM
Mike Johnson
Greg, I made the change you requested. Not sure how to check status and readyState?
Changing to false had no effect.
April 19, 2009, 05:49 PM
Waz
Mike, you have IBIAPP_app set to ibisamp, this will set your path the ibisamp and baseapp, is your fex in one of these directories ?


Waz...

Prod:WebFOCUS 7.6.10/8.1.04Upgrade:WebFOCUS 8.2.07OS:LinuxOutputs:HTML, PDF, Excel, PPT
In Focus since 1984
Pity the lost knowledge of an old programmer!

April 20, 2009, 06:18 AM
Danny-SRL
Mike,

Going back to Trav's original question:
quote:

There are some dependencies that exist so that if a user picks a business first, it might limit the list of customers. The business is a multi-select list, btw. In talking with the customer, they expressed this as a viable option for them. So that would be a viable "chain", but I would only want the customer list retrieved AFTER the user picks a business first. But how would I accomplish that?


Any way to "prefilter" the customer list based on a text box? In other words, if they know the customer starts with "St", they could type in an "St" into a text box, hit a "Search" button, and produce the list of customers that start with "St". I could then prohibit them from leaving it blank and the assumption would be that it would only retrieve those results when they hit that "Search" button.

We do this very easily with our WrapApp WebFocus based add-on:
1. A second listbox can be populated after values have been selected in a first listbox, using a fex.
2. Additionally, a listbox can be populated after the user enters a string in a textbox. The listbox is filtered using the value entered also with the help of a fex, so the string can be looked for at the beginning, middle or end of the values that will populate the listbox.
3. Both techniques can be combined.

Can this be useful for you?


Daniel
In Focus since 1982
wf 8.202M/Win10/IIS/SSA - WrapApp Front End for WF

April 20, 2009, 07:23 AM
Mike Johnson
I made the following change to the server call. No change. Do you see anything wrong with this statement.

 var url = "http://dotscomrep1.dot.state.fl.us/ibi_apps/WFServlet?IBIF_ex=ajax_fex&IBIMR_folder=#dwrreportsce&SEARCH=" + escape(searchString);
  


My report is found in baseapp in the following folder dwrreportsce
April 20, 2009, 07:30 AM
Mike Johnson
Daniel, I not able to buy this WrapApp, Also it looks like it's used to build self service apps. I not able to do this. I'm only able to work within the MRE enviroment. I publish my reports to a dashboard. Thanks for the info though.
April 20, 2009, 10:14 AM
Tony A
Mike,

Firstly understand how the example is constructed and how the location of the components are dictated by the URL.

In your URL you have IBIF_ex which intimates that the location of the fex required is in the applications folders, you then give an IBIMR_folder name. You need to resolve your conflict as per your requirements (either use apps folders or MRE).

If you choose completely MRE then you will need a few more variables (search the forum for these, there are many mentions) or, if you want to get this running quickly so that you can see how it works then place the fex in an apps folder and change the IBIMR_folder to IBIAPP_app and the value to the folder in which you have placed the fex.

One of our fairly newish A/Ps took this verbatim and got it running in a little under five minutes - because he didn't try and mix Apps and MRE.

T



In FOCUS
since 1986
WebFOCUS Server 8.2.01M, thru 8.2.07 on Windows Svr 2008 R2  
WebFOCUS App Studio 8.2.06 standalone on Windows 10 
April 20, 2009, 10:25 AM
gregv
Mike,

To use AJAX in MRE you need to modify the url further.

The fex to populate the dd list must be in MRE. Here is an example:

var url ="/ibi_apps/WFServlet?IBIMR_action=MR_RUN_FEX&IBIMR_sub_action=MR_STD_REPORT&IBIMR_fex=app/ajax_fex.fex&IBIMR_folder=#dwrreportsce&IBIMR_domain={your_domain}/{your_domain}.htm&SEARCH=" + searchString ;

{your_domain} above is the name of the domain the your folder is in with your fex.

As you can see, I don't 'escape' my search string but but I've found that it works either way.

To add an alert in your updatePage function and see readyState and status, add the following line as the first line in the function:
alert("readyState="+readyState+" status="+status);

This alert will also let you know if you ever get to this function.

Another test is to run you ajax.fex as a standalone procedure with a test search string to see if you get what you expect.

IHTH.



Greg



current client: WF 8.1.05 & 8.2 - Windows 7 64bit - Tomcat 7 - MRE / BID - IE11

local: WF 8.2 - Windows 7 64bit - Tomcat 6 - MRE / BID - FOCUS - IE11

PMF 8
April 20, 2009, 11:24 AM
dhagen
I noticed that I had something to do with this thread, so I feel that I should add something here. This thread is 2 1/2 years ago, and I would not do it today the way I did it back then. Use a javascript framework and save yourselves a lot of trouble. I use PrototypeJS that you can get at www.prototypejs.org. Download the js file and put it somewhere in your environment ... I put it in the /apps/baseapp/js directory. When you build a HTML file, then you just need to include the /approot/baseapp/js/prototype.xxx.js file to make you JS and AJAX call simple and sweet. You will still need to know the required parameters for calling a MRE fex (as noted by gregv).

A newer MRE example:

Fex file to get list of countries in default domain (app/z_country_list.fex):
TABLE FILE CAR
PRINT
     COUNTRY
BY COUNTRY
ON TABLE PCHOLD FORMAT XML
END
 


The HTML (app/z_country_launchpage.htm):
<!-- Generated by Report Layout Painter -->
<HTML>
<HEAD>
<META id=UTF-8 http-equiv=Content-Type content="text/html; charset=UTF-8">
<SCRIPT id=IBI_RelCallBack type=text/javascript>function AdjustChildrenPosition(){
}
</SCRIPT>

<SCRIPT id=IBI_OptionsScript type=text/javascript>
var rltVersion = "764";
var cgipath = "cgipath";
var ibirls = "ibirls2";

var rltdyncalendar = "rltdyncalendar";
var gmap = "ibigmap";
var olap="olap";
var olappanebase="olappanebase";
var olapdrill="olapdrill";

var ibixmltree="ibixmltree";

var ibiOptions = new Array(cgipath,ibirls);
</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>
<TITLE>HtmlPage</TITLE>
<SCRIPT id=clientEventHandlersJS type=text/javascript>
//Begin function window_onload
function window_onload() {
 
UpdateData();
 
// TODO: Add your event handler code here
//add onInitialUpdate() function to make changes before initial run of the reports

new Ajax.Request("/ibi_apps/WFServlet", { 	
	asynchronous: false,
	method: 'post',
        parameters: { // set all the required paramaters.
    	        IBIAPP_app: 'baseapp', 
		IBIMR_sub_action: 'MR_STD_REPORT',
		IBIMR_folder: '#testxi80hv1e',
		IBIMR_action: 'MR_RUN_FEX',
		IBIMR_domain: 'untitled/untitled.htm',
		IBIMR_fex: 'app/z_country_list.fex'
	},
        onSuccess: function(_request) {
		$A(_request.responseXML.getElementsByTagName("tr")).each( function(row) { 
			try {
				$('combobox1').add(new Option(row.childNodes(1).text, row.childNodes(0).text), null); // For all other browsers other than IE.
			} catch (e) {
				$('combobox1').add(new Option(row.childNodes(1).text, row.childNodes(0).text)); // For IE browsers ... cause it's special.
			}
		});
    }
});

}

//End function window_onload

//Begin function button1_OnClick
function button1_OnClick(ctrl) {
// TODO: Add your event handler code here
OnExecute(ctrl)
}
//End function button1_OnClick
</SCRIPT>

<SCRIPT for=window eventname="onload">window.onload = function() { window_onload(); }</SCRIPT>

<SCRIPT src="http://localhost:8080/approot/baseapp/js/prototype-1.6.0.2.js" type=text/javascript></SCRIPT>
</HEAD>
<BODY style="OVERFLOW: auto" edaconnectionrequired="true">
<INPUT language=javascript id=button1 style="Z-INDEX: 1; LEFT: 255px; WIDTH: 105px; POSITION: absolute; TOP: 30px; HEIGHT: 35px"
 onclick=button1_OnClick(this) tabIndex=1 type=button value="Run Report" name=button1 requests_list="0"> 
<SPAN id=text1 style="Z-INDEX: 2; LEFT: 20px; WIDTH: 82px; POSITION: absolute; TOP: 20px; HEIGHT: 16px" tabIndex=2>COUNTRY</SPAN> 
<SELECT id=combobox1 style="Z-INDEX: 3; LEFT: 20px; WIDTH: 210px; POSITION: absolute; TOP: 45px" tabIndex=3 size=1 name=COUNTRY sourcetype="typeMaster" 
datatype="0" requiredfield="31111792" boundtovariable="1" datasource selectedvalue operation="NONE" accept="0" addalloption="0" labelid="text1" 
datafield="COUNTRY" displayfield="COUNTRY" ibiformat="A10" dfformat="A10"></SELECT> 
<INPUT id=layoutinfo style="LEFT: -100px; POSITION: absolute; TOP: -100px" type=hidden inputcontrolids="combobox1">
<INPUT id=IBIMR_domain style="LEFT: -100px; POSITION: absolute; TOP: -100px" type=hidden value=untitled/untitled.htm name=IBIMR_domain>
<INPUT id=IBIMR_folder style="LEFT: -100px; POSITION: absolute; TOP: -100px" type=hidden value=#testxi80hv1e name=IBIMR_folder>
<INPUT id=ibif_ex style="LEFT: -100px; POSITION: absolute; TOP: -100px" type=hidden value=app/z_country_launchpage.htm name=ibif_ex>
<INPUT id=ibiapp_app style="LEFT: -100px; POSITION: absolute; TOP: -100px" type=hidden name=ibiapp_app ismre="1">
<INPUT id=ibic_server style="LEFT: -100px; POSITION: absolute; TOP: -100px" type=hidden value=EDASERVE name=ibic_server>
<xml id=ibi_requests>
<script>
	
<requests>
		
<request requestid="0" sourcetype="typeFex" targettype="window" targetname="_blank" ibif_ex="app/z_car_report.fex" IBIMR_domain="untitled/untitled.htm" 
IBIMR_folder="#testxi80hv1e" IBIMR_sub_action="MR_STD_REPORT" activereport="0" reportcolumns="" ibiapp_app="">
			
<variables>
				
<variable parametercreatedinreslay="0" displayfield="COUNTRY" format="" field="COUNTRY" file="car.mas" desc="COUNTRY" datatype="0" operation="" default="" 
name="COUNTRY" textvarname="" accept="0" type="unresolved" select="0" min="" max="" controltype="8" create="1"></variable></variables></request></requests></script>
</xml></BODY>
<SCRIPT id=IBI_loader type=text/javascript>
doBeforeLoad();
</SCRIPT>
</HTML>



The new Ajax.Request() object in the onload function is all that is now required. As you can see there is far less code required to do what you need, and setting the required parameters is far easier to set and the object takes care of the build for you.

Hope this helps.

This message has been edited. Last edited by: dhagen,


"There is no limit to what you can achieve ... if you don’t care who gets the credit." Roger Abbott
April 20, 2009, 11:47 AM
bug
Ajax security question:

How to prevent user from typing the following webfocus URL in the IE address bar, tweak the parameters, and get results back that they are not supposed to see?

"/ibi_apps/WFServlet?IBIF_ex=ajax_fex_to_populate_ddbox&IBIAPP_app=ibisamp&SEARCH="


7.66 and 7.704
System: Windows / AIX / Linux
Output: Mostly HTML, with some PDF, Excel and Lotus(!)
April 20, 2009, 02:52 PM
Mike Johnson
Thanks Greg. It is now working.
April 20, 2009, 02:54 PM
Danny-SRL
Mike,
WrapApp is not only for Self-Service. WrapApp forms can be used in the Dashboard thru our API. We have already done this.


Daniel
In Focus since 1982
wf 8.202M/Win10/IIS/SSA - WrapApp Front End for WF

April 20, 2009, 02:56 PM
Mike Johnson
dhagen, Thanks for the update. I will give this a try. I don't have access to the server but I'm sure I can have them place this js file there for me. I have another issue with a report I need to correct first and then I will give this method a try. Will update post sometime next week. Again thanks.
April 20, 2009, 02:58 PM
Mike Johnson
quote:
Originally posted by Danny-SRL:
Mike,
WrapApp is not only for Self-Service. WrapApp forms can be used in the Dashboard thru our API. We have already done this.


Budget is very tight. For now I will need to make use with what I have. I will keep it on my list of Items to look at. Thanks for info.
April 20, 2009, 03:01 PM
Mike Johnson
quote:
Originally posted by bug:
Ajax security question:

How to prevent user from typing the following webfocus URL in the IE address bar, tweak the parameters, and get results back that they are not supposed to see?

"/ibi_apps/WFServlet?IBIF_ex=ajax_fex_to_populate_ddbox&IBIAPP_app=ibisamp&SEARCH="


bug, Not sure how to solve this problem. but for me it's not a problem. Our reports are intranet only and most of our user don't have that skill set.
April 20, 2009, 04:50 PM
Waz
To stop the URL being displayed in the address bar, use POST instead of GET for the web call.

If you are talking about ajax, you should probably use xmlhttp requests, that hide it completely from the browser.


Waz...

Prod:WebFOCUS 7.6.10/8.1.04Upgrade:WebFOCUS 8.2.07OS:LinuxOutputs:HTML, PDF, Excel, PPT
In Focus since 1984
Pity the lost knowledge of an old programmer!

April 21, 2009, 06:56 AM
Mike Johnson
Thanks. You guys are a big help. Perhaps one day I will be able to provide help to others as you do now.
April 22, 2009, 10:09 AM
Danny-SRL
Mike,

Could you please update your signature? I would like to know on what platform you are running.
Thanks,


Daniel
In Focus since 1982
wf 8.202M/Win10/IIS/SSA - WrapApp Front End for WF

April 22, 2009, 10:29 AM
Mike Johnson
Done.