I was wondering if someone else can test this and see if it spawns 2 agents when you change the date. We have a dashboard that defaults current date when it is opened and runs a single agent, but when you change the date it spawns 2 agents.
I have a case open but they are not able to repro in their setup. I am on 7.7.03. Here is a simple example using the CAR file.
HTML:
<!-- Generated by Report Layout Painter -->
<HTML>
<HEAD>
<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,rltdyncalendar);
</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>Daily Reports</TITLE>
<SCRIPT id=clientEventHandlersJS type=text/javascript>
<!-- functions are in order so called functions are below the calling function -->
var NoMsg;
var BodyOnloadParmdate;
var CurrentParmdate;
function window_onload(prevDate) {
CurrentParmdate = document.forms["form2"].PARMDATE.value;
//alert('window_onload - CurrentParmdate is ' + CurrentParmdate);
//alert('window_onload - BodyOnloadParmdate is ' + BodyOnloadParmdate);
if (CurrentParmdate == 'MISSING')
{
valid = false;
}
else
{
NoMsg = true;
valid = CheckDate(CurrentParmdate);
}
if (valid)
{
// do nothing, just keep using current parmdate
//alert('window_onload - using current parmdate of ' + CurrentParmdate );
}
else
{
//alert('window_onload - CurrentParmdate ' + CurrentParmdate + ' is invalid, trying BodyOnloadParmdate of ' + BodyOnloadParmdate);
if (BodyOnloadParmdate == 'MISSING')
{
valid = false;
//alert('window_onload - BodyOnloadParmdate is MISSING' );
}
else
{
//alert('window_onload - BodyOnloadParmdate is not MISSING, its ' + BodyOnloadParmdate );
NoMsg = true;
valid = CheckDate(BodyOnloadParmdate);
}
if (valid)
{
// populate parmdate with the BodyOnload parmdate
document.forms["form2"].PARMDATE.value = BodyOnloadParmdate;
//alert('window_onload - using bodyonload parmdate of ' + BodyOnloadParmdate );
}
else
{
// get the cookie parmdate
var DateCookie = GetCookie('PARMDATED');
//alert('window_onload - PARMDATED returned as ' + DateCookie);
if (DateCookie != "NONE")
{
//alert('window_onload - using the cookie value of ' + DateCookie );
document.forms["form2"].PARMDATE.value = DateCookie;
}
else
{
//alert('window_onload - with no cookie, defaulting to todays date');
var DisplayDate = GetYesterday();
document.forms["form2"].PARMDATE.value = DisplayDate;
}
}
}
UpdateData();
}
function SearchLevel_onchange(ctrl) {
//alert('SearchLevel_onchange');
var LevelRow = document.forms["form2"].SearchLevel.selectedIndex;
<!-- do not show the search value drop if SearchLevel drop at row 1, aka selected index 0, "-Select-" -->
if (LevelRow == 0)
{
SearchLevelValDrop.style.visibility='hidden';
}
else
{
SearchLevelValDrop.style.visibility='visible';
// pre-load the Search Level Value dropdown - attvariables="HIERID;SearchLevel;"
var dyndrop = document.getElementById("SearchLevelVal");
populateDynamicCtrl(dyndrop);
}
}
function SearchLevelVal_onchange(ctrl) {
//alert('SearchLevelVal_onchange');
var ValRow = document.forms["form2"].SearchLevelVal.selectedIndex;
<!-- do not submit the form if SearchLevelVal drop at row 1, aka selected index 0, "-Select-" -->
<!-- there's probably not going to need to be a way to return to level at before started the search -->
if (ValRow == 0)
{
<!-- do nothing -->
}
else
{
doSubmit(form2);
}
}
function doSubmit(formname) {
NoMsg = false;
valid = true;
if (valid)
valid = CheckDate(document.forms["form2"].PARMDATE.value);
if (valid)
{
SetCookie();
// 2010-11-02 xx - solution from IBI, dont use updatedata, use onexecute
doEx(document.forms["form2"]);
}
}
function doEx(ctrl){
OnExecute(ctrl);
}
function SetCookie() {
<!-- expire cookie tomorrow at 2AM -->
var tempDateTime = new Date();
tempDateTime.setDate(tempDateTime.getDate()+1);
var JustDate = tempDateTime.toDateString();
var MidnightString = JustDate + " 01:59:59";
tempDateTime = Date.parse(MidnightString);
var tempDateTime2 = new Date(tempDateTime);
var expireDate = new Date();
expireDate = tempDateTime2.toGMTString();
document.cookie = "PARMDATED=" + document.forms["form2"].PARMDATE.value + "; expires=" + expireDate + "; ";
//alert('SetCookie - changed PARMDATED cookie to ' + document.forms["form2"].PARMDATE.value + " expires at " + expireDate );
var BodyOnloadParmdate = document.forms["form2"].PARMDATE.value;
}
function DefaultDtText_onclick(ctrl) {
var DisplayDate = GetYesterday();
document.forms["form2"].PARMDATE.value = DisplayDate;
}
function SubmitButton_onmouseover(ctrl) {
NoMsg = false;
//alert('SubmitButton_onmouseover - calling checkDate');
valid = checkDate(document.forms["form2"].PARMDATE.value);
if (valid)
{
document.getElementById('form2Submit').disabled = false;
}
else
{
document.getElementById('form2Submit').disabled = true;
}
}
function CheckDate(date) {
valid = true;
var alertmsg = '' ;
test = document.forms["form2"].PARMDATE.value;
<!-- ensure in mm/dd/yyyy format -->
if ((date.length != 10) || (date.substr(2,1) != '/') || (date.substr(5,1) != '/'))
{
valid = false;
alertmsg = 'Invalid Date ' + test + ' - format must be mm/dd/yyyy';
}
<!-- ensure a valid date -->
if (valid)
{
var MM = date.substr(0,2);
var DD = date.substr(3,2);
var YYYY = date.substr(6,4);
valid = IsDate(YYYY, MM, DD);
if (valid)
{
<!-- do nothing -->
}
else
{
alertmsg = 'Invalid Date ' + test + ' - format must be mm/dd/yyyy';
}
}
<!-- ensure not future date -->
if (valid)
{
<!-- get today's date and convert to milliseconds using getTime to compare to newly selected date -->
var Today = new Date();
var TodayCheck = Today.getTime();
<!-- convert PARMDATE to milliseconds using getTime to compare to today's date -->
var NewDate = new Date(YYYY, MM - 1, DD); //Month is 0-11 in JavaScript
var NewDateCheck = NewDate.getTime();
<!-- check for a future date -->
if (NewDateCheck > TodayCheck)
{
alertmsg = 'Invalid Date ' + test + ' - date selected is in the future';
valid = false;
}
}
<!-- ensure not before 1st fiscal day of 2009 (12/29/2008) -->
if (valid)
{
<!-- convert 12/29/2008 to milliseconds using getTime to compare to newly selected date -->
var OldDate = new Date(2008, 11, 29);
var OldDateCheck = OldDate.getTime();
<!-- convert PARMDATE to milliseconds using getTime to compare to today's date -->
var NewDate = new Date(YYYY, MM - 1, DD); //Month is 0-11 in JavaScript
var NewDateCheck = NewDate.getTime();
<!-- check for a future date -->
if (NewDateCheck < OldDateCheck)
{
//alertmsg = 'No data available for the date chosen. Please select a date from 12/29/2008 to present date.';
alertmsg = 'No data available for ' + test + '. Please select a date from 12/29/2008 to present date.';
valid = false;
}
}
if (valid)
{
<!-- do nothing -->
}
else
{
<!-- restore to the previous value. Use the cookie first if it exists, otherwise use the default date. -->
var OldDate = GetCookie('PARMDATED');
if (OldDate == "NONE")
{
var DisplayDate = GetYesterday();
document.forms["form2"].PARMDATE.value = DisplayDate;
}
else
{
document.forms["form2"].PARMDATE.value = OldDate;
}
if (NoMsg)
{
}
else
{
alert(alertmsg);
document.forms[0].PARMDATE.focus();
}
}
return valid;
}
function IsDate(year, month, day) {
<!-- check for valid dates, javascript months are 0 through 11 -->
month = month - 1;
var calcDate = new Date(year,month,day);
if ((year == calcDate.getFullYear()) &&
(month == calcDate.getMonth()) &&
(day == calcDate.getDate()))
return true;
else
return false;
}
function GetCookie(CookieName) {
if (document.cookie && document.cookie != "")
{
//alert('GetCookie - found a cookie and getting its value...');
//alert('GetCookie - looking for CookieName = ' + CookieName);
iStart=document.cookie.indexOf(CookieName + "=");
if (iStart != -1)
{
//alert('GetCookie - found CookieName = ' + CookieName);
iStart=iStart + CookieName.length+1;
iEnd=document.cookie.indexOf(";",iStart);
if (iEnd==-1) iEnd=document.cookie.length;
//alert('GetCookie - returning a value = ' + document.cookie.substring(iStart,iEnd));
return unescape(document.cookie.substring(iStart,iEnd));
}
else
{
//alert('GetCookie - could not find CookieName = ' + CookieName + ' so defaulting to NONE...');
return "NONE";
}
}
else
{
//alert('GetCookie - could not find CookieName = ' + CookieName + ' so defaulting to NONE...');
return "NONE";
}
}
function GetYesterday() {
<!-- calculate today's date and day of week -->
var Today = new Date();
var DOW = Today.getDay();
var daysBack = -1;
var prevDay = new Date(Today.getFullYear(), Today.getMonth(), Today.getDate()-0+daysBack);
//alert('GetYesterday - prevDay was ' + prevDay );
var DateMM = prevDay.getMonth() + 1; // javascript months are 0 through 11
var DateDD = prevDay.getDate();
var DateYYYY = prevDay.getFullYear();
<!-- need 2-digit months and days and 4-digit years -->
if (DateMM < 10) DateMM = '0' + DateMM;
if (DateDD < 10) DateDD = '0' + DateDD;
var DisplayDate = DateMM + '/' + DateDD + '/' + DateYYYY;
return DisplayDate;
}
function ParmdateEdit_onmouseover(ctrl) {
document.getElementById('form2Submit').disabled = false;
}
function CalCntlEvent_onmouseover(ctrl) {
document.getElementById('form2Submit').disabled = false;
document.forms[0].PARMDATE.focus();
}
</SCRIPT>
<SCRIPT for=window eventname="onload">window.onload = function() { window_onload(document.forms["form2"].PARMDATE.value); }</SCRIPT>
</HEAD>
<BODY style="OVERFLOW: auto" edaconnectionrequired="true">
<SCRIPT for=window eventname="onload">
//alert('body on load');
var BodyOnloadParmdate = "!IBI.AMP.PARMDATE;";
//alert('body on load PARMDATE is ' + BodyOnloadParmdate);
</SCRIPT>
<!-- zzzz 2011/04/11 REL1.5 new positioning -->
<IFRAME id=iframe1 style="LEFT: 250px; WIDTH: 900px; TOP: 0px; HEIGHT: 66px; POSITION: absolute; Z-INDEX: 1;" tabIndex=1 name=iframe1 frameBorder=0 requests_list="1" executebuttonId="form2Submit" scrolling=no autoExecute="True"></IFRAME>
<SPAN id=line1 style="LEFT: 10px; WIDTH: 1230px; TOP: 70px; HEIGHT: 2px; POSITION: absolute; FONT-SIZE: 1pt; BACKGROUND-COLOR: black; Z-INDEX: 2;" tabIndex=12 elementtype="5" ElementToPaste="true"></SPAN>
<IFRAME id=iframe2 style="LEFT: 10px; WIDTH: 2000px; TOP: 76px; HEIGHT: 37500px; POSITION: absolute;" tabIndex=8 name=iframe2 frameBorder=0 requests_list="2" autoExecute="True"></IFRAME>
<FORM id=form2 style="LEFT: 0px; WIDTH: 240px; TOP: 5px; HEIGHT: 80px; POSITION: absolute; Z-INDEX: 3;" tabIndex=2 name=form2 onsubmit="doSubmit(form2);OnExecute(this);return false;" method=post requests_list="1;2" fexlist_list="form2" default_slider_type="4" form_prompt_location="1" form_number_of_visible_rows="4" form_number_of_columns="4" vert_dist_between_controls="10" form_hor_dist_between_controls="10" form_dist_between_desc_and_input="10">
<INPUT id=form2Submit onmouseover=SubmitButton_onmouseover(this) style="LEFT: 200px; WIDTH: 38px; TOP: 0px; HEIGHT: 22px; POSITION: absolute; BACKGROUND-IMAGE: url(/ibi_html/javaassist/ibi/html/describe/run16.gif); BACKGROUND-REPEAT: no-repeat; BACKGROUND-COLOR: lavender; Z-INDEX: 4;" tabIndex=3 type=submit value=" " name=ITEM1>
<FIELDSET id=form2_formbodyid style="LEFT: 5px; WIDTH: 124px; TOP: 5px; HEIGHT: 80px; POSITION: absolute; OVERFLOW: auto; BORDER-STYLE: none; PADDING: 0px 0px 0px 0px; Z-INDEX: 5;" tabIndex=5 tempheight="73" tempwidth="107" formbody="1">
</FIELDSET>
<INPUT id=calendar1 onmouseover=ParmdateEdit_onmouseover(this) style="LEFT: 10px; WIDTH: 89px; TOP: 0px; HEIGHT: 22px; POSITION: absolute; Z-INDEX: 6;" tabIndex=7 maxLength=10 accept=0 size=10 value="!IBI.AMP.PARMDATE;" name=PARMDATE elementtype="14" datafieldtype="CHAR" addalloption="0" operation sourcetype="typeMaster" datatype="0" datafield displayfield datasource ibiformat="MDYY" calendardatatype="1" calendardata="0/0/-10;0/0/1">
<SPAN id=DefaultDtText style="LEFT: 130px; WIDTH: 70px; TOP: 0px; HEIGHT: 30px; POSITION: absolute; FONT-FAMILY: Arial; FONT-SIZE: 8pt; COLOR: #8b0000; Z-INDEX: 7;" tabIndex=10>
<A id=anchor1 title="click to change to default date (yesterday)" href="javascript:DefaultDtText_onclick()">Default Date</A></SPAN>
<!-- zzzzmc1 2011/04/11 REL1.5 new level search dropdowns -->
<SPAN id=SearchLevelDrop style="LEFT: 314px; WIDTH: 40px; TOP: 21px; HEIGHT: 25px; POSITION: absolute; FONT-FAMILY: Arial; FONT-SIZE: 8pt; Z-INDEX: 8; VISIBILITY: hidden;" tabIndex=28 name="SearchLevel" elementtype="32">
<SELECT language=javascript id=SearchLevel style="LEFT: 41px; WIDTH: 150px; TOP: 0px; POSITION: absolute; FONT-FAMILY: Arial; FONT-SIZE: 8pt;" tabIndex=29 onchange=SearchLevel_onchange(this) size=1 name=SearchLevel displayfield ibic_server="EDASERVE" ibiapp_app="mgmtdash" cacheruntimedata="0" attvariables="HIERID;SelHIERID;" datasource="mrd_search_level_drop.fex" vspace="0" indeterminate="false" accept="0" CHECKED="false" width="0" loop="1" maxLength="5" hspace="0" height="255919060" readOnly="false" start="fileopen" defaultlocation="29,0,51,65" addalloption="0" operation selectedvalue boundtovariable="1" requiredfield="1837378" datatype="1" sourcetype="typeFex">
</SELECT>Locate:</SPAN>
<SPAN id=SearchLevelValDrop style="LEFT: 590px; WIDTH: 40px; TOP: 21px; HEIGHT: 25px; POSITION: absolute; FONT-FAMILY: Arial; FONT-SIZE: 8pt; Z-INDEX: 9; VISIBILITY: hidden;" tabIndex=30 name="SearchLevelVal" elementtype="32">
<SELECT language=javascript id=SearchLevelVal style="LEFT: 45px; WIDTH: 200px; TOP: 0px; POSITION: absolute; FONT-FAMILY: Arial; FONT-SIZE: 8pt;" tabIndex=31 onchange=SearchLevelVal_onchange(this) size=1 name=SearchLevelVal displayfield ibic_server="EDASERVE" ibiapp_app="mgmtdash" cacheruntimedata="0" attvariables="HIERID;SearchLevel;SelHIERID;" datasource="mrd_search_level_val_drop.fex" vspace="0" indeterminate="false" accept="0" CHECKED="false" width="0" loop="1" maxLength="5" hspace="0" height="255919060" readOnly="false" start="fileopen" defaultlocation="29,0,51,65" addalloption="0" operation selectedvalue boundtovariable="1" requiredfield="1837378" datatype="1" sourcetype="typeFex">
</SELECT>Number:</SPAN>
</FORM>
<INPUT language=javascript id=CalCntlEvent onmouseover=CalCntlEvent_onmouseover(this) style="LEFT: 97px; WIDTH: 22px; POSITION: absolute; TOP: 2px; HEIGHT: 22px" tabIndex=8 type=button size=6 name=button2>
<xml id=ibi_requests>
<script>
<requests>
<request requestid="2" sourcetype="typeFex" targettype="iframe" targetname="iframe2" ibif_ex="car_report.fex" ibic_server="EDASERVE" activereport="0" reportcolumns="" ibiapp_app="baseapp">
<variables>
<variable parametercreatedinreslay="0" name="PARMDATE" field="PARMDATE" displayfield="PARMDATE" desc="PARMDATE" default="NONE" format="" file="queries.mas" datatype="0" operation="" textvarname="" accept="0" type="default" select="0" min="" max="" controltype="7" create="1"></variable>
</variables></request>
</requests></script>
</xml></BODY>
<SCRIPT id=IBI_loadcalendar type=text/javascript>
if(ibigblInitInfo.testOptions(rltdyncalendar)){
setDateRange();
setupDocCalendars();
}</SCRIPT>
<SCRIPT id=IBI_loader type=text/javascript>
doBeforeLoad();
</SCRIPT>
</HTML>
FEX:
-* File cartest.fex
-SET &ECHO='ALL';
-DEFAULT &PARMDATE = 'MISSING'
-SET &BORDER = '';
-SET &DELAY = SLEEP(10, 'I2');
TABLE FILE CAR
PRINT
CAR MODEL BODYTYPE SEATS
CAR MODEL BODYTYPE SEATS
BY COUNTRY
HEADING
"Date: &PARMDATE.EVAL"
" <+0>Car Report 1 <+0>Car Report 2 "
ON TABLE PCHOLD FORMAT HTML
ON TABLE SET PAGE NOLEAD
ON TABLE SET HTMLCSS ON
ON TABLE SET STYLE *
UNITS=IN,
SQUEEZE=ON,
ORIENTATION=LANDSCAPE,
$
TYPE=REPORT,
WRAP=OFF,
GRID=OFF,
FONT='ARIAL',
SIZE=8,
$
TYPE=HEADING,LINE=2,ITEM=2,WIDTH=1,JUSTIFY=CENTER,POSITION=2.3,BACKCOLOR=SILVER,$
TYPE=HEADING,LINE=2,ITEM=3,WIDTH=1,JUSTIFY=CENTER,POSITION=2.9,BACKCOLOR='LIGHT BLUE',$
TYPE=TITLE,COLUMN=CAR(1), BACKCOLOR=SILVER,$
TYPE=TITLE,COLUMN=MODEL(1), BACKCOLOR=SILVER,$
TYPE=TITLE,COLUMN=BODYTYPE(1),BACKCOLOR=SILVER,$
TYPE=TITLE,COLUMN=SEATS(1), BACKCOLOR=SILVER,
&BORDER.EVAL BORDER-RIGHT=LIGHT,
$
TYPE=TITLE,COLUMN=CAR(2), BACKCOLOR='LIGHT BLUE',$
TYPE=TITLE,COLUMN=MODEL(2), BACKCOLOR='LIGHT BLUE',$
TYPE=TITLE,COLUMN=BODYTYPE(2),BACKCOLOR='LIGHT BLUE',$
TYPE=TITLE,COLUMN=SEATS(2), BACKCOLOR='LIGHT BLUE',
&BORDER.EVAL BORDER-RIGHT=LIGHT,
$
TYPE=DATA, COLUMN=CAR(1), BACKCOLOR=SILVER,$
TYPE=DATA, COLUMN=MODEL(1), BACKCOLOR=SILVER,$
TYPE=DATA, COLUMN=BODYTYPE(1),BACKCOLOR=SILVER,$
TYPE=DATA, COLUMN=SEATS(1), BACKCOLOR=SILVER,
&BORDER.EVAL BORDER-RIGHT=LIGHT,
$
TYPE=DATA, COLUMN=CAR(2), BACKCOLOR='LIGHT BLUE',$
TYPE=DATA, COLUMN=MODEL(2), BACKCOLOR='LIGHT BLUE',$
TYPE=DATA, COLUMN=BODYTYPE(2),BACKCOLOR='LIGHT BLUE',$
TYPE=DATA, COLUMN=SEATS(2), BACKCOLOR='LIGHT BLUE',
&BORDER.EVAL BORDER-RIGHT=LIGHT,
$
END
This message has been edited. Last edited by: Kerry,
WebFOCUS 8.1.05
November 11, 2011, 10:25 AM
dhagen
I don't think it has anything to do with changing dates. You are executing the OnExecute twice => two executions. It is just doing what you asked.
"There is no limit to what you can achieve ... if you don’t care who gets the credit." Roger Abbott