🎁🎄🎅 At Qlik, listening to our customers and users is at the heart of everything we do. For those of you who missed the ability to click on the Qlik logo or found it a bit quirky having all app assets, especially Sheets and Bookmarks, under a single button, we have great news! 🎉 Here’s an early Christmas gift from the dedicated teams atQlik– just for you. 🙇♂️ Enjoy!
The new Navigation Menu object in Qlik allows for a flexible and easy way to add a menu to your Qlik Sense apps. Whether you're designing an app in Qlik Sense or embedding Qlik capabilities into a web platform, you should make this new object your go-to solution for organized and stylish navigation.
In this blog post, we'll explore into the new Navigation Menu object, its features, customization options, embedding capabilities, and key considerations for getting the most out of it. For a quick overview, check out the SaaS in 60 video below:
Navigation Menu in Qlik Sense Apps
Up until now, navigation in your apps has been limited to the following options:
Navigating through the built in Sheets tab in the assets panel
Custom built extensions
Or, in-app, using existing objects:
Using buttons:
Using the layout container in addition to buttons to create custom sidebars:
The new Navigation Menu object enhances your Qlik Sense app usability and makes it easier to achieve similar results faster tailored to your needs
Key Features:
Sheet Organization: Automatically arranges sheets and groups into a hierarchy for intuitive navigation.
Flexible Layouts: Choose from vertical, horizontal, or drawer-style menus, adapting to your app’s design needs.
Custom Styling: Personalize fonts (family, size, weight, and color), background images, align items, and hover and highlight effects. You can also toggle icons or resize the buttons.
Mobile-Optimized: Enable a list view for seamless navigation on mobile devices.
Integration-Friendly: Pair with "sheet title off" and selection bar for a minimalistic yet functional design.
You can toggle the "App Navigation bar > Navigation" or "Sheet Header" option to OFF in the UI settings and have the Navigation Menu object replace your traditional Sheets for a more minimalistic look.
👀 You can see the Navigation Menu object in action on the What’s New App:https://explore.qlik.com/app/4911b1af-2f3c-4d8a-9fd5-1de5b04d195c
Navigation Menu embedded in your Web Apps
For developers looking to incorporate Qlik analytics into their web applications, the Navigation Menu object can save time when developing a custom sheet navigation. You can easily embed the navigation menu object and customize it to meet your needs. (Learn more here)
How to Embed the Navigation Menu
Here’s a simple example of embedding a horizontal navigation menu in your web app using Nebula.js.
You can read more about Embedding and access the full documentation on qlik.dev:
const nuked = window.stardust.embed(app, {
context: { theme: "light" },
types: [
{
name: "sn-nav-menu",
load: () => Promise.resolve(window["sn-nav-menu"]),
},
],
});
nuked.render({
type: "sn-nav-menu",
element: document.querySelector(".menu"),
properties: {
layoutOptions: {
orientation: "horizontal",
alignment: "top-center",
},
},
});
Advanced Customization
Using JSON properties, you can customize the navigation menu extensively:
Adjust the orientation, alignment, and layout.
Add drawer functionality for compact navigation.
Style hover and highlight effects, font colors, and background images.
Align menu items to the left, center, or right for a consistent look.
These capabilities make the Navigation Menu a versatile tool for developers working on embedded analytics projects.
nuked.render({
type: "sn-nav-menu",
element: document.querySelector(".menu"),
properties: {
"layoutOptions": {
"drawerMode": false,
"hideDrawerIcon": false,
"orientation": "horizontal",
"layout": "fill",
"alignment": "top-center",
"separateItems": false,
"dividerColor": {
"color": "rgba(0,0,0,0.12)",
"index": -1
},
"largeItems": false,
"showItemIcons": false
},
"components": [
{
"key": "general"
},
{
"key": "theme",
"content": {
"fontSize": "18px",
"fontStyle": {
"bold": true,
"italic": false,
"underline": false,
"normal": true
},
"defaultColor": {
"index": 15,
"color": "#000000",
"alpha": 1
},
"defaultFontColor": {
"color": "#ffffff",
"alpha": 1
},
"highlightColor": {
"index": -1,
"color": "#3ba63b",
"alpha": 1
},
"highlightFontColor": {
"color": "#ffffff",
"alpha": 1
},
"hoverColor": {
"index": -1,
"color": "#ffa82e",
"alpha": 1
},
"borderRadius": "20px"
}
}
]
},
navigation: sheetObject.navigation,
});
Things to watch out for
While the Navigation Menu object is a fantastic addition, there are some key points to consider:
Content Security Policy (CSP): If you use background images from external URLs, ensure their origins are added to your tenant’s CSP allowlist. This step is essential for compliance and functionality.
Hierarchy Management: Group sheets effectively in your Qlik app to create a logical navigation structure.
Mobile Responsiveness: Test the menu thoroughly on various devices to ensure an optimal user experience, especially when using the list view.
Design Consistency: Align the menu’s styling with the rest of your app for a unified look and feel.
...View More
We’re excited to announce the launch of our enhanced Demo Site - explore.qlik.com, designed to showcase the full potential of Qlik’s product portfolio in an interactive and engaging way!
DBeaver is a popular and powerful SQL editor available built as an Eclipse Rich Client Platform (RCP) just like Qlik Talend Studio. The DBeaver Plugin is also available in the Eclipse Marketplace so it can be incorporated directly into your Studio environment. This document provides a step-by-step guide to extend Talend Studio with DBeaver.
Customizing your Qlik Sense apps not only enhances their visual appeal but also ensures consistency with your organization's branding guidelines. With custom themes you can modify colors, fonts, and layouts on both global and granular levels, giving you complete control over the look and feel of your analytics.
In this blog post, we'll dive into the essentials of building a custom theme, dissect the anatomy of the theme's JSON file, and share some tips and tricks to help you create themes easily.Bonus: along the way, we will be creating a Netflix inspired theme. We'll go from this:to this:Getting Started:The Essentials of Building a Theme
A custom theme in Qlik Sense is a collection of files stored in a folder.
It typically includes:
Definition File (.qext): This file defines the theme's metadata, such as its name, description, type, and version.{
"name": "Netflix Theme",
"description": "A custom theme inspired by Netflix's branding.",
"type": "theme",
"version": "1.0.0",
"author": "Ouadie Limouni"
}
Main JSON File (.json):The core of your theme where you define styles, colors, fonts, and other visual properties.
Optional Assets:
CSS Files: For additional styling that can't be achieved through the JSON file alone.
Font Files:Custom fonts to enhance typography.
Images: Logos or background images to incorporate into your theme.
Folder structure example:
netflix-theme/
├── netflix-theme.qext
├── theme.json
├── netflix.css (optional)
├── BebasNeue-Regular.ttf (optional)
└── images/ (optional)
└── background.jpg
Anatomy of the `theme.json` File(The full theme code is attached at the end of this blog post)
Variables Section (_variables)
Variables allow you to define reusable values (like colors and font sizes) that can be referenced throughout your theme. Variables must be prefixed with `@`.Example:
"_variables": {
"@primaryColor": "#E50914",
"@backgroundColor": "#141414",
"@ObjectBackgroundColor": "#3A3A3A",
"@fontColor": "#FFFFFF",
"@secondaryColor": "#B81D24",
"@fontFamily": "\"Bebas Neue\", Arial, sans-serif",
"@fontSize": "14px"
}
Global Properties
These properties set the default styles for your entire app.
Color: Sets the default font color.
Font Size: Sets the default font size.
Font Family: Sets the default font family.
Background Color: Sets the default background color for visualizations.
Sheet Styling
Customize the appearance of sheets, including the title backgrounds.
Object Styling
Control the styling of various objects (charts, tables, etc.) in your app.
Data Colors
Define how data appears in your visualizations, including primary data color, colors for null values, and colors for different selection states.Learn more here.
Palettes and Scales
Palettes are arrays of colors used for dimensions (categorical data). You can define custom palettes for data and UI elements.
"palettes": {
"data": [
{
"name": "Netflix Data Palette",
"scale": [
"#E50914",
"#B81D24",
"#221F1F",
"#FFFFFF"
]
}
],
"ui": [
{
"name": "Netflix UI Palette",
"colors": [
"#FFFFFF",
"#B3B3B3",
"#333333",
"#000000"
]
}
]
},
Scales are used for measures (numerical data) and can be gradients or classes.
"scales": [
{
"name": "Netflix Red Gradient",
"type": "gradient",
"scale": ["#B81D24", "#E50914"]
},
{
"name": "Netflix Grey Gradient",
"type": "gradient",
"scale": ["#333333", "#B3B3B3"]
}
],
Custom Fonts and StylesTo achieve the Netflix-style typography, we can use a font similar to Netflix's branding. For this example, we'll use "Bebas Neue", a free font that's close in style.
Extended Object Styling
You can apply specific styles to individual chart types, overriding global settings.
Example for a Bar Chart:
"barChart": {
"label": {
"value": {
"color": "@fontColor",
"fontSize": "12px",
"fontFamily": "@fontFamily"
}
},
"bar": {
"fill": "@primaryColor"
},
"outOfRange": {
"color": "#404040"
}
},
Tips and Tricks
Creating custom themes can be a rewarding experience, and here are some tips to help you along the way:
1. Use Variables for Consistency
Defining colors, font sizes, and other reusable values as variables ensures consistency across your theme and makes updates easier.
"_variables": {
"@primaryColor": "#E50914",
"@fontSize": "14px"
}
2. Leverage Inheritance
The `_inherit` property allows your theme to inherit properties from the default theme, reducing the amount of code you need to write.
{
"_inherit": true,
// Your custom properties here
}
3. Test Incrementally
Apply your theme during development and test changes incrementally. This approach helps you catch errors early and see the immediate impact of your changes.
4. Organize Your Theme File
Keep your `theme.json` file organized by grouping related properties. This practice makes it easier to navigate and maintain your theme.
5. Prefix Your Variables and Themes
To avoid conflicts with other themes or variables, use unique prefixes.
"_variables": {
"@netflix-primaryColor": "#E50914",
}
6. Validate Your JSON Files
Always validate your JSON files to prevent syntax errors. Use online tools like JSONLint.
7. Utilize Custom Fonts Carefully
Don't overuse custom fonts and ensure that any custom fonts you use are properly licensed for use in your application.
8. Use High-Quality Images
If you're incorporating images (like backgrounds or logos), make sure they are high-quality and optimized for web use.
-> Stay up-to-date with the latest on qlik.dev
Applying the Netflix Theme to Your App
Once you've created your custom theme, you can apply it to your Qlik Sense app:
1. Upload the Theme: Upload the zipped folder to the Themes section in your Console.2. Apply the Theme: In your app, go to the App options menu, select Appearance, and choose your custom theme from the list.
📌 If you are an advanced developer, checkout the following blog posts that tackle theming in an embedded context:- Theming with Picasso.js- Qlik Embed (theming section towards the end)
Happy theming!
...View More
A new file management system has been added to Qlik Cloud allowing users to create folders and subfolders for their data files. This hierarchical folder structure is available in your personal space, as well as shared, managed and data spaces. Now, I can add folders to a data space in my tenant and use folders to organize my files. This is extremely helpful when I have a project that has a lot of data files.
There are two ways to add folders to a space. The first is through Space details as seen in the image below.
After clicking on Space details, select Details. Then select Data files.
From the screenshot below, I can use the icons at the top or click on the eclipse at the end of a folder row to:
Upload files to a folder
Add a folder
Copy a folder
Cut and paste a folder
Delete a folder
I can also use the icons and menu options to cut, copy and paste files and/or folders to somewhere else within the space or to another space. More than one file can be cut/copy/pasted by selecting the entire folder or by holding ctrl and selecting each file.
The second way to add a folder to a space is via Administration > Content.
Let’s add one more folder to the CAJ space to see how it is done. To add a 2023 folder to the CAJ space, I will click on the Add folder icon and enter the name of the new folder. Be sure to confirm the path is correct. If not, select the correct path from the Path dropdown. Then click the Create button.
Once the folder is added, I can click on the eclipse for the 2023 folder and select Upload file to folder to upload files to this folder. If I used the Upload icon at the top, I would have to change the path to the 2023 folder before uploading my files.
This enhancement also lets me create subfolders as seen in the image below. I have a Population folder in the Census folder.
Now, let’s look at how we can load the data files in a Qlik Sense app using the folder structure. From the script editor in Qlik Sense, I can select the CAJ space and then click the Select data icon.
I can see the folder structure I have set up and I can drill down into the folders to select the file I want to load.
Notice that the file path in the script matches the hierarchical file structure I set up. This file structure can also be used when storing QVDs or inserting a QVS file.
I love this new feature in Qlik Cloud. Sometimes I have the need to organize my files by their source or in the example I shared in this blog by the year of the project. This allows me to organize my data in a way that makes sense for development. To learn more about this enhanced file management feature, check out Qlik Help.
Thanks,
Jennell
...View More
In this blog post, I will revisit a topic that I blogged about over a decade ago, the use of a silent legend. By default, a legend is created in a visualization when there are multiple dimensions and/or measures. The legend helps the user understand the visualization. Legends are helpful and without them, users may not comprehend the data in a visualization. But what do you do if have many visualizations on a sheet? Do you need a legend for each chart? Let’s look at the various ways a legend can be used and how a silent legend can reduce the clutter and give a sheet a cleaner look.
In the screen shot below, there are four visualizations at the bottom of the sheet with legends.
In this app, the legends are all the same because the visualizations are using the same asset class dimension. In this example, the legend does not need to be displayed for each visualization because it is redundant. Let’s see how this sheet will look if only one of the legends are kept on the sheet. A legend can easily be removed by toggling off Show Legend in the properties of the chart.
Here is what the sheet looks like with just one legend.
The sheet looks better with one legend versus four legends. This use of one legend for four charts, has decluttered the sheet and reduced repetitiveness. If a developer wants a legend to be displayed without expanding the chart, they need to ensure the visualization is large enough. Without the legends in the three stacked bar charts, less space is needed for the charts, thus they can be made smaller, if desired, to take up less space on the sheet. Since all the visualizations at the bottom of the sheet are using the same legend, the legend was placed with the first visualization, assuming a user is reading top to bottom, left to right.
Now, the beauty of a silent legend is that all visualization legends can be removed from a sheet. In the screenshot below, the four headings at the top of the sheet are colored based on the asset class they represent. So, Equity is green, Fixed Income is dark blue and so on.
This is an example of silent legend. The legend is implied by the asset class headings. This option looks even better and cleaner than the sheet with one legend.
The use of a silent legend is possible in this app because there are only four values for asset class. I have seen this work nicely with up to six values. Anything more may become too cumbersome and may require a legend to be used. Also, if the four visualizations at the bottom of the sheet used different dimensions, then multiple legends should be used. Legends are important and they should not be removed to add space if the chart is unreadable without it. What good is a pretty chart if you do not understand it.
Thanks,Jennell
...View More
If you’ve came across the initial Qlik Cloud Wordpress plugin on the Qlik Community Design blog and gave it a try, you probably have run into some issues with it. Today, I’m going to share a new updated version of the Qlik Cloud WordPress plugin that brings a more efficient way to embed Qlik Cloud analytics into your WordPress websites.
In this post, I'll walk you through the steps to install, configure, and use the new version of the plugin to bring your Qlik Cloud visualizations directly into your WP pages and posts.
Why the Update?
The previous version of our plugin relied on JWT tokens for auth, iframes (single integration API) and nebula.js for embedding, which worked but had limitations such as third-party cookies. Qlik Embed is the new embedding library and adopts better auth flows. In this version, I'm using OAuth impersonation to generate access token on the backend without need for users to interact with a login page.
Installation Steps
1. Install the Plugin
Log in to your WordPress Admin Dashboard.
Navigate to Plugins on the left sidebar.
Click on "Add New" at the top of the page.
Upload the zipped file (download it from GitHub here)
Locate the plugin and click "Install Now".
After installation, click "Activate".
Note: If you have the previous version installed, deactivate and delete it before installing the new one to avoid conflicts.
Configuring Qlik Cloud Wordpress Plugin
Before using the plugin, you'll need to set up OAuth impersonation in your Qlik Cloud tenant.
Create an OAuth Client
Log in to your Qlik Cloud tenant as an administrator.
Navigate to Management Console > Integrations > OAuth.
Click on "Create new" and fill in the required details:
Name: Give a recognizable name like "WordPress Integration".
Allowed Origins: Add your WordPress site's URL.
Select the right scopes to grant to the client from the Scopes list.
Check “Allow Machine-to-Machine (M2M)” and “Allow M2M user impersonation”
Change the consent method to Trusted
Save the client credentials (Client ID and Client Secret) to be used in WordPress Config.
Docs here: https://qlik.dev/authenticate/oauth/create/create-oauth-client-m2m-impersonation/
Make sure to read through the Guiding Principles of OAuth Impersonation:https://qlik.dev/authenticate/oauth/guiding-principles-oauth-impersonation
P.S: this method will create a number of anonymous users on your tenant and you need to implement a way to remove these users periodically (using a Qlik Application Automation / users API)
Configuring the Plugin
In your WordPress dashboard, go to Settings > Qlik Cloud Embed.
Fill in the required fields:
Host: e.g., https://your-tenant.region.qlikcloud.com.
Client ID: From the OAuth client you created.
Client Secret: From the OAuth client.
Click "Save Changes".
Using the Plugin
Embedding Sheets and Visualizations
With the plugin configured, you can now embed Qlik Cloud content using Shortcodes.
1. Embed an Entire Sheet/App
Use the [qlik-embed-app] shortcode:
[qlik-embed-app appid="1234-c56a-4062-ac50-377bba443e85" sheetid="12345-698f-449f-9a17-dca17eeadb71"]
Parameters:
appid: App ID
sheetid: Sheet ID
2. Embed Individual Visualizations/Objects
Use the [qlik-embed-object] shortcode:
[qlik-embed-object appid="1234-64317-8432" objectid="1234-5553-326432"]
Parameters:
appid: App ID
objectid: Object ID
3. Embed Selections bar
Use the [qlik-embed-selections] shortcode:
[qlik-embed-selections appid="1234-c56a-4062-ac50-377bba443e85"]
Parameters:
appid: App ID
Tip:
Finding IDs in Qlik Cloud
Open your app in Qlik Cloud.
Navigate to the sheet or object you want to embed.
In the URL, find the sheet ID
Sheet ID comes after /sheet/
For object, right click on the chart, click on Embed, and look for objectid under the chart preview.
You can download the plugin here:https://github.com/qlik-demo-team/wp-qlik-saas-plugin
P.S: this plugin is maintained by myself. If you find any bugs or issues, please report them to me or create an issue on Github and I'll do my best to resolve them quickly.
Thank you!
...View More