Discussions
Categories
Groups
Community Home
Categories
INTERNAL ENABLEMENT
POPULAR
THRUST SERVICES & TOOLS
CLOUD EDITIONS
Quick Links
MY LINKS
HELPFUL TIPS
Back to website
Home
Web CMS (TeamSite)
arithmetic operation in formAPI
ratzz
HI ALL,
I'M FACING A PROBLEM WITH ARITHMETIC OPERATIONS IN FORM API. I NEED TO TO INCREMENT A PARTICULAR VALUE IN THE SCRIPT AND SET IT TO AN ITEM IN THE DCR. I'M ABLE TO DO THE INCREMENT BUT UNABLE TO SAVE THE DCR....THE BELOW GIVEN IS MY SCRIPT
function init() {
// Register a function to automatically name the DCR before save.
IWEventRegistry.addFormHandler("onSaveValid", autoName);
IWEventRegistry.addFormHandler("onLoad",setdefault);
}
function setdefault() {
IWDatacapture.getItem("/Newsletter ID").setReadOnly(true);
IWDatacapture.getItem("/SYSDATE").setVisible(false);
//IWDatacapture.getItem("/Item ID").setVisible(false);
IWDatacapture.getItem("/Newsletter Title").setVisible(false);
//IWDatacapture.getItem("/Article/[0-100]/Item ID").setVisible(false);
//alert("done");
//IWDatacapture.getItem("/SYSDAT").setReadOnly(true);
IWDatacapture.redraw();
}
setdefault();
function autoName() {
//Get the title and type and create a dcr name from it.
var month = IWDatacapture.getItem("Newsletter Date Info/Month of Newsletter").getValue();
var out = '';
for (i=0;i<=month.length;i++)
{
switch (month
) {
case 0:
out = out+"January";
sysdate="01";
break
case 1:
out = out+"February";
sysdate="02";
break
case 2:
out = out+"March";
sysdate="03";
break
case 3:
out = out+"April";
sysdate="04";
break
case 4:
out = out+"May";
sysdate="05";
break
case 5:
out = out+"June";
sysdate="06";
break
case 6:
out = out+"July";
sysdate="07";
break
case 7:
out = out+"August";
sysdate="08";
break
case 8:
out = out+"September";
sysdate="09";
break
case 9:
out = out+"October";
sysdate="10";
break
case 10:
out = out+"November";
sysdate="11";
break
case 11:
out = out+"December";
sysdate="12";
break
case 12:
out = out+"Special_Edition";
sysdate="12";
break
}
}
var newsletter_year = IWDatacapture.getItem("Newsletter Date Info/Year of Newsletter").getValue();
switch(newsletter_year) {
case 0:
newsletter_year = "2003"
break
case 1:
newsletter_year = "2004"
break
case 2:
newsletter_year = "2005"
break
case 3:
newsletter_year = "2006"
break
case 4:
newsletter_year = "2007"
break
case 5:
newsletter_year = "2008"
break
case 6:
newsletter_year = "2009"
break
case 7:
newsletter_year = "2010"
break
}
var repitem=IWDatacapture.getItem("/Article");
var repArray=repitem.getChildren();
var num=repArray.length;
var last=IWDatacapture.getItem("/Article[1]/Item ID");
var iprsval=last.getValue();
alert(iprsval);
alert(num);
for(i=2;i<=num;i++){
alert("entered loop");
var last=IWDatacapture.getItem("/Article["+i+"]/Item ID");
alert(last);
++iprsval; // INCREMENTATION
last.setValue(iprsval);
var iprsval=last.getValue();
alert(iprsval);
}
var newsletter = out + newsletter_year;
var sysdate_out=sysdate+"/01/"+newsletter_year;
IWDatacapture.getItem("/SYSDATE").setReadOnly(false);
IWDatacapture.redraw();
var o_sysdate= IWDatacapture.getItem("/SYSDATE");
var o_title=IWDatacapture.getItem("/Newsletter Title");
o_sysdate.setValue(sysdate_out);
o_title.setValue(newsletter);
IWDatacapture.getItem("/SYSDATE").setReadOnly(true);
IWDatacapture.getItem("/Newsletter Title").setReadOnly(true);
//IWDatacapture.getItem("/Item ID").setVisible(false);
IWDatacapture.redraw();
alert("Before Setting DCR Name");
IWDCRInfo.setDCRName(newsletter);
alert("DCR NAME" + IWDCRInfo.getDCRName());
alert("Return TRUE");
//Now return true so that the save continues with this name
//IWDatacapture.save();
return true;
}
// Call the initialization routine on load.
init();
*****************************************
HERE I'M GETTING THE VALUE OF THE REPLICANT ITEM Item ID (THE VALUE OF THE FIRST REPLICANT) AND INCREMENTING IT AND SETTING IT TO THE NEXT REPLICANT Item ID ITEMS. I'M ABLE TO INCREMENT AND SET THE VALUES BUT UNABLE TO SAVE THE FORM.
IF I'M REPLACING THE LINE
++iprsval;
WITH
iprsval=iprsval+1;
THEN I'M ABLE TO SAVE THE FORM BUT THE VARIABLE iprsval IS CONCATENATED WITH 1 RATHER THAN GETTING INCREMENTED.
I TRIED MULTIPLYING THE VARIABLE iprsval WITH A NUMBER...THEN I'M ABLE TO GET THE MULTIPLIED VALUE AND SET IT BUT UNABLE TO SAVE THE FORM.
IS THERE ANY PROBLEM IN PERFORMING ARITHMETIC OPERATIONS IN FORMAPI?
IS THERE ANY OTHER ALTERNATE WAY OF INCREMENTING A VARIABLE AND SETTING ITS VALUE TO A REPLICANT ITEM....AND SAVING THE FORM SUCCESSFULLY?
RATZZ
Find more posts tagged with
Comments
cliffhanger
You could try
last.setValue(iprsval+””);
instead of
last.setValue(iprsval);
In that case you might need to modify
iprsval=last.getValue();
line to
iprsval= parseInt(last.getValue());
-Cliff
Migrateduser
I see two options and they both involve the "eval" function. The plus sign is a concatenation in Javascript and JS is interpreting your variable initially as a string, but if you were to do:
iprsval=
eval(
iprsval+1
)
;
You would get the arithmetic you're looking for. Otherwise, you could use eval() when you're collecting the variable initially. For instance,
var iprsval=
eval(
last.getValue()
)
;
Dave
Current Environment(s):
(1) TS 6.5 on Solaris 9
(2) TS 6.1 SP1 on W2K3
(3) TS 6.1 on W2K
chuckles
I think that eval should always be a last resort. There is a top-level function called parseInt that takes a string and a radix. Just use:
iprsval = parseInt(iprsval, 10) + 1;
and you will be fine.
Migrateduser
Why should eval() be used as a last resort?
Current Environment(s):
(1) TS 6.5 on Solaris 9
(2) TS 6.1 SP1 on W2K3
(3) TS 6.1 on W2K