QvUtils.js

QvUtils.js is a lightweight library which extends the native QlikView JS API and in addition provides some extra useful functions to make the life of a QlikView Extension developer a little bit easier.

QvUtils.js consists of three parts:

Downloads

Zipped Package

Object Extensions

createDivthis.createDiv([id = Document_CHX])
Appends a new DIV-element to the Extension container. The element id will the Object Extension id with backslashes replaced by underscores, i.e Document_CH01

Arguments

1. [id=Document_CHX] (string) - The element ID.

Returns

(object): Returns a jQuery Object

Example

//Create a standard DIV
Qva.AddExtension('MySampleExtensions', function() {
var $mydiv = this.createDiv();
$mydiv.css('backgroundcolor', 'green');
}
//User-defined id
Qva.AddExtension('MySampleExtensions', function() {
this.createDiv('MyID');
//select the element through jQuery
$('#MyID').css('backgroundcolor', 'green');
}

getDatathis.getData()
Returns a object containing the data exposed to the extension. Contains both a row matrix and a column matrix of data and its associated metadata.

Returns

(object): Returns the data object

Example

Qva.AddExtension('MySampleExtensions', function() {
  var data = this.getData();
  //Get first column
  data.Column[0]
  //Get first column label
  data.Column[0].label
  //Get the value of first row and second column
  data.Row[0][1].text
  //Get the value of first column and the first value
  data.Column[0][0].text
}

showDatathis.showData()
Prints out available QlikView data that's exposed to the extension. Useful for debugging your data structure and identifying nulls and missing values..

Example

//Print out available data
Qva.AddExtension('MySampleExtensions', function() {
this.showData();
// -> Prints out a data table in your extension
}

Document Extensions

createTabrowthis.createTabrow([opt])
Extends Document.SetTabrowPaint(callbackFn)
Creates a rudimentary tabrow and appends it to the page for easy styling via css.
HTML - structure:
- div - Container
-- ul - Unordered list
--- li - Tab
---- a - Tabname

Arguments

1. (object): Configuration Object - Default values below

div: {
  id: 'tabrow',
  classes: 'tabrow'
},
ul: {
  id: 'root',
  classes: 'tabrow'
}

Example

//Create a generic tabrow
Qva.AddDocumentExtension('MySampleExtensions', function() {
  //Load CSS to style our tabrow
  Qva.LoadCSS('path to style.css')

  this.Document.SetTabrowPaint(function() {
    //Create generic tabrow
    this.createTabrow();
  });
}
//Create a custom tabrow
Qva.AddDocumentExtension('MySampleExtensions', function() {
  //Load CSS to style our tabrow
  Qva.LoadCSS('path to style.css')

  this.Document.SetTabrowPaint(function() {
    //Create tabrow with custom id's and classes
    this.createTabrow({
      div : {
        id: 'myCustomId',
        classes: 'my multiple class names'
      }
    });
  });
}

Utility

qvutils.getRandomqvutils.getRandom(min,max)
Returns a random integer between min and max, inclusive. If you only pass one argument, it will return a number between 0 and that number.

Arguments

1. min (number): Min number or Max number when passed as single argument
2. [max](number): Max number

Example

  //Random number between 0 and 100
  qvutils.getRandom(100)

  //Random number between 50 and 60
  qvutils.getRandom(50,60)

qvutils.isBooleanqvutils.isBoolean(value)
Checks if value is a boolean value.

Arguments

1. value (*): The value to check.

Returns

(boolean): Returns true if the value is a boolean value, else false.

Example

  qvutils.isBoolean(null);
  //Returns false

qvutils.isNullOrEmptyqvutils.isNullOrEmpty(value)
Checks if value is null, empty or undefined.

Arguments

1. value (*): The value to check.

Returns

(boolean): Returns true if the value is empty, null or undefined.

Example

Qva.AddExtension('MyExtension', function() {
  qvutils.isNullOrEmpty(this.Layout.Text0.text);
  //Checks if extension property has been filled in
})

qvutils.isNumberqvutils.isNumber(value)
Checks if value is a number

Arguments

1. value (number): The value to check.

Returns

(boolean): Returns true if the value is a number, false otherwise

Example

qvutils.isNumber(5 * 100)
//true

qvutils.isNumber('10')
//true

qvutils.isNumber('HelloWorld')
//false

qvutils.transposeqvutils.transpose(array)
Transposes a multi dimensional array. Useful to transpose a multi-dimensional row array into columns etc.

Arguments

1. array (array): The array to transpose

Returns

(array): Returns a new array that has been transposed.

Example

Qva.AddExtensions('MyExtensions,' function() {
  qvutils.transpose(this.Data.Rows);
  //Returns a columnar representation of the row data.
})

qvutils.getMinqvutils.getMin(array, [prop=data])
Returns minimum value from an array of objects.
Useful to determain the lowest value of a expression column.

Arguments

1. array (array): The array of objects 2. [prop='data'] (string) The Object property holding the values. Defaults to "Data" which is QV native.

Returns

(number): Returns the minimum value.

Example

Qva.AddExtension('MyExtensions,' function() {
  var data = this.getData();
  qvutils.getMin(data.Column[1])
  //Returns the minimum value of the expression column.
})

qvutils.getMaxqvutils.getMax(array, [prop=data])
Returns mxaimum value from an array of objects.
Useful to determain the maximum value of a expression column.

Arguments

1. array (array): The array of objects 2. [prop='data'] (string) The Object property holding the values. Defaults to "Data" which is QV native.

Returns

(number): Returns the maximum value.

Example

Qva.AddExtension('MyExtensions,' function() {
  var data = this.getData();
  qvutils.getMax(data.Column[1])
  //Returns the maximum value of the expression column.
})