Focal Point
[CLOSED] Change Date in HTML causes 2 agents

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

November 11, 2011, 07:35 AM
MattC
[CLOSED] Change Date in HTML causes 2 agents
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