Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Join us to spark ideas for how to put the latest capabilities into action. Register here!
cancel
Showing results for 
Search instead for 
Did you mean: 
fduchmann
Partner - Contributor III
Partner - Contributor III

How to load a jQuery Plugin into a Qlik Sense Extension

Hello Qlik-Community,

I try to load a jQuery Plugin into my Qlik Sense (3.0) Extension without any luck.

The Plugin is called Tipsy, its a simple javascript Tooltip Library which works fine with SVG Elements.

GitHub - jaz303/tipsy: Facebook-style tooltips plugin for jQuery

tipsy

The jQuery Plugin is as far as I know not an AMD / RequireJS Module  so I have to Shim it with requireJS.

The beginning of my Extension Script looks like this:

requirejs.config({

    paths:{

        "tipsy": "js/tipsy"

    },

    shim: {

        "tipsy": {

            deps: ["jquery"],

            exports: "tipsy"

        }

    }

});

define(["./properties",

        "jquery",

        "qlik",

        "./js/d3.v3.min",

        "./js/dagre-d3",

        "tipsy",

        "css!./css/custom.css",

        "css!./css/tipsy.css",

        /* dependencies go here seperated by ,  */],

    function(props, jquery, qlik, d3, dagreD3, tipsy/* returned dependencies as arguments */ ) {

        ......

        paint: function($element, layout){

              

               // Here I want to use the jQuery Plugin Tipsy

              

          }

I always get an Error that tipsy is not found.

How can I load an jQuery Plugin correctly into my Qlik Sense Extension?

Hope someone can help me.

Best regards

Frank

1 Solution

Accepted Solutions
ErikWetterberg

Hi Frank,

Requirejs can be a bit complicated.. You could try with the full path in the shim, so something like this:

shim:{

  "extensions/your-extension/tipsy":{

     deps: ["jquery"],

     exports: "" //I don't know if this is needed and if it should be the whole path

  }

}

and refer to it relative to your main extension file:

define(....."./tipsy"

Please forgive me if this does not work, I haven't actually tested this, but I've done like this in some extension. And do let us know if it does work.

Erik

View solution in original post

2 Replies
ErikWetterberg

Hi Frank,

Requirejs can be a bit complicated.. You could try with the full path in the shim, so something like this:

shim:{

  "extensions/your-extension/tipsy":{

     deps: ["jquery"],

     exports: "" //I don't know if this is needed and if it should be the whole path

  }

}

and refer to it relative to your main extension file:

define(....."./tipsy"

Please forgive me if this does not work, I haven't actually tested this, but I've done like this in some extension. And do let us know if it does work.

Erik

fduchmann
Partner - Contributor III
Partner - Contributor III
Author

Hello Erik,

thank you very much for your answer. RequireJS is realy complicated if you want to add a non conform library 😞

But your hint was correct. My Script looks now like this and is working 🙂

requirejs.config({

    "shim": {

        "extensions/ProcessExplorerD3/js/tipsy": {

            "deps": ["jquery"],

            "exports": ""

        }

    }

});

define(["./properties",

        "jquery",

        "qlik",

        "./js/tipsy",

.......

function(props, jquery, qlik   /* returned dependencies as arguments */ ) { ........

Note that no argument for the function is needed, because the library is a jquery plugin so you can use it like this:

jquery().tipsy();

Thank you very much.

Frank