Qlik Community

QlikView Integration

Discussion Board for collaboration on QlikView Integration.

Not applicable

Re: Dynamic DIV-tag integration

Hi Phaneendra,

Is your problem resolved? Please could you tell me, how did you make it working? Please share.

Thanks

Not applicable

Re: Dynamic DIV-tag integration

Hi All,

By any chance, is anyone implemeted the below concept part DIV integration with workbench in Java based application

[Browser] -> [webserver 1: HTML page and Proxy.aspx] -> [webserver 2: QvWebServer]


I trying to integfrate DIV integration with workbench into my java application and struck with CORS errors, for that , I tried to enable CORS on QVWS, but still getting the same  CORS error.


I am gave up at the moment, and planned to implement proxy page, but just looking for sample, as I am not sure how to do this and also I need to pass webticket to access the document on QVS.

Please share the info, as I need it very urgently.


Thanks,



Not applicable

Re: Dynamic DIV-tag integration

Hi Alexander,

For DIV-tag integration do we need to have Qlikview licenses ?

akl
Honored Contributor

Re: Dynamic DIV-tag integration

Yes, server-, user- and a workbench-license.

Kind Regards

Alexander Karlsson

Highlighted
Not applicable

Re: Dynamic DIV-tag integration

Hi Alexander,              

Thanks for your reply.

One more question regarding Qlikview mash-ups. So how can we integrate Qlikview objects with Android/IOS mobile apps.

Not applicable

Re: Dynamic DIV-tag integration

Hi Alexander,

  We are using DIV integration for our application. We have more than 500 qlikview objects, which we embedded in our html pages using DIV integration. Unfortunately we are not able to load the qlikview objects when we needed, so we are loading all these 500 qlikview objects at loading time and using basic html hide and show methodology, we are displaying the qlikview objects in our web pages. This approach is suggested by qlikview guys. But this design taking longer time(10 secs to 20 secs) to load initially when user log-in. Also taking 8 to 15 secs to refresh the page, when we apply any filter. Our qlikview file is very small (10 MB) and we will not have more than 1 million rows

  Can we have any other design so that we can embed qlikview objects in our html pages and get the quick response time within in 1 sec. We can not go for Opendoc or iFrame as we have custom UI developed in html5 and css3.

Thanks,

Ram

akl
Honored Contributor

Re: Dynamic DIV-tag integration

oh wow. I'm going to be very blunt here, that is a horrible horrible approach.

500 objects sounds a bit overkill also, I'm guessing a lot of them are duplicates with different dimensions or expressions? That could be solved in QlikView by using conditional dimensions and expressions to cut down on the number of objects you have to maintain.


Let's take this offline, feel free to e-mail me at akl@qlik.com and I can provide some code samples.

Not applicable

Re: Dynamic DIV-tag integration

Hi Alexander,

My question doesn't have anything to do with this article, I've just read some of your articles and wanted to email and ask you a question. 

I've implemented div integration, where I have a few individual objects that appear and work. But I'd like for my web page to "be aware" of activities in those objects (if that makes sense). So, for example, if the user scrolls a listbox down to the last row, my javaScript "knows that they did that". I guess a listener,  but I can't figure out how to do that with QlikView objects.

I'm not particular, and have little knowledge of Qlik internals, but would appreciate any guidance you might have.

Thanks,

Alan

akl
Honored Contributor

Re: Dynamic DIV-tag integration

As far as I know there are no supported events for QlikView objects. Then again I haven't really worked with the QV APIs for a few years so I could be wrong on that.

I guess you could target our objects and inject your own listeners to listen for certain type of events such as scroll and clicks.

Not applicable

Re: Dynamic DIV-tag integration

Hi Alexander,

Thank you for responding to my question.

What I'm doing is mixing Qlik objects with live web content - you click on a Qlik grid and I call a webApi to get live data and display it on the page.. The problem I was trying to solve was that when you sort or refresh or scroll/other, my listeners weren't attached anymore..live is deprecated and .on doesn't work.

So I needed a way to know that object/s had been refreshed, then re-attach the listeners to the resulting divs in the refreshed QvContent.

I figured it out. So here's what I did (the highlights anyway) below. It's not a very elegant solution but it'll work until I find a better one.

    QvReport.PreInitWorkBench = function () {

        $(".qlikPane").addClass("Qv" + QvReport.Report);

    };

    QvReport.InitWorkBench = function () {

        QvReport.PreInitWorkBench();

        Qv.InitWorkBench({

            View: QvReport.DocumentName,

            Host: QvReport.Host,

            BodyOnLoadFunctionNames: "QvReportOnLoad",

        });

    };

    QvReportOnLoad = function () {

        // Set callback for QlikView event "OnUpdateComplete" for policy summary grid. When that grid updates, the callback function will be called.

        var doc = Qv.GetCurrentDocument();

        var policyChart = doc.GetObject("CH37");

        policyChart.SetOnUpdateComplete(OnPolicyGridUpdated());

    }

    function OnPolicyGridUpdated() {

        setEventListener();

    }

    function setEventListener() {

        $('div').on('click', function (event) {

            // Click on down arrow of QlikView search box Document\SO07

            if (this.className == "QvContent QvSearchObject ui-helper-clearfix") {

                event.stopPropagation();

                event.stopImmediatePropagation();

                return;

            }

            // Clicked and then let go of scroll bar on QlikView grid Document\CH37

            if (this.className == "Qv_ScrollbarBackground") {

                setEventListener();

            }

            var target = $(event.target);

            var targetnext = target.next()[0];

            // Clicked on web control button "Clear"

            if (target[0].id == "qvClearButton ") {

                event.stopPropagation();

                event.stopImmediatePropagation();

                qvClearButtonClick();

                return;

            }

            // Clicked on policy number on QlikView grid Document\CH37

            // Fetch policy detail via webApi and display on page

            var targethtml = targetnext.innerHTML;

            var targetval = $(targethtml).attr('title');

            if ((targetval.length == 10 && /^\d+$/.test(targetval) == true)) {

                event.stopPropagation();

                event.stopImmediatePropagation();

                RenderPolicyDetail(targetval);

            }

        })

    }