Formatter API
Note!
Do not add comments in formatters in Eximee Designer - they may cause errors in the application!
Implementation of a new formatter
After creating a new formatter in the workspace, a text editor with the formatter implementation template will open.
The formatter is represented as a JavaScript function with the signature initially specified in the template:
function formatText(input) {
return {
formattedText: input.textToFormat,
cursorPosition: input.cursorPosition
};
}Description of the formatter function signature:
input.textToFormat
input
String (JAVA)
Text to be formatted. The JAVA type of the variable should be converted to JavaScript (new String(input.textToFormat); ) in order to call methods for the type String (e.g. replace())
input.locale
input
String (JAVA)
A string specifying the language in which the application is displayed (e.g. "pl", "en"). The JAVA type of the variable should be converted to JavaScript (new String(input.locale); ) in order to call methods for the type String (e.g. replace())
input.cursorPosition
input
int
Cursor position in the text field before formatting
output.formattedText
output
String
Text after formatting
output.cursorPosition
output
String
Cursor position in the text field after formatting - an integer in the range <0,output.formattedText.length> - if a number outside the range is provided, the webforms application will not change the cursor position (the browser's default behavior will be preserved)
The formatter implementation should be done by changing only the contents of the function.
For proper operation, the formatter must be a valid function of the JavaScript. Otherwise, when attempting to save the formatter in the current user space, an appropriate system error message will be generated.
Version with the caret set to the natural position (taking thousands separators into account). The formatter below will not work for a TextField of type EMAIL due to JavaScript limitations (input type="email" does not implement retrieving the caret position).
Formatter handling according to the previous template
For formatters created according to the previous template shown below, the cursor after formatting the text will be set to the end if it was set to the end before formatting. If the cursor was set within the text content, then after formatting the text it will remain in the same place where it was set before formatting.
Description of the previous formatter function signature:
textToFormat
input
String
Text to be formatted
locale
input
String
A string specifying the language in which the application is displayed (e.g. "pl", "en")
formattedText
output
String
Text after formatting
Limitations
Formatters cannot use prototype inheritance mechanisms
In formatters that format outputs from an object service, objects passed to the formatter are Java objects; to perform string operations, they must be converted to JavaScript objects (e.g.: const textToFormat = new String(input.textToFormat + ""))
Last updated
Was this helpful?
