Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Section
Column

Customizing can be done in several different ways. It is important to consider all the alternatives available when deciding on a method to accomplish form customization.

Warning

Although JavaScript will accomplish the task, it is important to note that your scripts are not subjected to formal testing by the frevvo quality assurance team. Choosing an approach that is part of the product like Business Rules is a better choice than adding JavaScript since released versions undergo rigorous quality assurance testing. Customizations using JavaScript should only be used under special situations and if there is no other way to customize the form to the requirements.

For example, let's say you have a message control in your form that contains markup to pull a custom JavaScript. The URL for the script contains the home directory and revision number - (http://localhost:8080/frevvo/js-24487/libs/script.js).  An upgrade of  to new release or revision version could potentially stop the form from working.

If you choose to add JavaScript, we strongly recommend that you are familiar with a JavaScript debugger / web development tool such as the Firebug extension for Firefoxfor your browser.

Here  are some real world situations where custom JavaScript can be used in a form. The custom JavaScript can be added to the form using the message control or the include.js file in the frevvo.war or uploaded by a designer to an application. Tenant admins or the in-house superuser can upload the custom script to the tenant. Refer to Customizing Behavior for more information.

Column
width240px

On This Page:

Table of Contents
maxLevel1

...

This JavaScript example is relevant to Forms only. Let's say you have a new customer registration Form A that is normally forwarded to Forms B and C to complete registration for a new user. Returning Users skip Form B and go directly to form C.  

This JavaScript example will automatically submit a form if a certain control has some specific value (say “not-new”) in it when the form is loaded. This might be useful in cases where a form needs to be submitted to post the data in it, but interaction between the form and user is not necessary. If the user's input is not required, this custom JavaScript can submit the form automatically.

...

This JavaScript example will submit the form when the user presses the Enter key.key. If you want to do this in a flow, change SubmitView.doSubmit("Submit"); to FlowView.getFlowButton().onclick();

Code Block
if (document.layers) {
   document.captureEvents(Event.KEYPRESS);
}

document.onkeypress = function (evt) {
   var keyCode = evt ? evt.which : event.keyCode;
   if (keyCode == 13) {
      SubmitView.doSubmit("Submit");
   } else { 
      return true;
   }
};

...

Sometimes you may need the session timeout for a particular form to be a lot longer than the default session timeout that makes sense for your entire tenant. Imagine your tenant session timeout in  is set to 30 minutes. One of your forms takes a long time to fill out. You want to allow idle periods greater than 30 minutes for that form only.

This JavaScript will change the session timeout for this form to 10 hoursrefresh the session every 25 minutes so it never hits the 30-minute session timeout. Change the variable sessionInterval in the script to the desired time period, for example, a 4 hour 25 minute session timeout refresh would be:  var var sessionInterval = 1000 * 60 * 4; 25.

Code Block
var sessionInterval = 1000 * 60 * 1025; // milliseconds to minutes
var sessionRefreshURL = "/frevvo/web/login";

refreshFrevvoSession = function () {

   // make the request
   var xmlhttp;
   if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest(); // IE7+, Firefox, Chrome, Opera, Safari
   else xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); // code for IE6, IE5
   xmlhttp.open("GET", sessionRefreshURL + "?sessionRefresh=" + new Date().getTime(), true);
   xmlhttp.send();

   // set the timer to run again
   setTimeout(refreshFrevvoSession, sessionInterval);
}
setTimeout(refreshFrevvoSession, sessionInterval); // set the initial timer
Info

In the above Custom js you can also use /frevvo/heartbeat in place of /frevvo/web/login.

Auto Control Validation

 has built-in validation that will instantaneously display an error message, the control background color will turn yellow and you will see a warning icon on the right side of the control when invalid values are entered. For Example, the Quantity control allows only whole numbers. An error message and a  warning icon will display and the background color of the control will change to yellow if a number with a decimal point is entered. The forms designer can restrict users from entering a value with a decimal point using JavaScript. The script below will automatically remove a decimal point from the field and the error message will not display. Similar logic can be used to implement instant validation on other control types as well.

...

Code Block
languagejavascript
var CustomEventHandlers = {
    setup: function(el) {
        if (CustomView.hasClass(el, 'PhoneInsert')) {
            FEvent.observe(el, 'keydown', this.formatPHONE.bindAsObserver(this, el));
            FEvent.observe(el, 'keyup', this.formatPHONE.bindAsObserver(this, el));
        }
    },
    formatPHONE: function(event, element) {
        if (event.keyCode != 46 && event.keyCode != 8) {
            fldVal = element.value;
            var nom = fldVal.charAt(fldVal.length - 1);
            if (isNaN(nom) && nom != "-") {
                element.value = fldVal.substring(0, fldVal.length - 1);
            } else {
                if ((fldVal.length == 3) || (fldVal.length == 7)) {
                    element.value = fldVal + "-";
                }
                if (fldVal.length > 12) {
                    element.value = fldVal.substring(0, fldVal.length - 1);
                }
            }
        }
    }
}

...