• Fabrik V4.4.1 is now available.

    This version corrects the Admin issue introduced by V4.4. V4.4.1 is available through the Joomla Updater or for download through your My Downloads area of our website.

    Turns out a code change intended for our 5.0dev branch inadvertantly got pushed to the 4.x branch (by me, duh!). The javascript structure in 5.0 will change considerably and part of that change took effect with the inadvertant code change.

    We have reverted the code change and released 4.4.1. V4.4 has been retracted.

    Sorry for any inconvenience.

  • A new version of Full Calendar is now available.

    See the details here

Javascript

  • Views Views: 27,011
  • Last updated Last updated:
  • Fabrik can be greatly extended with the use of JavaScript to code complex interactions.

    You can add custom js files to your list, form and details views

    Javascript location​

    Custom javascript files should be located in:
    /components/com_fabrik/js​

    Lists​

    For Lists you should name your file list_X.js where X is the list's id.

    Note: For backwards compatibility, if you are still using the depreciated table_X.js files then these are loaded in preference to list_X.js files.

    Forms​

    Fabrik 2.x and 3.0:
    For Forms and details views your file should be form_X.js where X is the form's id.

    Fabrik 3.1 onwards:
    In Fabrik 3.1, Details views have their own templates so for details views your file should de details_X.js where X is the details view's form id.

    For form views your file should be still be form_X.js where X is the form's id.

    Note: For backwards compatibility, if you are using simply X.js files then these are loaded in preference to form_x.js / details_x.js files

    In Fabrik 3.1 we create separate JavaScript objects for each form found on the page, this means that you can potentially have 2 Forms which display different records on the same page, for example:

    Fabrik.blocks['form_8'] - a 'create new entry' form
    Fabrik.blocks['form_8_1'] - controls the form which is editing record id=1

    Its probable that you want to use the same JavaScript for both of these form objects. To achieve this you should use the following script located in components/com_fabrik/js/form_8.js:


    JavaScript:

    /**
    * Ensure that Fabrik's loaded
    */

    requirejs(['fab/fabrik'], function (Fabrik) {

    // The block you want to use
    var blockRef = 'form_8';

    // Should we use an exact match for the blockRef?
    var exact = false;

    var form = Fabrik.getBlock(blockRef, exact, function (block) {

    // This callback function is run once the block has been loaded.
    // The variable 'block' refers to Fabirk.blocks object that controls the form.
    var v = block.Elements.get('tablename___elementname').get('value');

    // If your element is in a repeat group its name is prefixed with _0, _1, _2 etc - to get all element values in an array....
    var values = [];
    Object.each(block.Elements, function (element, key) {
    if (key.contains('tablename___elementname')) {
    values.push(element.get('value'));
    }
    });
    });
    });

    If you wanted to target only Fabrik.blocks['form_8'] you would use:

    JavaScript:

    /**
    * Ensure that Fabrik's loaded
    */

    requirejs(['fab/fabrik'], function (Fabrik) {

    // The block you want to use
    var blockRef = 'form_8';

    // Should we use an exact match for the blockRef?
    var exact = true;

    var form = Fabrik.getBlock(blockRef, exact, function (block) {

    // This callback function is run once the block has been loaded.
    // The variable 'block' refers to Fabirk.blocks object that controls the form.
    var v = block.Elements.get('tablename___elementname').get('value');
    });
    });

    See also https://fabrikar.com/forums/index.php?wiki/form-javascript
Back
Top