Qlik Community

New to Qlik Sense

Discussion board where members can get started with Qlik Sense.

Save $300 - Register for QlikWorld (formerly Qonnections) by January 31st: Learn More

Use Widget library to import visualizations from a common app?

I'm new to Qlik Sense development and would like your expert opinions on whether or not the following is technically feasible and, if so, is it the best way to address the problem.

Problem(s): We have many clients that use the same basic Qlik Sense app, albeit with their own data. We also have a second app which is essentially a copy of the basic app with additional visualizations.  When we make a change to a visualization we have to change it in both apps and then unpublish/republish each app for each client.  So basically we have issues of maintainability and reusability.

I was thinking it would be nice if we could have a "library" of visualizations that each app would dynamically reference so that we would only need to change the base visualization and the apps would "get" the changes. Here's how I propose to accomplish this:

1) Create a "base" QlikSense app with all the required visualizations, make each a Master Item.

2) Create a generic Common Component that uses javaScript/Capability APIs to obtain visualization objects from any app.

     For example: <ccs-import-viz application="" object=""/>

3) For each visualization in the base app, create a Widget that configures an instance of the Common Component.

     For example: WidgetChart1 = <div><ccs-import-viz application="BaseApp" object="Chart1"/></div>

4) Create a library of these Widgets.

5) Using the Widget library, replace the current visualizations in our client app(s) with instances of these Widgets.

My hope is that any change to a visualization in the base app would get automatically imported into the client apps, but I guess it all depends on when the widgets actually get "resolved" and the underlying Common component script is executed.

Will this approach work?  Is it a good idea?

I've actually had partial success in implementing this but would like your opinions before I invest any more time on it.