Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
As you know, extensions provide additional functionality that extend the capability of many products. QlikView has this capability, so it only makes sense to have it in Qlik Sense too - no pun intended.
I'd like to point out that Extensions are not limited to just visualizations. You can implement other types of functionality, including those available from the Qlik Sense API. (This will become more relative when the Qlik Sense Server is released later this year. See the ToolBar extension to see a simple example of this.)
If you want to check out the current example extensions that are available with Sense you can perform the following steps:
So for example - if you want to use the PeopleChart:
Take the complete folder from C:\Users\<user>\Documents\Qlik\Examples\Extensions
Copy to it to:
C:\Users\<user>\Documents\Qlik\Sense\Extensions
After Desktop starts, go to the design interface in an app:
Use as you would by adding measures and dimensions
Enjoy!
Hi Martien,
I've had this one answered already. In order to get more rows of data back you need to use the getData callback. Erik posted some pseudo-code here:
http://community.qlik.com/thread/131776
The idea is you should page the data in and start building the visualisation before the whole set has been retrieved so for big quantities of data the user doesn't think their browser has crashed!
Hope this helps.
Justin
This is correct. I'm not sure what the plans are in the future for row limits, but in actuality I've been told that it doesn't go be row, but by cell and the limit is 10,000. So if you have two columns, you could do 5000 rows. 3 columns, 3333 rows, etc. I haven't fully tested this, but it seems to be the case.
Anyway, I'm working on a function that automagically pages through all of the data and returns a giant aggregated object. Once I get it done, I'll post it up to Branch.
Hi Brian,
Looking forward to seeing what you come up with.
To be honest I've come across a couple of snags trying to do the same:
- Firstly, the paint method is called twice in the current version of Sense. This has been discussed in other posts on the site, so is known to Qlik. The upshot of this is I'm seeing the same page twice. This is easy enough to code against.
- Secondly, on my final page of data, the objects are coming in corrupted for some reason: 3002 objects, 3000 of which are absolutely fine, but the last two are broken. Only two members of a three member array appearing.
I'm going to bang my head against that for a bit before I give in!
Cheers,
Justin
Hmmm...that's pretty interesting. Could you send me (privately if needed) the app you're using and I could potentially package it up to send in to R&D to troubleshoot?
Thanks.
It's probably something strange I'm doing.
The app is attached. It's a bunch of spurious random data in a meaningless visualisation so fair game.
It appears to render fine, but if you debug in Chrome, the Javascript engine has a whinge because I'm referring to a reference on an array which doesn't exist.
Thanks
Does the draw method execute twice on all updates or only when data / selection canges?
Hi Johan,
Good question, just quickly tested this. The paint method fires twice on initially building the app (e.g. on hitting F5), but once on changing data selection or resizing the form.
My particular app fails to render under these latter two circumstances due to the issue mentioned above where three membered arrays become two in my final page.
The second repaint most probably is due to the properties pane activating, forcing the extension to re-size.
call-chain with empty sheet, adding extension
onStateChanged
suppressOnPaint
prePaint
updateData
paint
paint
call-chain with empty sheet property panel showing, adding extension
onStateChanged
suppressOnPaint
prePaint
updateData
paint
You're right, the second initialization is due to the resize function. The default resize function is this:
resize: function ( $element, layout ) {
this.paint( $element, layout );
},
So the resize function gets called alongside the paint when the extension first loads, causing the paint to fire twice. To avoid this, I guess you could put a check in the resize function that detects if the viz has already been drawn and is already the right size. If so, don't call paint again. There's probably other better ways to detect this also.
That's interesting to know.
Like I said I have been easily able to code round the problem because the data set should be distinct, I only have to check a single row of data, so the check isn't very expensive.
A wider point about paging of data: I think the mechanism for paging data in Sense should be made native, intuitive and easy, as technically everyone making generic extensions will have to write something to handle large data sets. A recommended out of the box library call for instance. Do you agree? I see no reason why developers should have to crank out code to handle paging every time they create extensions. It seems to me that you'd not want to handle paging in any given extension in exceptional circumstances.