Generic object in visualization extensions
The generic object is underlying all visualizations in Qlik Sense. This allows you to use the Qlik associative engine capability. A generic object is created when your custom visualization extension is added to an app. It contains the initial properties specified and it is persisted in the app.
Properties and layout
The generic object has properties in a structure that you define. There are two kinds of properties:
-
User defined: Qlik Sense only persists the properties and includes them in the layout as-is. Their usage is then defined in the code.
-
Qlik associative engine defined: The Qlik associative engine validates the properties and replaces them in the output - the layout - by the calculated counterparts. A
qHyperCubeDef
containing the dimension and measure definitions is replaced by aqHyperCube
containing the calculated values.
Qlik Engine JSON API: qHyperCubeDef
Qlik Engine JSON API: qHyperCube
Tip: All properties defined by the Qlik associative engine starts with the
letter "q"
. Therefore, it is good practice to let your own custom properties
start with another letter.
The properties of a visualization extension are set up in initialProperties
.
Example: People chart initialProperties
initialProperties : {
version: 1.0,
qHyperCubeDef : {
qDimensions : [],
qMeasures : [],
qInitialDataFetch : [{
qWidth : 2,
qHeight : 50
}]
}
}
This creates a hypercube at root level so you know where to find your data when
you define the paint method. The preceding example also creates a user defined
property called version
. The Qlik associative engine only persists user defined
properties so you can easily view the version history by using layout.version
.
You can create visualization extensions with multiple hypercubes or visualization extensions without properties, hence without any hypercube at all. The Hello world visualization extension is an example of a visualization extension with no hypercube.
You can also create visualization extensions with other predefined properties:
qListObject
qStringExpression
qValueExpression
Using qListObject
qListObject is underlying list boxes and is suitable if you want to create a
list of all values from a field. The Horizontal listbox visualization extension
exemplifies the qListObject
together with some user defined properties.
A list object is a visualization that contains one dimension. When getting the
layout of a list object (qListObjectDef
), all values are rendered. If
selections are applied to a list object, the selected values are displayed
along with the excluded and the optional values.
Just like you can have multiple hypercubes in your properties, you can also have multiple list objects. If you have multiple list objects, you need to place them at different paths in your property structure
Example: Horizontal listbox initialProperties
initialProperties : {
version : 1.0,
qListObjectDef : {
qShowAlternatives : true,
qFrequencyMode : "V",
qSortCriterias : {
qSortByState : 1
},
qInitialDataFetch : [{
qWidth : 2,
qHeight : 50
}]
},
fixed: true,
width: 25,
percent: true,
selectionMode: "CONFIRM"
}
Qlik Engine JSON API: qListObjectDef
Using multiple hypercubes
When creating visualization extensions with multiple hypercubes to combine several data sets, you need to place the hypercubes at different paths in your property structure.
Example: Multiple hypercubes defined in initialProperties
initialProperties : {
qHyperCubeDef : {
qDimensions : [],
qMeasures : [],
qInitialDataFetch : [{
qWidth : 10,
qHeight : 50
}]
},
second:{
qHyperCubeDef : {
qDimensions : [],
qMeasures : [],
qInitialDataFetch : [{
qWidth : 10,
qHeight : 50
}]
}
}
}
Using qStringExpression and qValueExpression
You can use qStringExpression
or qValueExpression
if you want an expression to
be evaluated. A string expression is an expression that returns a single string
value. An expression value is an expression that returns a single numeric value.
Example: qStringExpression and qValueExpression
version : {
qStringExpression : "=QlikViewVersion ()"
},
fields : {
qValueExpression : "=Count(DISTINCT $Field)"
}
Qlik Engine JSON API: qStringExpression
Qlik Engine JSON API: qValueExpression