Go Back   MarcomCentral (PTI) and FusionPro User Communities > Support > Issues, Questions, Etc.

Notices

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old June 29th, 2022, 07:11 AM
Dmiller35 Dmiller35 is offline
Junior Community Member
 
Join Date: Jun 2020
Location: South Carolina, USA
Posts: 17
Default Storing User-Defined Functions

I've read in the user guide that I can supposedly add a .js file to the Plugins folder so that I can have my most common functions easily available.
However, I've never been able to get it to work. I write the file just as the guide says, but it seems to have an issue with Line 1. Here is what I'm trying to use. Whenever I pull up the building blocks, it tells me "line 1: SyntaxError: illegal character:"


Code:
Presets = new Object;
Presets.LBLNUM =  function (str)
{
	return Int(Field(\“LBLNMBR\”));
}
Presets.LBLNUM.description = “Remove Leading Zeroes from Label Number”
Presets.LBLNUM.syntax = "LBLNUM(<string>)";
I've found in other places that sometimes the user guides have typos or are missing something in order to get the code to work correctly. Is that the case here or does this function just not work?
__________________
FusionPro VDP Creator 12.1.0 | MacOS 10.14.6 | Acrobat DC

Last edited by Dmiller35; June 29th, 2022 at 08:03 AM..
Reply With Quote
  #2  
Old June 30th, 2022, 04:07 PM
Dan Korn's Avatar
Dan Korn Dan Korn is offline
FusionPro Senior Engineer / Forum Moderator
 
Join Date: Aug 2008
Location: Chicago, IL
Posts: 4,671
Default Re: Storing User-Defined Functions

This functionality does work, but you have to use valid JavaScript syntax. In this case, you do indeed have an illegal character.

When I copy that code into a .js file and put it in my plug-ins folder, it says the error is on line 4. The illegal characters are the curly double quotes. They're also on lines 6 and 7. These were probably put in by whatever application you were using to type in the code. (You probably want to use an actual code editing app like Xcode or Sublime Text instead of something that wants to format curly quotes like TextEdit.) You also don't want those the backslash escapes for the double-quotes.

Changing those to straight double-quotes and removing the backslashes, and removing the unnecessary string parameter from your function, this works for me:
Code:
Presets = new Object;
Presets.LBLNUM = function()
{
    return Int(Field("LBLNMBR"));
}
Presets.LBLNUM.description = "Remove Leading Zeroes from Label Number";
Presets.LBLNUM.syntax = "Presets.LBLNUM()";
I also changed the syntax to include the object name, which is needed to call it.
__________________
Dan Korn
FusionPro Developer / JavaScript Guru / Forum Moderator
PTI Marketing Technologies | Printable | MarcomCentral
LinkedIn

I am a not a Support engineer, and this forum is not a substitute for Support. My participation on this forum is primarily as a fellow user (and a forum moderator). I am happy to provide help and answers to questions when I can; however, there is no guarantee that I, or anyone else on this forum, will be able to answer all questions or fix any problems. If I ask for files to clarify an issue, I might not be able to look at them personally. I am not able to answer private messages, emails, or phone calls unless they go through proper Support channels. Please direct any sales or pricing questions to your salesperson or inquiries@marcom.com.

Complex template-building questions, as well as all installation and font questions or problems, should be directed to FusionProSupport@marcom.com. Paid consulting work may be required to fulfill your template-building needs.

This is a publicly viewable forum. Please DO NOT post fonts, or other proprietary content, to this forum. Also, please DO NOT post any "live" data with real names, addresses, or any other personal, private, or confidential data.

Please include the specific versions of FusionPro, Acrobat, and your operating system in any problem reports or help requests. I recommend putting this information in your forum signature. Please also check your composition log (.msg) file for relevant error or warning messages.

Please post questions specific to the MarcomCentral Enterprise and Web-to-Print applications in the MarcomCentral forum. Click here to request access. Or contact your Business Relationship Manager (BRM/CPM) for assistance.

Please direct any questions specific to EFI's Digital StoreFront (DSF) to EFI support.

How To Ask Questions The Smart Way

The correct spellings are JavaScript, FusionPro, and MarcomCentral (each with two capital letters and no spaces). Acceptable abbreviations are JS, FP, and MC (or MCC). There is no "S" at the end of "Expression" or "Printable"! The name of the product is FusionPro, not "Fusion". "Java" is not is not the same as JavaScript.

Check out the JavaScript Guide and JavaScript Reference! FusionPro 8.0 and newer use JavaScript 1.7. Older versions use JavaScript 1.5.

return "KbwbTdsjqu!spdlt\"".replace(/./g,function(w){return String.fromCharCode(w.charCodeAt()-1)});
Reply With Quote
  #3  
Old July 13th, 2022, 06:38 AM
Dmiller35 Dmiller35 is offline
Junior Community Member
 
Join Date: Jun 2020
Location: South Carolina, USA
Posts: 17
Default Re: Storing User-Defined Functions

I realized the issue with the quotes and fixed that but the other things you mentioned might have still been causing it not to work.

After fixing those, it now does not give me an error, but it also doesn't give me the returned function.
It will only display "Presets.LBLMUM ()" and tells me that it does not return a value.
Am I just not using this functionality correctly?
I just want an easy way to repeat code that I use a lot.
__________________
FusionPro VDP Creator 12.1.0 | MacOS 10.14.6 | Acrobat DC

Last edited by Dmiller35; July 13th, 2022 at 06:56 AM..
Reply With Quote
  #4  
Old July 13th, 2022, 03:26 PM
Dan Korn's Avatar
Dan Korn Dan Korn is offline
FusionPro Senior Engineer / Forum Moderator
 
Join Date: Aug 2008
Location: Chicago, IL
Posts: 4,671
Default Re: Storing User-Defined Functions

Quote:
Originally Posted by Dmiller35 View Post
Am I just not using this functionality correctly?
Well, I don't know. How are you using it? You haven't posted the rule that's calling it.

My guess is that your .js file is fine, but that you're not calling the function correctly in your rule, or at least not capturing its return value and using it in your rule correctly.

I assume your rule would do something like this:
Code:
return Presets.LBLNUM();
which would capture the return value of the function, i.e. the "LBLNMBR" field value, and return it from your rule.

Or, more realistically, something like this:
Code:
var lablnum = Presets.LBLNUM();
// Some code to do a calculation with lablnum and return something.
//etc.
If you're just doing this in your rule and nothing else:
Code:
Presets.LBLNUM();
Then you're calling the Presets.LBLNUM function, but throwing away its return value, and your rule isn't returning anything.

It would be the same if your rule just did this:
Code:
Int(Field("LBLNMBR"))
instead of this:
Code:
return Int(Field("LBLNMBR"))
The upshot here is that you're defining a custom function in your .js file, but you still need to call it and use the return value in a rule, which also has to return something.

(Though that might not always be true, if your .js file just does something like setting a property such as FusionPro.Composition.repeatRecordCount, or something else that might be called in a context like OnRecordStart. But generally, your custom function is going to be returning a value to do something with.)
__________________
Dan Korn
FusionPro Developer / JavaScript Guru / Forum Moderator
PTI Marketing Technologies | Printable | MarcomCentral
LinkedIn

I am a not a Support engineer, and this forum is not a substitute for Support. My participation on this forum is primarily as a fellow user (and a forum moderator). I am happy to provide help and answers to questions when I can; however, there is no guarantee that I, or anyone else on this forum, will be able to answer all questions or fix any problems. If I ask for files to clarify an issue, I might not be able to look at them personally. I am not able to answer private messages, emails, or phone calls unless they go through proper Support channels. Please direct any sales or pricing questions to your salesperson or inquiries@marcom.com.

Complex template-building questions, as well as all installation and font questions or problems, should be directed to FusionProSupport@marcom.com. Paid consulting work may be required to fulfill your template-building needs.

This is a publicly viewable forum. Please DO NOT post fonts, or other proprietary content, to this forum. Also, please DO NOT post any "live" data with real names, addresses, or any other personal, private, or confidential data.

Please include the specific versions of FusionPro, Acrobat, and your operating system in any problem reports or help requests. I recommend putting this information in your forum signature. Please also check your composition log (.msg) file for relevant error or warning messages.

Please post questions specific to the MarcomCentral Enterprise and Web-to-Print applications in the MarcomCentral forum. Click here to request access. Or contact your Business Relationship Manager (BRM/CPM) for assistance.

Please direct any questions specific to EFI's Digital StoreFront (DSF) to EFI support.

How To Ask Questions The Smart Way

The correct spellings are JavaScript, FusionPro, and MarcomCentral (each with two capital letters and no spaces). Acceptable abbreviations are JS, FP, and MC (or MCC). There is no "S" at the end of "Expression" or "Printable"! The name of the product is FusionPro, not "Fusion". "Java" is not is not the same as JavaScript.

Check out the JavaScript Guide and JavaScript Reference! FusionPro 8.0 and newer use JavaScript 1.7. Older versions use JavaScript 1.5.

return "KbwbTdsjqu!spdlt\"".replace(/./g,function(w){return String.fromCharCode(w.charCodeAt()-1)});

Last edited by Dan Korn; July 13th, 2022 at 03:33 PM..
Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 05:16 AM.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
(c) 2011, PTI Marketing Technologies™, Inc.