Generate Your Qlik Sense Extension in Less Than 2 Minutes

I have created this tool for my daily work. Instead of always reinventing the wheel and setting up a project structure for Qlik Sense Extensions, I prefer to let it generated.

Project Site: https://github.com/QlikDev/generator-qsExtension

Bookmark and Share

Tags: ,

See you there?: Hackathon@Qonnections2014

I hope will see you there – I’m sure it will be fund, and I am really lookking forward to see the results at the evening on Sunday!!!

BTW, I’ll also show you some new nice QlikView.Next related examples – if you like …
Regards Stefan

We’re pleased to announce the inaugural Qlik Hackathon for Partners, scheduled to take place on April 6th, 2014 in Orlando, Florida, premiering at Qlik’s ninth annual partner conference, Qonnections 2014.
Registration for the Qlik Hackathon for Partners is now open at http://qlikhackathon.eventbrite.com.

Who Should Attend?
This event is for Partner individuals with strong web and JavaScript skills. Participants will form groups of 2. If you do not have a buddy to team up with, don’t worry; the Qlik Hackathon team will find you a match with another participant.
What is the Hackathon?
Teams will be presented with several challenges involving the international humanitarian organization MedAir. Developers must use web skills, data, and the QlikView.Next APIs to achieve new insights and/or visualizations that best address the challenge. Every Hackathon participant will have hands-on access to QlikView.Next and its new capabilities in web integration, with ‘live’ enablement and support from internal QlikView experts moderating the event.

How to Register
Registration for the Qlik Hackathon is now open at http://qlikhackathon.eventbrite.com. Act fast as there are only 40 places available, to be allocated on a first-come, first-served basis. Don’t miss out on the opportunity to be part of a day filled with technical web indulgence, exposure to QlikView.Next’s API capabilities, plus learning and competition to spark some fun!

Bookmark and Share

Improvements to WebPageViewer2 QlikView Extension

In the last months I have received quite often the request to add a new feature to my WebPageViewer2 extension (you could even say it’s a bugfix): The extension did reload the web page on every QlikView refresh event (e.g. making any selections), even if the Url of the web page did not change.

Improvement to WebPageViewer2 (v1.0.2)

There is now a new property called “Prevent reloading if Url does not change” which exactly does what many of you requested: Prevent reloading the Url if it does not change …

WebPageViewer2: New Property "Prevent Reloading if Url does not change"

Download Latest Version + Documentation






Bookmark and Share

Tags: , ,

SlopeGraph for QlikView (D3SlopeGraph QlikView Extension)

Some weeks ago the chart type “Slope Graph”, invented by Eward Tufte in 1983, was first brought to my attention.

When I first saw it I thought that it would be quite easy to bring this chart also to the QlikView world. But after some research I realized that Slopegrahps have some drawbacks which are quite tricky to solve.

I have found quite a dozen of nice implementations out there but none of them was really satisfying me. So this little project was a perfect playground for me to understand challenges when creating chart-visualizations better. It really was the first project where I did not only adapt existing visualizations based on D3 to be used in QlikView, instead I created a new implementation of Slopegraphs in D3 (by combining several existing approaches).

Here is the result:

D3SlopeGraph QlikView Extension

Some Theory about Slopegraphs

Edward Tufte states: “Slopegraphs compare changes over time for a list of nouns located on an ordinal or interval scale” and he also first published and example in his book “The Visual Display of Quantitative Information” in 1983:

Tufte, Edward. The Visual Display of Quantitative Information. Cheshire, Connecticut: Graphics Press; 1983; p. 158

Slopegraph Example by Edward Tufte

Advantages and Scenarios for Using SlopeGraph

  • Slopegraphs are very minimal visualizations, there is no unnecessary information
  • It is easy to capture changes over time
  • The same type of data is shown on the left and right side using the same units of measurement
  • “Any time you’d use a line chart to show a progression of univariate data among multiple actors over time, you might have a good candidate for a SlopeGraph” (source)

Drawback

The most important and relevant drawback of using Slopegraphs is that if you have a lot of dimensions with similar values the visualization becomes messy very quickly (see some screenshots below demonstrating this).

My Approach for Slopegrahps

To overcome the above described drawback I have chosen a combination of several approaches based on the default visualization:

Default Visulization

Handling Conflicting Label
In the above displayed example you’ll see that three dimensions on the left side share the same value for 2012. Instead of displaying them upon each other the dimensions are shown one below the other.

Emphasizing Dimensions
If you hover a dimension, the current dimension will be emphasized / highlighted

Highlighting hovered dimensions

Displaying a Summary
While hovering a dimension a tooltip will be displayed with a short summary. This is especially useful if you have a lot of dimensions with little movement from one to the other time period:

ToolTip for hovered dimensions

Text Fadout for Colliding Labels
But there is still the issue that if you have a lot of dimensions with similar values that they will collide:

Label Collisions

There are many suggestions how this can be solved, I have chosen an interactive one where conflicting labels will be faded out if you hover a dimension:

Conflicting Labels - Resolution

Still to Many Dimensions & Messy Visualization
There are situation where all the above described solutions are not sufficient. Especially if you are using a lot of dimensions this can happen.

Messy result because of conflicting labels

There are two possible solutions:

  • Use a different chart type
  • Increase either the size of the chart object (extension) or increase the size of the plotting area. By doing so you’ll see a vertical scroll-bar, but certainly, the user has to scroll …

Same data as above but with a larger plotting area (+ scroll-bars)

Caution for Touch-Devices
It is at this point important to mention that the approaches I have chosen are not really a perfect fit for mobile devices (especially if you think of touching devices which at the same time excludes hovering items …). I’ll have to investigate on this …

Conclusion

In my opinion it is really worth giving this type of chart a try (and I would not be surprised if we’ll see Slopegraphs much more often in the future). But this type of chart is also not a “generalist”, usage and configuration has to be considered with caution.

Download Extension, Demo + Source Code

The solution called “D3SlopeGraph QlikView Extension” is published under MIT-license and free to use (but still, I am happy to hear your feedback!!!)

Issues, Bugs, Wishes

If you have any issues please post them here.

Additional Articles on the Web

Bookmark and Share

Tags: , , ,

Calendar Heatmap QlikView Extension (D3CalendarView)

I have recently published a free calendar heatmap extension to compare values on a day-per-day basis over a long period of time (several years). The extension is developed using D3 and an existing visualization called “Calendar View” by Mike Bostok.

The data passed to the extension is displayed in a diverging color scale. The values are visualized as colored cells per day. Days are arranged into columns by week, then grouped by month and years.

Screenshots

Example 1 - Displaying Historical Dow Jones Data

Example 2 - Visualizing U.S. Commercial Flights

D3CalendarView Extension - Configuration Dialog

Usage Scenarios

There are several scenarios where using this extension seems to be a helpful kind of visualization:

  • Comparing changes of stock exchange prices
  • Making out of stock trends visible
  • etc.

Download, Configuration & Source Code

The source code, a demo-application and the .qar files are published on GitHub, where you will also find a short description how to configure the extension.

GitHub-Repository to post issues, fork the source-code, etc.:






Bookmark and Share

Tags: , , ,

Plea for Open Source Development in the QlikView World

To be honest, I’m a little bit frustrated when talking about open-source development for QlikView. For quite some time I am trying to share as much content as possible and the response/feedback is little.

For a long time I was thinking that maybe I am just developing solutions which are not used/needed by customers and partners, but the last months have shown me that the reality is different:

  • I – quite often – see my solutions (posted on this blog and on CodePlex and GitHub) in real world scenarios
  • And furthermore my prototypes are taken and improved, but I never receive any feedback. That would be OK, but I would really expect that at least some customers or partners post their improvements by applying patches or improvements to CodePlex or GitHub … Unfortunately this has only happened once – today.

Can you imagine why there is no real open-source culture in the entire QlikView community?

Sure QlikCommunity is great and a lot of code-samples are posted there, but you can rarely find ready-to-go open-source solutions out there and furthermore I really miss these projects where many developers are working on the same code, inspiring each other – I only know a few QlikView related open-source initiatives:

Are there other project out there which I do not know?
If you have a look at all the projects mentioned above there is little or no contribution by other developers beside the author (except the QlikView Components project).

Wouldn’t it be nice, if …

  • … there were a lot more open-source projects out there with a vital community of QlikView developers?
  • … some discussions on QlikCommunity result in useful code-pieces posted as Gists (or similar formats)?
  • … you were able to use the resulting solutions in your daily life as a QlikView user/developer/consultant?
  • … we were able to bring our know-how together to create astonishing solutions
  • … we do not need to re-invent the wheel in many cases?

My Contribution

I can only talk for myself and how I am planning to improve the situation in the future:

  • I am planing to move all my content from CodePlex to GitHub because GitHub seems to support participation of other developers much better.
  • I am going to upload all my prototypes on GitHub, not only projects which are ready-to-use but also alpha versions of several prototypes.
  • I will be happy to receive code-requests, patches and so on and integrate them into the main-line of my solutions.

Hmmm, really looking forward to reading your ideas and opinions regarding open-source development in the QlikView world.




Bookmark and Share

QlikView Extension Tutorial #2: Hello World – Creating Your First QlikView Object Extension

This article is part of a series of articles, see also the table of contents.
Previous Chapter

OK, it’s now time to stop with theory and start coding. We’ll create our first “Hello World” extension.
The easiest way to start with your first QlikView Extension is to create the required extension code where QlikView expects extensions to be:

In Windows 7/8 QlikView is loading extensions from the following folder:

C:\Users\%USER%\AppData\Local\QlikTech\QlikView\Extensions\Objects

Step 1 – Creating the Necessary Files

  1. First create a folder named “ET-HelloWorld” (ET stands for Extension Tutorial).
    C:\Users\%USER%\AppData\Local\QlikTech\QlikView\Extensions\Objects\ET-HelloWorld
  2. Create two empty files within this folder, one called “Definition.xml” the other “Script.js”

The Definition.xml file is the main file where QlikView searches for some meta-information of your QlikView extension. We start with a basic set of information:


<?xml version="1.0" encoding="utf-8" ?>
<ExtensionObject  Path="ET-HelloWorld"
                  Label="Hello World"
                  Description="Hello World Extension"
                  Type="object">

</ExtensionObject>

If QlikView loads this file the following information is set:

  • The path (folder) of our extension is set to “ET-HelloWorld”.
  • Label and Description is set to “Hello World” and “Hello World Extension”, we will recognize these values in a few minutes when we are adding the extension to a QlikView Document.
  • Finally we have defined that we are aiming to create an Object Extension by setting the “Type” attribute to “object”.

Now open the Script.js file and type/paste the following code into it:

Qv.AddExtension("ET-HelloWorld",
        function () {

            // Set the extension object's inner Html
            this.Element.innerHTML = 'Hello World';

        });

If this piece of code is loaded by QlikView an extension will be made available in QlikView Desktop and the inner Html of the extension element will be filled with “Hello World”.

Note: For ensuring that we do not have a conflict with other QlikView Extensions I will – in all chapters – use the prefix “ET-“ in all examples we create together.

Test Your Hello World Extension

Now let’s add the newly created extension to a new QlikView Document:

  1. Open QlikView Desktop
  2. Create a new QlikView document and save it
  3. Switch to WebView
  4. Click somewhere in the sheet and activate the context-menu (right mouse click)
  5. Navigate to “New Sheet Object”
  6. Switch to the accordion panel “Extension Objects”
  7. You should now see a window very similar as the one below with at least having your “Hello World” extension in the list of available objects:

Hello World Extension in your list of extensions

  1. Drag & Drop the “Hello World” extension somewhere to your sheet.
  2. You will see the result of your “Hello World” extension:

The resulting Hello World extension

Congratulations, you have created your first QlikView Object Extension!

The Anatomy of a QlikView Extension

It’s now time to understand the anatomy of a QlikView extension. There are at least, as you have realized in your Hello-World example, two files required for an extension to work property:

  • Definition.xml
  • Script.js

But there are other files too, so here’s the list of all possible elements of an extension:

File Name Description
Definition.xml Within the Definition.xml file some meta-data (like the name of the extension, a description, etc.) and all properties and initial values for the extension are defined.
Script.js The Script.js file is the main entry point for your extension, QlikView is loading the extension only if a Script.js can be found and is a function called Qv.AddExtension within this file.
Icon.png By adding a file called Icon.png to the directory you can define the icon shown in the list of all extensions.
This should be a PNG-file with 24×24 pixels.
.qvpp files QlikView Property Pages, you’ll learn more how to use this functionality in some of the following chapters.
Additional files Additional resource files like JavaScript files, images, etc. – you’ll learn more how to reference these files in one of the following chapters.

In the next chapter we’ll concentrate on improving the experience of our Hello-World example.

Bookmark and Share

Tags: , , ,