Skip to content

Instantly share code, notes, and snippets.

@mindspank
mindspank / hacky.js
Last active November 21, 2017 01:39
Hacky way to page data with multiple cubes in a single extension
define(["jquery", 'qvangular'], function ($, qv) {
return {
initialProperties: {
qHyperCubeDef: {
qDimensions: [],
qMeasures: [],
qInitialDataFetch: [{
qWidth: 2,
qHeight: 1
}]
const jwt = require('jsonwebtoken')
const fs = require('fs')
const path = require('path')
const request = require('request-promise') //Peer-dep to request
const QLIK_HOST = 'usrad-aklprobook'
const QLIK_VIRTUAL_PROXY_PREFIX = 'stratsys'
/**
* In this case we re-use the private cert from Qlik to sign our token
@mindspank
mindspank / qsocks.node.connect.js
Last active October 23, 2017 09:15
Very verbose example on how to connect qsocks to a server.
var qsocks = require('qsocks');
var fs = require('fs');
var request = require('request');
//Set our request defaults, ignore unauthorized cert warnings as default QS certs are self-signed.
var r = request.defaults({
rejectUnauthorized: false,
host: 'usrad-akl.qliktech.com',
pfx: fs.readFileSync("C:\\QlikTech\\Demo Team\\Node\\qsocks\\client.pfx")
})
@mindspank
mindspank / QES-NoProxy-Certs.js
Last active March 31, 2017 11:25
QES-NoProxy-Certs.js
var WebSocket = require('ws');
var fs = require('fs');
var ws = new WebSocket('wss://usrad-akl:4747/app/', {
origin: 'https://usrad-akl', // <- This origin has to be in the WebSocket White list of Qlik Sense
cert: fs.readFileSync(__dirname + '/client.pem'),
key: fs.readFileSync(__dirname + '/client_key.pem'),
headers: {
'X-Qlik-User': 'UserDirectory=Internal;UserId=sa_repository' // Passing a user to QIX to authenticate as
},
@mindspank
mindspank / sessionpage.js
Created March 1, 2017 16:12
sessionpage
define(['qlik', 'qvangular'], function (qlik, qv) {
return {
initialProperties: {
version: 1,
qHyperCubeDef: {
qSuppressZero: true,
qSuppressMissing: true,
qInitialDataFetch: [{qTop: 0, qLeft: 0, qWidth: 2, qHeight: 200}]
}
},
@mindspank
mindspank / mp3base64.js
Created December 25, 2016 11:23
Base64 in extensions
define(['jquery', './mp3source'], function($, defaultsound) {
return {
initialProperties: {
sound: [{ label: 'Default', value: defaultsound}]
},
paint: function($element, layout) {
$element.empty();
let audio = $(`<audio controls="controls" autobuffer="autobuffer"><source src="data:audio/mp3;base64,${layout.sound[0].value}"/></audio>`);
audio.appendTo($element)
}
@mindspank
mindspank / index.js
Last active December 21, 2016 13:26
Connect to Qlik Sense Desktop using enigma.js
const enigma = require('enigma.js');
const qixSchema = require('../node_modules/enigma.js/schemas/qix/3.1/schema.json');
const WebSocket = require('ws');
const config = {
schema: qixSchema,
session: {
unsecure: true,
port: 4848
},
@mindspank
mindspank / gist:e1c51c04c7a7053e19f3
Last active December 9, 2016 10:11
Qlik Sense API overview

Qlik Sense Proxy Service API, Qlik Sense Repository Service API and Qlik Sense User Directory Connector API are REST API and can be consumed from all languages and environments that supports REST.

Qlik Sense QVX SDK and Qlik Sense .Net SDK are .Net libraries that can be consumed from all languages and environments that supports .Net such as the Windows plattform.

The Qlik Sense Backend, Extension and Mashup API are javascript libraries.

The Qlik Sense Engine API is a web socket API that can be consumed by all languages and environments that supports web socket.

@mindspank
mindspank / DoReload
Last active December 9, 2016 10:07
Reload app using mashup api in a extension
define(['js/qlik', 'jquery'], function(qlik, $, $element) {
var id = 2;
return {
paint: function($element) {
var app = qlik.currApp();
$element.html("<button id='reload'>Reload</button>")
define([], function() {
return {
initialProperties: {
version: 1.0,
qHyperCubeDef: {
qDimensions: [],
qMode: 'P',
qMeasures: [],
qInitialDataFetch: [{
qWidth: 3,