Skip to content

Instantly share code, notes, and snippets.

https://ui.rilldata.com/disco/disco-prod/explore/order_combined_dashboard?gzipped_state=H4sIAKmpD2gAA6yd2XLjSLKmnybPxcAyrTKzqrr7oi-4SaLErUlKKtVNG0RCElIkweYiJfX083mAVPwOqHrGxsZOdR7FHyCWWDx895c8e_3nOn8pdv-z2_xzky8Wn0f_av3P7u2f19PW_zz8M52_ZJtdvs02_16lyyzpDpJedzJNPn37-6dvf2skV_l8m7SK5TpdHZLGfbHfAX_61rLORkP-vhk3Bt3YbjbvPn37_aw7GESs3QA7Nc6Tdr6dFcnXvyX99JBMs-0u-Rq7uzdy88ub4pA-ZhG46g7OJ9K8lot73VYnaQzaSaPfkWt63c6gMZgKcNU47zX6Agwv5Db9xkR-3bd_j38PGtNh_-5T69unRieiI_n40WiSTDsTedh4Ork-b4wjMLmQv0ctefDkbjLtyGtNL8ZJM0v3u4Ng49aUYds8Z7t89Rjx6_PrMHe_J73OMJkwTNI3vu4nl9lrttjInW468mW3jatO0noqZsUi3clwp2kqjU2x-vSb_blNmpt0Nf8vXd_-om__-NFPb9On9D6shIjfZ4t8Jc3iOZ895QJsi8V-lyX9YpfzgHd8tstf-IY5z9lvnxTfp4vFIWntN3mx38aOebo8vd7kqVhLxzLfcP9DMnnWN5lvb_KZjNH85ftqt984JAuIPCTbPCwKbRYj-uWCh122WacyP48r-dh8U7AXF4vMvk6elG-27pVp54_yrotkUiyyZPKaLwVMFzKri_SQMvSKzJ6y5SE5y1dZclEs5XGLub7hIrsoNvqwbJaMuN2bg05j251lSWuTMdjS-5Img5ShShcyFIvsJysk2yTtNFWYUU_oSBrLjNsNZPku8myVjPO5jvh_xxJZoIvn9CWf6wAskla-y9-ylf52wfswKov0pdg4PF0lk12hC2CxKGTyFstCF3ZoVkZ8nc7S5Ea_aP2UJqP0
@mindspank
mindspank / sales_by_region.yaml
Created December 11, 2024 18:10
Example API Endpoint in Rill
# sales_by_region.yaml
type: api
metrics_sql: >
select
total_sales,
sales_rep
from SalesMetricsView
where region = {{ .args.region }}
{
"name": "apptofiles",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Tests?\" && exit 1"
},
"keywords": [],
"author": "",
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 / sessionpage.js
Last active September 18, 2020 10:46
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 / 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 / console.js
Last active April 18, 2018 19:26
Get object properties in Sense
document.addEventListener('click', function(e) {
(function recurse(scope) {
if(!scope.model) return recurse(scope.$parent);
scope.model.getProperties().then(properties => {
delete properties['qInfo'];
delete properties['qMetaDef'];
window.qliksenseobject = JSON.stringify(properties, null, 4);
console.log( JSON.stringify(properties, null, 4) )
})
})(angular.element(e.target).scope());
@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
},
define([], function() {
return {
initialProperties: {
version: 1.0,
qHyperCubeDef: {
qDimensions: [],
qMode: 'P',
qMeasures: [],
qInitialDataFetch: [{
qWidth: 3,