<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Multi Dimension Extension not working in Integration, Extension &amp; APIs</title>
    <link>https://community.qlik.com/t5/Integration-Extension-APIs/Multi-Dimension-Extension-not-working/m-p/1058392#M4491</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm trying to create an extension that will work with more than one dimension and one measure.&lt;/P&gt;&lt;P&gt;Somehow I always get a qNum error in the console. Any idea why I can't "see"&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&amp;nbsp; return d[2].qNum?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;=========&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;define( ["jquery","./d3"], function ( $ ) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; 'use strict';&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; return {&lt;/P&gt;&lt;P&gt;&amp;nbsp; initialProperties: {&lt;/P&gt;&lt;P&gt;&amp;nbsp; qHyperCubeDef: {&lt;/P&gt;&lt;P&gt;&amp;nbsp; qDimensions: [],&lt;/P&gt;&lt;P&gt;&amp;nbsp; qMeasures: [],&lt;/P&gt;&lt;P&gt;&amp;nbsp; qInitialDataFetch: [{&lt;/P&gt;&lt;P&gt;&amp;nbsp; qWidth: 10,&lt;/P&gt;&lt;P&gt;&amp;nbsp; qHeight: 50&lt;/P&gt;&lt;P&gt;&amp;nbsp; }]&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; definition: {&lt;/P&gt;&lt;P&gt;&amp;nbsp; type: "items",&lt;/P&gt;&lt;P&gt;&amp;nbsp; component: "accordion",&lt;/P&gt;&lt;P&gt;&amp;nbsp; items: {&lt;/P&gt;&lt;P&gt;&amp;nbsp; dimensions: {&lt;/P&gt;&lt;P&gt;&amp;nbsp; uses: "dimensions",&lt;/P&gt;&lt;P&gt;&amp;nbsp; min: 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp; max: 2&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; measures: {&lt;/P&gt;&lt;P&gt;&amp;nbsp; uses: "measures",&lt;/P&gt;&lt;P&gt;&amp;nbsp; min: 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp; max: 1&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; sorting: {&lt;/P&gt;&lt;P&gt;&amp;nbsp; uses: "sorting"&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; settings : {&lt;/P&gt;&lt;P&gt;&amp;nbsp; uses : "settings",&lt;/P&gt;&lt;P&gt;&amp;nbsp; items : {&lt;/P&gt;&lt;P&gt;&amp;nbsp; Line:{&lt;/P&gt;&lt;P&gt;&amp;nbsp; ref: "strokeStyle",&lt;/P&gt;&lt;P&gt;&amp;nbsp; component: "dropdown",&lt;/P&gt;&lt;P&gt;&amp;nbsp; type: "boolean",&lt;/P&gt;&lt;P&gt;&amp;nbsp; label: "Stroke type",&lt;/P&gt;&lt;P&gt;&amp;nbsp; defaultValue:&amp;nbsp; true,&lt;/P&gt;&lt;P&gt;&amp;nbsp; options: [{&lt;/P&gt;&lt;P&gt;&amp;nbsp; value: true,&lt;/P&gt;&lt;P&gt;&amp;nbsp; label: "Smooth"&lt;/P&gt;&lt;P&gt;&amp;nbsp; }, {&lt;/P&gt;&lt;P&gt;&amp;nbsp; value: false,&lt;/P&gt;&lt;P&gt;&amp;nbsp; label: "Straight"&lt;/P&gt;&lt;P&gt;&amp;nbsp; }],&lt;/P&gt;&lt;P&gt;&amp;nbsp; show: true&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; Legend:{&lt;/P&gt;&lt;P&gt;&amp;nbsp; ref: "showLegend",&lt;/P&gt;&lt;P&gt;&amp;nbsp; component: "switch",&lt;/P&gt;&lt;P&gt;&amp;nbsp; type: "boolean",&lt;/P&gt;&lt;P&gt;&amp;nbsp; translation: "Legend",&lt;/P&gt;&lt;P&gt;&amp;nbsp; defaultValue: true,&lt;/P&gt;&lt;P&gt;&amp;nbsp; trueOption: {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; value: true,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; translation: "properties.on"&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; falseOption: {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; value: false,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; translation: "properties.off"&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; show: true&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; Color:{&lt;/P&gt;&lt;P&gt;&amp;nbsp; type: "items",&lt;/P&gt;&lt;P&gt;&amp;nbsp; label: "Colors",&lt;/P&gt;&lt;P&gt;&amp;nbsp; items : {&lt;/P&gt;&lt;P&gt;&amp;nbsp; colorPalette: {&lt;/P&gt;&lt;P&gt;&amp;nbsp; ref: "colorPalette",&lt;/P&gt;&lt;P&gt;&amp;nbsp; component: "dropdown",&lt;/P&gt;&lt;P&gt;&amp;nbsp; type: "string",&lt;/P&gt;&lt;P&gt;&amp;nbsp; label: "Color palette",&lt;/P&gt;&lt;P&gt;&amp;nbsp; defaultValue:&amp;nbsp; "QLIK",&lt;/P&gt;&lt;P&gt;&amp;nbsp; options: [{&lt;/P&gt;&lt;P&gt;&amp;nbsp; value: "QLIK",&lt;/P&gt;&lt;P&gt;&amp;nbsp; label: "Qlik"&lt;/P&gt;&lt;P&gt;&amp;nbsp; }, {&lt;/P&gt;&lt;P&gt;&amp;nbsp; value: "CUSTOM",&lt;/P&gt;&lt;P&gt;&amp;nbsp; label: "Custom color"&lt;/P&gt;&lt;P&gt;&amp;nbsp; }, {&lt;/P&gt;&lt;P&gt;&amp;nbsp; value: "FORMULA",&lt;/P&gt;&lt;P&gt;&amp;nbsp; label: "Formula color"&lt;/P&gt;&lt;P&gt;&amp;nbsp; }],&lt;/P&gt;&lt;P&gt;&amp;nbsp; show: true&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; customPalette: {&lt;/P&gt;&lt;P&gt;&amp;nbsp; ref: "customPalette",&lt;/P&gt;&lt;P&gt;&amp;nbsp; type: "string",&lt;/P&gt;&lt;P&gt;&amp;nbsp; label: "Custom color palette",&lt;/P&gt;&lt;P&gt;&amp;nbsp; defaultValue: "#EDC951, #CC333F, #00A0B0",&lt;/P&gt;&lt;P&gt;&amp;nbsp; expression: "",&lt;/P&gt;&lt;P&gt;&amp;nbsp; show: function(layout) { return layout.colorPalette == "CUSTOM" }&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; formulaPalette: {&lt;/P&gt;&lt;P&gt;&amp;nbsp; ref: "formulaPalette",&lt;/P&gt;&lt;P&gt;&amp;nbsp; type: "string",&lt;/P&gt;&lt;P&gt;&amp;nbsp; label: "Formula color palette",&lt;/P&gt;&lt;P&gt;&amp;nbsp; defaultValue: "= Concat(Distinct Color, ', ')",&lt;/P&gt;&lt;P&gt;&amp;nbsp; expression: "always",&lt;/P&gt;&lt;P&gt;&amp;nbsp; show: function(layout) { return layout.colorPalette == "FORMULA" }&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; colorLinear:{&lt;/P&gt;&lt;P&gt;&amp;nbsp; ref: "colorLinear",&lt;/P&gt;&lt;P&gt;&amp;nbsp; component: "switch",&lt;/P&gt;&lt;P&gt;&amp;nbsp; type: "boolean",&lt;/P&gt;&lt;P&gt;&amp;nbsp; translation: "Linear scale",&lt;/P&gt;&lt;P&gt;&amp;nbsp; defaultValue: false,&lt;/P&gt;&lt;P&gt;&amp;nbsp; trueOption: {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; value: true,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; translation: "properties.on"&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; falseOption: {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; value: false,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; translation: "properties.off"&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; show: function(layout) { return layout.colorPalette == "CUSTOM" }&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; colorPersistence:{&lt;/P&gt;&lt;P&gt;&amp;nbsp; ref: "colorPersistence",&lt;/P&gt;&lt;P&gt;&amp;nbsp; component: "switch",&lt;/P&gt;&lt;P&gt;&amp;nbsp; type: "boolean",&lt;/P&gt;&lt;P&gt;&amp;nbsp; translation: "Persistence",&lt;/P&gt;&lt;P&gt;&amp;nbsp; defaultValue: false,&lt;/P&gt;&lt;P&gt;&amp;nbsp; trueOption: {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; value: true,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; translation: "properties.on"&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; falseOption: {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; value: false,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; translation: "properties.off"&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; show: true&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; snapshot: {&lt;/P&gt;&lt;P&gt;&amp;nbsp; canTakeSnapshot: true&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; paint: function ( $element, layout ) {&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var options = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; size: {width: $element.width(), height: $element.height()}, //Width and Height of the circle&lt;/P&gt;&lt;P&gt;&amp;nbsp; margin: {top: 50, right: 50, bottom: 50, left: 50} //The margins around the circle&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ////////////////////////////////////////////////////////////// &lt;/P&gt;&lt;P&gt;&amp;nbsp; ////////////////////////// Data ////////////////////////////// &lt;/P&gt;&lt;P&gt;&amp;nbsp; ////////////////////////////////////////////////////////////// &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var json = convertHYPERCUBEtoJSON(layout);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log(json);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; } &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; } &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; function convertHYPERCUBEtoJSON(layout) {&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // get qMatrix data array&lt;/P&gt;&lt;P&gt;&amp;nbsp; var qMatrix = layout.qHyperCube.qDataPages[0].qMatrix;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // create a new array that contains the measure labels&lt;/P&gt;&lt;P&gt;&amp;nbsp; var dimensions = layout.qHyperCube.qDimensionInfo;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var LegendTitle = dimensions[0].qFallbackTitle;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // create a new array that contains the dimensions and metric values&lt;/P&gt;&lt;P&gt;&amp;nbsp; // depending on whether if 1 or 2 dimensions are being used&lt;/P&gt;&lt;P&gt;&amp;nbsp; if(dimensions.length==2){&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var dim1Labels = qMatrix.map(function(d) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; return d[0].qText;&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&lt;/P&gt;&lt;P&gt;&amp;nbsp; var dim1Id = qMatrix.map(function(d) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; return d[0].qElemNumber;&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&lt;/P&gt;&lt;P&gt;&amp;nbsp; var dim2Labels = qMatrix.map(function(d) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; return d[1].qText;&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&lt;/P&gt;&lt;P&gt;&amp;nbsp; var dim2Id = qMatrix.map(function(d) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; return d[1].qElemNumber;&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&lt;/P&gt;&lt;P&gt;&amp;nbsp; var metric1Values = qMatrix.map(function(d) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; return d[2].qNum;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }) ;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; else{&lt;/P&gt;&lt;P&gt;&amp;nbsp; var dim1Labels = qMatrix.map(function(d) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; return d[0].qText;&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var dim1Id = qMatrix.map(function(d) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; return d[0].qElemNumber;&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&lt;/P&gt;&lt;P&gt;&amp;nbsp; var dim2Labels = dim1Labels;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var dim2Id = dim1Id;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var metric1Values = qMatrix.map(function(d) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; return d[1].qNum;&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; } &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // create a JSON array that contains dimensions and metric values&lt;/P&gt;&lt;P&gt;&amp;nbsp; var data = [];&lt;/P&gt;&lt;P&gt;&amp;nbsp; var actClassName = "";&lt;/P&gt;&lt;P&gt;&amp;nbsp; var myJson = {};&lt;/P&gt;&lt;P&gt;&amp;nbsp; myJson.dim_id = ""; &lt;/P&gt;&lt;P&gt;&amp;nbsp; myJson.dim = ""; &lt;/P&gt;&lt;P&gt;&amp;nbsp; myJson.definition = [];&lt;/P&gt;&lt;P&gt;&amp;nbsp; var cont = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var contdata = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var LegendValues = [];&lt;/P&gt;&lt;P&gt;&amp;nbsp; if(dimensions.length==2){&lt;/P&gt;&lt;P&gt;&amp;nbsp; for(var k=0;k&amp;lt;dim1Labels.length;k++){&lt;/P&gt;&lt;P&gt;&amp;nbsp; if(actClassName!=dim1Labels&lt;K&gt; ){&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if(cont!=0){&lt;/P&gt;&lt;P&gt;&amp;nbsp; data[contdata] = myJson;&lt;/P&gt;&lt;P&gt;&amp;nbsp; contdata++;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; // it is a different grouping value of Dim1&lt;/P&gt;&lt;P&gt;&amp;nbsp; LegendValues.push(dim1Labels&lt;K&gt;);&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var myJson = {};&lt;/P&gt;&lt;P&gt;&amp;nbsp; myJson.dim_id = "";&lt;/P&gt;&lt;P&gt;&amp;nbsp; myJson.dim = "";&lt;/P&gt;&lt;P&gt;&amp;nbsp; myJson.definition = [];&lt;/P&gt;&lt;P&gt;&amp;nbsp; cont = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; myJson.dim_id = dim1Id&lt;K&gt;;&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; myJson.dim = dim1Labels&lt;K&gt;;&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Make sure radar_area is added for usage in the radar chart layers later&lt;/P&gt;&lt;P&gt;&amp;nbsp; myJson.definition[cont]&amp;nbsp; = {"axis_id" : dim2Id&lt;K&gt;, "axis" : dim2Labels&lt;K&gt;, "radar_area_id" : dim1Id&lt;K&gt;, "radar_area" : dim1Labels&lt;K&gt;, "value" : metric1Values&lt;K&gt;};&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; cont++;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Make sure radar_area is added for usage in the radar chart layers later&lt;/P&gt;&lt;P&gt;&amp;nbsp; }else{&lt;/P&gt;&lt;P&gt;&amp;nbsp; myJson.definition[cont]&amp;nbsp; = {"axis_id" : dim2Id&lt;K&gt;, "axis" : dim2Labels&lt;K&gt;, "radar_area_id" : dim1Id&lt;K&gt;, "radar_area" : dim1Labels&lt;K&gt;, "value" : metric1Values&lt;K&gt;};&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; cont++;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; actClassName =&amp;nbsp; dim1Labels&lt;K&gt;;&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; data[contdata] = myJson;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }else{&lt;/P&gt;&lt;P&gt;&amp;nbsp; for(var k=0;k&amp;lt;dim1Labels.length;k++){&lt;/P&gt;&lt;P&gt;&amp;nbsp; // it is a different grouping value of Dim1&lt;/P&gt;&lt;P&gt;&amp;nbsp; LegendValues.push(dim1Labels&lt;K&gt;);&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Make sure radar_area is added for usage in the radar chart layers later&lt;/P&gt;&lt;P&gt;&amp;nbsp; myJson.definition[cont] = {"axis_id" : dim2Id&lt;K&gt;, "axis" : dim2Labels&lt;K&gt;, "radar_area_id" : dim1Id&lt;K&gt;, "radar_area" : dim1Labels&lt;K&gt;, "value" : metric1Values&lt;K&gt;};&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; cont++;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; data[contdata] = myJson;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; return data;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 10 Jan 2016 23:56:41 GMT</pubDate>
    <dc:creator>dionverbeke</dc:creator>
    <dc:date>2016-01-10T23:56:41Z</dc:date>
    <item>
      <title>Multi Dimension Extension not working</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/Multi-Dimension-Extension-not-working/m-p/1058392#M4491</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm trying to create an extension that will work with more than one dimension and one measure.&lt;/P&gt;&lt;P&gt;Somehow I always get a qNum error in the console. Any idea why I can't "see"&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&amp;nbsp; return d[2].qNum?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;=========&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;define( ["jquery","./d3"], function ( $ ) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; 'use strict';&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; return {&lt;/P&gt;&lt;P&gt;&amp;nbsp; initialProperties: {&lt;/P&gt;&lt;P&gt;&amp;nbsp; qHyperCubeDef: {&lt;/P&gt;&lt;P&gt;&amp;nbsp; qDimensions: [],&lt;/P&gt;&lt;P&gt;&amp;nbsp; qMeasures: [],&lt;/P&gt;&lt;P&gt;&amp;nbsp; qInitialDataFetch: [{&lt;/P&gt;&lt;P&gt;&amp;nbsp; qWidth: 10,&lt;/P&gt;&lt;P&gt;&amp;nbsp; qHeight: 50&lt;/P&gt;&lt;P&gt;&amp;nbsp; }]&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; definition: {&lt;/P&gt;&lt;P&gt;&amp;nbsp; type: "items",&lt;/P&gt;&lt;P&gt;&amp;nbsp; component: "accordion",&lt;/P&gt;&lt;P&gt;&amp;nbsp; items: {&lt;/P&gt;&lt;P&gt;&amp;nbsp; dimensions: {&lt;/P&gt;&lt;P&gt;&amp;nbsp; uses: "dimensions",&lt;/P&gt;&lt;P&gt;&amp;nbsp; min: 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp; max: 2&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; measures: {&lt;/P&gt;&lt;P&gt;&amp;nbsp; uses: "measures",&lt;/P&gt;&lt;P&gt;&amp;nbsp; min: 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp; max: 1&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; sorting: {&lt;/P&gt;&lt;P&gt;&amp;nbsp; uses: "sorting"&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; settings : {&lt;/P&gt;&lt;P&gt;&amp;nbsp; uses : "settings",&lt;/P&gt;&lt;P&gt;&amp;nbsp; items : {&lt;/P&gt;&lt;P&gt;&amp;nbsp; Line:{&lt;/P&gt;&lt;P&gt;&amp;nbsp; ref: "strokeStyle",&lt;/P&gt;&lt;P&gt;&amp;nbsp; component: "dropdown",&lt;/P&gt;&lt;P&gt;&amp;nbsp; type: "boolean",&lt;/P&gt;&lt;P&gt;&amp;nbsp; label: "Stroke type",&lt;/P&gt;&lt;P&gt;&amp;nbsp; defaultValue:&amp;nbsp; true,&lt;/P&gt;&lt;P&gt;&amp;nbsp; options: [{&lt;/P&gt;&lt;P&gt;&amp;nbsp; value: true,&lt;/P&gt;&lt;P&gt;&amp;nbsp; label: "Smooth"&lt;/P&gt;&lt;P&gt;&amp;nbsp; }, {&lt;/P&gt;&lt;P&gt;&amp;nbsp; value: false,&lt;/P&gt;&lt;P&gt;&amp;nbsp; label: "Straight"&lt;/P&gt;&lt;P&gt;&amp;nbsp; }],&lt;/P&gt;&lt;P&gt;&amp;nbsp; show: true&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; Legend:{&lt;/P&gt;&lt;P&gt;&amp;nbsp; ref: "showLegend",&lt;/P&gt;&lt;P&gt;&amp;nbsp; component: "switch",&lt;/P&gt;&lt;P&gt;&amp;nbsp; type: "boolean",&lt;/P&gt;&lt;P&gt;&amp;nbsp; translation: "Legend",&lt;/P&gt;&lt;P&gt;&amp;nbsp; defaultValue: true,&lt;/P&gt;&lt;P&gt;&amp;nbsp; trueOption: {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; value: true,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; translation: "properties.on"&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; falseOption: {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; value: false,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; translation: "properties.off"&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; show: true&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; Color:{&lt;/P&gt;&lt;P&gt;&amp;nbsp; type: "items",&lt;/P&gt;&lt;P&gt;&amp;nbsp; label: "Colors",&lt;/P&gt;&lt;P&gt;&amp;nbsp; items : {&lt;/P&gt;&lt;P&gt;&amp;nbsp; colorPalette: {&lt;/P&gt;&lt;P&gt;&amp;nbsp; ref: "colorPalette",&lt;/P&gt;&lt;P&gt;&amp;nbsp; component: "dropdown",&lt;/P&gt;&lt;P&gt;&amp;nbsp; type: "string",&lt;/P&gt;&lt;P&gt;&amp;nbsp; label: "Color palette",&lt;/P&gt;&lt;P&gt;&amp;nbsp; defaultValue:&amp;nbsp; "QLIK",&lt;/P&gt;&lt;P&gt;&amp;nbsp; options: [{&lt;/P&gt;&lt;P&gt;&amp;nbsp; value: "QLIK",&lt;/P&gt;&lt;P&gt;&amp;nbsp; label: "Qlik"&lt;/P&gt;&lt;P&gt;&amp;nbsp; }, {&lt;/P&gt;&lt;P&gt;&amp;nbsp; value: "CUSTOM",&lt;/P&gt;&lt;P&gt;&amp;nbsp; label: "Custom color"&lt;/P&gt;&lt;P&gt;&amp;nbsp; }, {&lt;/P&gt;&lt;P&gt;&amp;nbsp; value: "FORMULA",&lt;/P&gt;&lt;P&gt;&amp;nbsp; label: "Formula color"&lt;/P&gt;&lt;P&gt;&amp;nbsp; }],&lt;/P&gt;&lt;P&gt;&amp;nbsp; show: true&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; customPalette: {&lt;/P&gt;&lt;P&gt;&amp;nbsp; ref: "customPalette",&lt;/P&gt;&lt;P&gt;&amp;nbsp; type: "string",&lt;/P&gt;&lt;P&gt;&amp;nbsp; label: "Custom color palette",&lt;/P&gt;&lt;P&gt;&amp;nbsp; defaultValue: "#EDC951, #CC333F, #00A0B0",&lt;/P&gt;&lt;P&gt;&amp;nbsp; expression: "",&lt;/P&gt;&lt;P&gt;&amp;nbsp; show: function(layout) { return layout.colorPalette == "CUSTOM" }&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; formulaPalette: {&lt;/P&gt;&lt;P&gt;&amp;nbsp; ref: "formulaPalette",&lt;/P&gt;&lt;P&gt;&amp;nbsp; type: "string",&lt;/P&gt;&lt;P&gt;&amp;nbsp; label: "Formula color palette",&lt;/P&gt;&lt;P&gt;&amp;nbsp; defaultValue: "= Concat(Distinct Color, ', ')",&lt;/P&gt;&lt;P&gt;&amp;nbsp; expression: "always",&lt;/P&gt;&lt;P&gt;&amp;nbsp; show: function(layout) { return layout.colorPalette == "FORMULA" }&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; colorLinear:{&lt;/P&gt;&lt;P&gt;&amp;nbsp; ref: "colorLinear",&lt;/P&gt;&lt;P&gt;&amp;nbsp; component: "switch",&lt;/P&gt;&lt;P&gt;&amp;nbsp; type: "boolean",&lt;/P&gt;&lt;P&gt;&amp;nbsp; translation: "Linear scale",&lt;/P&gt;&lt;P&gt;&amp;nbsp; defaultValue: false,&lt;/P&gt;&lt;P&gt;&amp;nbsp; trueOption: {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; value: true,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; translation: "properties.on"&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; falseOption: {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; value: false,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; translation: "properties.off"&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; show: function(layout) { return layout.colorPalette == "CUSTOM" }&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; colorPersistence:{&lt;/P&gt;&lt;P&gt;&amp;nbsp; ref: "colorPersistence",&lt;/P&gt;&lt;P&gt;&amp;nbsp; component: "switch",&lt;/P&gt;&lt;P&gt;&amp;nbsp; type: "boolean",&lt;/P&gt;&lt;P&gt;&amp;nbsp; translation: "Persistence",&lt;/P&gt;&lt;P&gt;&amp;nbsp; defaultValue: false,&lt;/P&gt;&lt;P&gt;&amp;nbsp; trueOption: {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; value: true,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; translation: "properties.on"&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; falseOption: {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; value: false,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; translation: "properties.off"&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; show: true&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; snapshot: {&lt;/P&gt;&lt;P&gt;&amp;nbsp; canTakeSnapshot: true&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; paint: function ( $element, layout ) {&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var options = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; size: {width: $element.width(), height: $element.height()}, //Width and Height of the circle&lt;/P&gt;&lt;P&gt;&amp;nbsp; margin: {top: 50, right: 50, bottom: 50, left: 50} //The margins around the circle&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ////////////////////////////////////////////////////////////// &lt;/P&gt;&lt;P&gt;&amp;nbsp; ////////////////////////// Data ////////////////////////////// &lt;/P&gt;&lt;P&gt;&amp;nbsp; ////////////////////////////////////////////////////////////// &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var json = convertHYPERCUBEtoJSON(layout);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log(json);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; } &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; } &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; function convertHYPERCUBEtoJSON(layout) {&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // get qMatrix data array&lt;/P&gt;&lt;P&gt;&amp;nbsp; var qMatrix = layout.qHyperCube.qDataPages[0].qMatrix;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // create a new array that contains the measure labels&lt;/P&gt;&lt;P&gt;&amp;nbsp; var dimensions = layout.qHyperCube.qDimensionInfo;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var LegendTitle = dimensions[0].qFallbackTitle;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // create a new array that contains the dimensions and metric values&lt;/P&gt;&lt;P&gt;&amp;nbsp; // depending on whether if 1 or 2 dimensions are being used&lt;/P&gt;&lt;P&gt;&amp;nbsp; if(dimensions.length==2){&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var dim1Labels = qMatrix.map(function(d) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; return d[0].qText;&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&lt;/P&gt;&lt;P&gt;&amp;nbsp; var dim1Id = qMatrix.map(function(d) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; return d[0].qElemNumber;&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&lt;/P&gt;&lt;P&gt;&amp;nbsp; var dim2Labels = qMatrix.map(function(d) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; return d[1].qText;&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&lt;/P&gt;&lt;P&gt;&amp;nbsp; var dim2Id = qMatrix.map(function(d) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; return d[1].qElemNumber;&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&lt;/P&gt;&lt;P&gt;&amp;nbsp; var metric1Values = qMatrix.map(function(d) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; return d[2].qNum;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }) ;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; else{&lt;/P&gt;&lt;P&gt;&amp;nbsp; var dim1Labels = qMatrix.map(function(d) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; return d[0].qText;&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var dim1Id = qMatrix.map(function(d) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; return d[0].qElemNumber;&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&lt;/P&gt;&lt;P&gt;&amp;nbsp; var dim2Labels = dim1Labels;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var dim2Id = dim1Id;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var metric1Values = qMatrix.map(function(d) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; return d[1].qNum;&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; } &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // create a JSON array that contains dimensions and metric values&lt;/P&gt;&lt;P&gt;&amp;nbsp; var data = [];&lt;/P&gt;&lt;P&gt;&amp;nbsp; var actClassName = "";&lt;/P&gt;&lt;P&gt;&amp;nbsp; var myJson = {};&lt;/P&gt;&lt;P&gt;&amp;nbsp; myJson.dim_id = ""; &lt;/P&gt;&lt;P&gt;&amp;nbsp; myJson.dim = ""; &lt;/P&gt;&lt;P&gt;&amp;nbsp; myJson.definition = [];&lt;/P&gt;&lt;P&gt;&amp;nbsp; var cont = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var contdata = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var LegendValues = [];&lt;/P&gt;&lt;P&gt;&amp;nbsp; if(dimensions.length==2){&lt;/P&gt;&lt;P&gt;&amp;nbsp; for(var k=0;k&amp;lt;dim1Labels.length;k++){&lt;/P&gt;&lt;P&gt;&amp;nbsp; if(actClassName!=dim1Labels&lt;K&gt; ){&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if(cont!=0){&lt;/P&gt;&lt;P&gt;&amp;nbsp; data[contdata] = myJson;&lt;/P&gt;&lt;P&gt;&amp;nbsp; contdata++;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; // it is a different grouping value of Dim1&lt;/P&gt;&lt;P&gt;&amp;nbsp; LegendValues.push(dim1Labels&lt;K&gt;);&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var myJson = {};&lt;/P&gt;&lt;P&gt;&amp;nbsp; myJson.dim_id = "";&lt;/P&gt;&lt;P&gt;&amp;nbsp; myJson.dim = "";&lt;/P&gt;&lt;P&gt;&amp;nbsp; myJson.definition = [];&lt;/P&gt;&lt;P&gt;&amp;nbsp; cont = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; myJson.dim_id = dim1Id&lt;K&gt;;&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; myJson.dim = dim1Labels&lt;K&gt;;&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Make sure radar_area is added for usage in the radar chart layers later&lt;/P&gt;&lt;P&gt;&amp;nbsp; myJson.definition[cont]&amp;nbsp; = {"axis_id" : dim2Id&lt;K&gt;, "axis" : dim2Labels&lt;K&gt;, "radar_area_id" : dim1Id&lt;K&gt;, "radar_area" : dim1Labels&lt;K&gt;, "value" : metric1Values&lt;K&gt;};&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; cont++;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Make sure radar_area is added for usage in the radar chart layers later&lt;/P&gt;&lt;P&gt;&amp;nbsp; }else{&lt;/P&gt;&lt;P&gt;&amp;nbsp; myJson.definition[cont]&amp;nbsp; = {"axis_id" : dim2Id&lt;K&gt;, "axis" : dim2Labels&lt;K&gt;, "radar_area_id" : dim1Id&lt;K&gt;, "radar_area" : dim1Labels&lt;K&gt;, "value" : metric1Values&lt;K&gt;};&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; cont++;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; actClassName =&amp;nbsp; dim1Labels&lt;K&gt;;&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; data[contdata] = myJson;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }else{&lt;/P&gt;&lt;P&gt;&amp;nbsp; for(var k=0;k&amp;lt;dim1Labels.length;k++){&lt;/P&gt;&lt;P&gt;&amp;nbsp; // it is a different grouping value of Dim1&lt;/P&gt;&lt;P&gt;&amp;nbsp; LegendValues.push(dim1Labels&lt;K&gt;);&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Make sure radar_area is added for usage in the radar chart layers later&lt;/P&gt;&lt;P&gt;&amp;nbsp; myJson.definition[cont] = {"axis_id" : dim2Id&lt;K&gt;, "axis" : dim2Labels&lt;K&gt;, "radar_area_id" : dim1Id&lt;K&gt;, "radar_area" : dim1Labels&lt;K&gt;, "value" : metric1Values&lt;K&gt;};&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; cont++;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; data[contdata] = myJson;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; return data;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 10 Jan 2016 23:56:41 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/Multi-Dimension-Extension-not-working/m-p/1058392#M4491</guid>
      <dc:creator>dionverbeke</dc:creator>
      <dc:date>2016-01-10T23:56:41Z</dc:date>
    </item>
    <item>
      <title>Re: Multi Dimension Extension not working</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/Multi-Dimension-Extension-not-working/m-p/1058393#M4492</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Try to print the result in console before accessing it. like below code and check whether qNum is present in that object.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;console.log(&lt;SPAN style="color: #3d3d3d; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 13.3333px;"&gt;d[2]);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also you can locate the error line from the console error. This would help to debug the code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Prabhu Appu&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 16 Jan 2016 15:01:11 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/Multi-Dimension-Extension-not-working/m-p/1058393#M4492</guid>
      <dc:creator>prabhuappu</dc:creator>
      <dc:date>2016-01-16T15:01:11Z</dc:date>
    </item>
  </channel>
</rss>

