<?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 qlikview extension using d3js and json in QlikView</title>
    <link>https://community.qlik.com/t5/QlikView/qlikview-extension-using-d3js-and-json/m-p/899043#M992226</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I am trying to create a extension for world map using the d3js , i started with an example which is codes in html. I tried to use the same code in qv script.js and see if i can generate the chart. I had to use the d3.json to load the map co ordinates in a json file , and I am facing issue doing that . below is my code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;var template_path = "C://Users//502335699//AppData//Local//QlikTech//QlikView//Extensions//Objects//V-worldmap//"//Qva.Remote + "?public=only&amp;amp;name=Extensions/Objects/V-worldmap/";&lt;/P&gt;&lt;P&gt;function extension_Init()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;if( typeof jQuery == 'undefined') {&lt;/P&gt;&lt;P&gt;&amp;nbsp; Qva.LoadScript(template_path + "jquery.min.js", function() {&lt;/P&gt;&lt;P&gt;&amp;nbsp; Qva.LoadScript(template_path + "d3.min.js", function() {&lt;/P&gt;&lt;P&gt;&amp;nbsp; Qva.LoadScript(template_path + "topojson.min.js", extension_Done);&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&lt;/P&gt;&lt;P&gt;} else {&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Qva.LoadScript(template_path + "d3.min.js", extension_Done);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&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;&lt;/P&gt;&lt;P&gt;function extension_Done(){&lt;/P&gt;&lt;P&gt;//topojson code&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;topojson=function(){function t(t,e){function n(e){var n=t.arcs&lt;E&gt;,r=n[0],o=[0,0];return n.forEach(function(t){o[0]+=t[0],o[1]+=t[1]}),[r,o]}var r={},o={},a={};e.forEach(function(t){var e=n(t);(r[e[0]]||(r[e[0]]=[])).push(t),(r[e[1]]||(r[e[1]]=[])).push(~t)}),e.forEach(function(t){var e,r,i=n(t),u=i[0],c=i[1];if(e=a&lt;U&gt;)if(delete a[e.end],e.push(t),e.end=c,r=o&lt;C&gt;){delete o[r.start];var s=r===e?e:e.concat(r);o[s.start=e.start]=a[s.end=r.end]=s}else if(r=a&lt;C&gt;){delete o[r.start],delete a[r.end];var s=e.concat(r.map(function(t){return~t}).reverse());o[s.start=e.start]=a[s.end=r.start]=s}else o[e.start]=a[e.end]=e;else if(e=o&lt;C&gt;)if(delete o[e.start],e.unshift(t),e.start=u,r=a&lt;U&gt;){delete a[r.end];var f=r===e?e:r.concat(e);o[f.start=r.start]=a[f.end=e.end]=f}else if(r=o&lt;U&gt;){delete o[r.start],delete a[r.end];var f=r.map(function(t){return~t}).reverse().concat(e);o[f.start=r.end]=a[f.end=e.end]=f}else o[e.start]=a[e.end]=e;else if(e=o&lt;U&gt;)if(delete o[e.start],e.unshift(~t),e.start=c,r=a&lt;C&gt;){delete a[r.end];var f=r===e?e:r.concat(e);o[f.start=r.start]=a[f.end=e.end]=f}else if(r=o&lt;C&gt;){delete o[r.start],delete a[r.end];var f=r.map(function(t){return~t}).reverse().concat(e);o[f.start=r.end]=a[f.end=e.end]=f}else o[e.start]=a[e.end]=e;else if(e=a&lt;C&gt;)if(delete a[e.end],e.push(~t),e.end=u,r=a&lt;U&gt;){delete o[r.start];var s=r===e?e:e.concat(r);o[s.start=e.start]=a[s.end=r.end]=s}else if(r=o&lt;U&gt;){delete o[r.start],delete a[r.end];var s=e.concat(r.map(function(t){return~t}).reverse());o[s.start=e.start]=a[s.end=r.start]=s}else o[e.start]=a[e.end]=e;else e=&lt;T&gt;,o[e.start=u]=a[e.end=c]=e});var i=[];for(var u in a)i.push(a&lt;U&gt;);return i}function e(e,n,r){function a(t){0&amp;gt;t&amp;amp;&amp;amp;(t=~t),(l&lt;T&gt;||(l&lt;T&gt;=[])).push(f)}function i(t){t.forEach(a)}function u(t){t.forEach(i)}function c(t){t.type==="GeometryCollection"?t.geometries.forEach(c):t.type in d&amp;amp;&amp;amp;(f=t,d[t.type](t.arcs))}var s=[];if(arguments.length&amp;gt;1){var f,l=[],d={LineString:i,MultiLineString:u,Polygon:u,MultiPolygon:function(t){t.forEach(u)}};c(n),l.forEach(arguments.length&amp;lt;3?function(t,e){s.push(&lt;E&gt;)}:function(t,e){r(t[0],t[t.length-1])&amp;amp;&amp;amp;s.push(&lt;E&gt;)})}else for(var p=0,h=e.arcs.length;h&amp;gt;p;++p)s.push(&lt;/E&gt;&lt;/E&gt;&lt;/T&gt;&lt;/T&gt;&lt;/U&gt;&lt;/T&gt;&lt;/U&gt;&lt;/U&gt;&lt;/C&gt;&lt;/C&gt;&lt;/C&gt;&lt;/U&gt;&lt;/U&gt;&lt;/U&gt;&lt;/C&gt;&lt;/C&gt;&lt;/C&gt;&lt;/U&gt;&lt;/E&gt;&lt;/P&gt;&lt;P&gt;);return o(e,{type:"MultiLineString",arcs:t(e,s)})}function n(t,e){return e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(e){return r(t,e)})}:r(t,e)}function r(t,e){var n={type:"Feature",id:e.id,properties:e.properties||{},geometry:o(t,e)};return e.id==null&amp;amp;&amp;amp;delete n.id,n}function o(t,e){function n(t,e){e.length&amp;amp;&amp;amp;e.pop();for(var n,r=h[0&amp;gt;t?~t:t],o=0,i=r.length,u=0,c=0;i&amp;gt;o;++o)e.push([(u+=(n=r&lt;O&gt;)[0])*f+d,(c+=n[1])*l+p]);0&amp;gt;t&amp;amp;&amp;amp;a(e,i)}function r(t){return[t[0]*f+d,t[1]*l+p]}function o(t){for(var e=[],r=0,o=t.length;o&amp;gt;r;++r)n(t&lt;R&gt;,e);return e.length&amp;lt;2&amp;amp;&amp;amp;e.push(e[0]),e}function i(t){for(var e=o(t);e.length&amp;lt;4;)e.push(e[0]);return e}function u(t){return t.map(i)}function c(t){var e=t.type;return"GeometryCollection"===e?{type:e,geometries:t.geometries.map(c)}:e in v?{type:e,coordinates:v&lt;E&gt;(t)}:null}var s=t.transform,f=s.scale[0],l=s.scale[1],d=s.translate[0],p=s.translate[1],h=t.arcs,v={Point:function(t){return r(t.coordinates)},MultiPoint:function(t){return t.coordinates.map(r)},LineString:function(t){return o(t.arcs)},MultiLineString:function(t){return t.arcs.map(o)},Polygon:function(t){return u(t.arcs)},MultiPolygon:function(t){return t.arcs.map(u)}};return c(e)}function a(t,e){for(var n,r=t.length,o=r-e;o&amp;lt;--r;)n=t&lt;O&gt;,t[o++]=t&lt;R&gt;,t&lt;R&gt;=n}function i(t,e){for(var n=0,r=t.length;r&amp;gt;n;){var o=n+r&amp;gt;&amp;gt;&amp;gt;1;t&lt;O&gt;&amp;lt;e?n=o+1:r=o}return n}function u(t){function e(t,e){t.forEach(function(t){0&amp;gt;t&amp;amp;&amp;amp;(t=~t);var n=o&lt;T&gt;||(o&lt;T&gt;=[]);n&lt;E&gt;||(n.forEach(function(t){var n,r;r=i(n=a&lt;E&gt;,t),n&lt;R&gt;!==t&amp;amp;&amp;amp;n.splice(r,0,t),r=i(n=a&lt;T&gt;,e),n&lt;R&gt;!==e&amp;amp;&amp;amp;n.splice(r,0,e)}),n&lt;E&gt;=e)})}function n(t,n){t.forEach(function(t){e(t,n)})}function r(t,e){t.type==="GeometryCollection"?t.geometries.forEach(function(t){r(t,e)}):t.type in u&amp;amp;&amp;amp;u[t.type](t.arcs,e)}var o=[],a=t.map(function(){return[]}),u={LineString:e,MultiLineString:n,Polygon:n,MultiPolygon:function(t,e){t.forEach(function(t){n(t,e)})}};return t.forEach(r),a}return{version:"1.1.0",mesh:e,feature:n,neighbors:u}}();&lt;/E&gt;&lt;/R&gt;&lt;/T&gt;&lt;/R&gt;&lt;/E&gt;&lt;/E&gt;&lt;/T&gt;&lt;/T&gt;&lt;/O&gt;&lt;/R&gt;&lt;/R&gt;&lt;/O&gt;&lt;/E&gt;&lt;/R&gt;&lt;/O&gt;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;alert("topojson code added fine");&lt;/P&gt;&lt;P&gt;Qv.AddExtension("V-worldmap",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function () {&lt;/P&gt;&lt;P&gt;&amp;nbsp; //Load a CSS style sheet&lt;/P&gt;&lt;P&gt;&amp;nbsp; Qva.LoadCSS(template_path + "style.css");&lt;/P&gt;&lt;P&gt;&amp;nbsp; var _this = this;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var divName = "#tooltip-container"&lt;/P&gt;&lt;P&gt;&amp;nbsp; //_this.Layout.ObjectId.replace("\\", "_");&lt;/P&gt;&lt;P&gt;&amp;nbsp; if(_this.Element.children.length == 0) {//if this div doesn't already exist, create a unique div with the divName&lt;/P&gt;&lt;P&gt;&amp;nbsp; var ui = document.createElement("div");&lt;/P&gt;&lt;P&gt;&amp;nbsp; ui.setAttribute("id", divName);&lt;/P&gt;&lt;P&gt;&amp;nbsp; _this.Element.appendChild(ui);&lt;/P&gt;&lt;P&gt;&amp;nbsp; } else {&lt;/P&gt;&lt;P&gt;&amp;nbsp; //if it does exist, empty the div so we can fill it again&lt;/P&gt;&lt;P&gt;&amp;nbsp; $("#" + divName).empty();&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Create a variable to hold generated html &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var html = "&amp;lt;table&amp;gt;";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Cycle Through the data&lt;/P&gt;&lt;P&gt;var countrypop = new Array(this.Data.Rows.length) ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var i = 0; i &amp;lt; this.Data.Rows.length; i++) { &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // get the row &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var row = this.Data.Rows &lt;I&gt;;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Generate html &lt;/P&gt;&lt;P&gt;&amp;nbsp; countrypop&lt;I&gt; = new Array(2); &lt;/I&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; countrypop&lt;I&gt;[0]=row[0].text;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; countrypop&lt;I&gt;[1]=row[1].text;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //pop[row[0].text] = row[1].text ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html += "&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;" + row[0].text + "&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;" + row[1].text + "&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;"; &lt;/P&gt;&lt;P&gt;&amp;nbsp; //alert(country&lt;I&gt;);&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //alert(pop[row[0].text]);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Finalise the html &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html += "&amp;lt;/table&amp;gt;";&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set the HTML &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //this.Element.innerHTML = html;&lt;/P&gt;&lt;P&gt;//delete from here&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var config = {"data0":"Country (or dependent territory)","data1":"Population","label0":"label 0","label1":"label 1","color0":"#99ccff","color1":"#0050A1","width":800,"height":400}&lt;/P&gt;&lt;P&gt;&amp;nbsp; var width = 960,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; height = 960;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var COLOR_COUNTS = 9;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; function Interpolate(start, end, steps, count) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var s = start,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e = end,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; final = s + (((e - s) / steps) * count);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return Math.floor(final);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; function Color(_r, _g, _b) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var r, g, b;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var setColors = function(_r, _g, _b) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r = _r;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g = _g;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b = _b;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setColors(_r, _g, _b);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.getColors = function() {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var colors = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r: r,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g: g,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b: b&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return colors;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; function hexToRgb(hex) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return result ? {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r: parseInt(result[1], 16),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g: parseInt(result[2], 16),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b: parseInt(result[3], 16)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } : null;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; function valueFormat(d) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (d &amp;gt; 1000000000) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return Math.round(d / 1000000000 * 10) / 10 + "B";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (d &amp;gt; 1000000) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return Math.round(d / 1000000 * 10) / 10 + "M";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (d &amp;gt; 1000) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return Math.round(d / 1000 * 10) / 10 + "K";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return d;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&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; var COLOR_FIRST = config.color0, COLOR_LAST = config.color1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var rgb = hexToRgb(COLOR_FIRST);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var COLOR_START = new Color(rgb.r, rgb.g, rgb.b);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; rgb = hexToRgb(COLOR_LAST);&lt;/P&gt;&lt;P&gt;&amp;nbsp; var COLOR_END = new Color(rgb.r, rgb.g, rgb.b);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var startColors = COLOR_START.getColors(),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; endColors = COLOR_END.getColors();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var colors = [];&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; for (var i = 0; i &amp;lt; COLOR_COUNTS; i++) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var r = Interpolate(startColors.r, endColors.r, COLOR_COUNTS, i);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var g = Interpolate(startColors.g, endColors.g, COLOR_COUNTS, i);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var b = Interpolate(startColors.b, endColors.b, COLOR_COUNTS, i);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; colors.push(new Color(r, g, b));&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var MAP_KEY = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var MAP_VALUE = 1;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var projection = d3.geo.mercator()&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .scale((width + 1) / 2 / Math.PI)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .translate([width / 2, height / 2])&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .precision(.1);&lt;/P&gt;&lt;P&gt;&amp;nbsp; var path = d3.geo.path()&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .projection(projection);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var graticule = d3.geo.graticule();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var svg = d3.select("#canvas-svg").append("svg")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .attr("width", width)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .attr("height", height);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; svg.append("path")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .datum(graticule)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .attr("class", "graticule")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .attr("d", path);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var valueHash = {};&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; function log10(val) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return Math.log(val);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; countrypop.forEach(function(d) &lt;/P&gt;&lt;P&gt;{&amp;nbsp; &lt;/P&gt;&lt;P&gt;//alert(d[0]);&lt;/P&gt;&lt;P&gt;//alert(d[1]);&lt;/P&gt;&lt;P&gt; // alert(+d[MAP_VALUE]);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; valueHash[d[0]] = +d[1];&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; var quantize = d3.scale.quantize()&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .domain([0, 1.0])&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .range(d3.range(COLOR_COUNTS).map(function(i) { return i }));&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; quantize.domain([d3.min(countrypop, function(d){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (+d[MAP_VALUE]) }),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; d3.max(countrypop, function(d){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (+d[MAP_VALUE]) })]);&lt;/P&gt;&lt;P&gt;&amp;nbsp; alert("all fine before json");&lt;/P&gt;&lt;P&gt;&lt;STRONG style=": ; color: #ff0000; font-size: 12pt;"&gt;d3.json("world-topo-min.json", function(error, world) {&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; color: #ff0000;"&gt;&lt;STRONG&gt;&amp;nbsp; if(error) alert("json data load failed");&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; color: #ff0000;"&gt;&lt;STRONG&gt;var countries = topojson.feature(world, world.objects.countries).features;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; color: #ff0000;"&gt;&lt;STRONG&gt;&amp;nbsp; }&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style=": ; color: #ff0000; font-size: 12pt;"&gt;&amp;nbsp; );&lt;/STRONG&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;&lt;P&gt;&lt;/P&gt;&lt;P&gt;},true);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;extension_Init(); &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Seems like the json file is not loaded , I am not able to debug this , looking for some help on this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Varun&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 17 Jul 2015 14:32:40 GMT</pubDate>
    <dc:creator />
    <dc:date>2015-07-17T14:32:40Z</dc:date>
    <item>
      <title>qlikview extension using d3js and json</title>
      <link>https://community.qlik.com/t5/QlikView/qlikview-extension-using-d3js-and-json/m-p/899043#M992226</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I am trying to create a extension for world map using the d3js , i started with an example which is codes in html. I tried to use the same code in qv script.js and see if i can generate the chart. I had to use the d3.json to load the map co ordinates in a json file , and I am facing issue doing that . below is my code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;var template_path = "C://Users//502335699//AppData//Local//QlikTech//QlikView//Extensions//Objects//V-worldmap//"//Qva.Remote + "?public=only&amp;amp;name=Extensions/Objects/V-worldmap/";&lt;/P&gt;&lt;P&gt;function extension_Init()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;if( typeof jQuery == 'undefined') {&lt;/P&gt;&lt;P&gt;&amp;nbsp; Qva.LoadScript(template_path + "jquery.min.js", function() {&lt;/P&gt;&lt;P&gt;&amp;nbsp; Qva.LoadScript(template_path + "d3.min.js", function() {&lt;/P&gt;&lt;P&gt;&amp;nbsp; Qva.LoadScript(template_path + "topojson.min.js", extension_Done);&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&lt;/P&gt;&lt;P&gt;} else {&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Qva.LoadScript(template_path + "d3.min.js", extension_Done);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&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;&lt;/P&gt;&lt;P&gt;function extension_Done(){&lt;/P&gt;&lt;P&gt;//topojson code&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;topojson=function(){function t(t,e){function n(e){var n=t.arcs&lt;E&gt;,r=n[0],o=[0,0];return n.forEach(function(t){o[0]+=t[0],o[1]+=t[1]}),[r,o]}var r={},o={},a={};e.forEach(function(t){var e=n(t);(r[e[0]]||(r[e[0]]=[])).push(t),(r[e[1]]||(r[e[1]]=[])).push(~t)}),e.forEach(function(t){var e,r,i=n(t),u=i[0],c=i[1];if(e=a&lt;U&gt;)if(delete a[e.end],e.push(t),e.end=c,r=o&lt;C&gt;){delete o[r.start];var s=r===e?e:e.concat(r);o[s.start=e.start]=a[s.end=r.end]=s}else if(r=a&lt;C&gt;){delete o[r.start],delete a[r.end];var s=e.concat(r.map(function(t){return~t}).reverse());o[s.start=e.start]=a[s.end=r.start]=s}else o[e.start]=a[e.end]=e;else if(e=o&lt;C&gt;)if(delete o[e.start],e.unshift(t),e.start=u,r=a&lt;U&gt;){delete a[r.end];var f=r===e?e:r.concat(e);o[f.start=r.start]=a[f.end=e.end]=f}else if(r=o&lt;U&gt;){delete o[r.start],delete a[r.end];var f=r.map(function(t){return~t}).reverse().concat(e);o[f.start=r.end]=a[f.end=e.end]=f}else o[e.start]=a[e.end]=e;else if(e=o&lt;U&gt;)if(delete o[e.start],e.unshift(~t),e.start=c,r=a&lt;C&gt;){delete a[r.end];var f=r===e?e:r.concat(e);o[f.start=r.start]=a[f.end=e.end]=f}else if(r=o&lt;C&gt;){delete o[r.start],delete a[r.end];var f=r.map(function(t){return~t}).reverse().concat(e);o[f.start=r.end]=a[f.end=e.end]=f}else o[e.start]=a[e.end]=e;else if(e=a&lt;C&gt;)if(delete a[e.end],e.push(~t),e.end=u,r=a&lt;U&gt;){delete o[r.start];var s=r===e?e:e.concat(r);o[s.start=e.start]=a[s.end=r.end]=s}else if(r=o&lt;U&gt;){delete o[r.start],delete a[r.end];var s=e.concat(r.map(function(t){return~t}).reverse());o[s.start=e.start]=a[s.end=r.start]=s}else o[e.start]=a[e.end]=e;else e=&lt;T&gt;,o[e.start=u]=a[e.end=c]=e});var i=[];for(var u in a)i.push(a&lt;U&gt;);return i}function e(e,n,r){function a(t){0&amp;gt;t&amp;amp;&amp;amp;(t=~t),(l&lt;T&gt;||(l&lt;T&gt;=[])).push(f)}function i(t){t.forEach(a)}function u(t){t.forEach(i)}function c(t){t.type==="GeometryCollection"?t.geometries.forEach(c):t.type in d&amp;amp;&amp;amp;(f=t,d[t.type](t.arcs))}var s=[];if(arguments.length&amp;gt;1){var f,l=[],d={LineString:i,MultiLineString:u,Polygon:u,MultiPolygon:function(t){t.forEach(u)}};c(n),l.forEach(arguments.length&amp;lt;3?function(t,e){s.push(&lt;E&gt;)}:function(t,e){r(t[0],t[t.length-1])&amp;amp;&amp;amp;s.push(&lt;E&gt;)})}else for(var p=0,h=e.arcs.length;h&amp;gt;p;++p)s.push(&lt;/E&gt;&lt;/E&gt;&lt;/T&gt;&lt;/T&gt;&lt;/U&gt;&lt;/T&gt;&lt;/U&gt;&lt;/U&gt;&lt;/C&gt;&lt;/C&gt;&lt;/C&gt;&lt;/U&gt;&lt;/U&gt;&lt;/U&gt;&lt;/C&gt;&lt;/C&gt;&lt;/C&gt;&lt;/U&gt;&lt;/E&gt;&lt;/P&gt;&lt;P&gt;);return o(e,{type:"MultiLineString",arcs:t(e,s)})}function n(t,e){return e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(e){return r(t,e)})}:r(t,e)}function r(t,e){var n={type:"Feature",id:e.id,properties:e.properties||{},geometry:o(t,e)};return e.id==null&amp;amp;&amp;amp;delete n.id,n}function o(t,e){function n(t,e){e.length&amp;amp;&amp;amp;e.pop();for(var n,r=h[0&amp;gt;t?~t:t],o=0,i=r.length,u=0,c=0;i&amp;gt;o;++o)e.push([(u+=(n=r&lt;O&gt;)[0])*f+d,(c+=n[1])*l+p]);0&amp;gt;t&amp;amp;&amp;amp;a(e,i)}function r(t){return[t[0]*f+d,t[1]*l+p]}function o(t){for(var e=[],r=0,o=t.length;o&amp;gt;r;++r)n(t&lt;R&gt;,e);return e.length&amp;lt;2&amp;amp;&amp;amp;e.push(e[0]),e}function i(t){for(var e=o(t);e.length&amp;lt;4;)e.push(e[0]);return e}function u(t){return t.map(i)}function c(t){var e=t.type;return"GeometryCollection"===e?{type:e,geometries:t.geometries.map(c)}:e in v?{type:e,coordinates:v&lt;E&gt;(t)}:null}var s=t.transform,f=s.scale[0],l=s.scale[1],d=s.translate[0],p=s.translate[1],h=t.arcs,v={Point:function(t){return r(t.coordinates)},MultiPoint:function(t){return t.coordinates.map(r)},LineString:function(t){return o(t.arcs)},MultiLineString:function(t){return t.arcs.map(o)},Polygon:function(t){return u(t.arcs)},MultiPolygon:function(t){return t.arcs.map(u)}};return c(e)}function a(t,e){for(var n,r=t.length,o=r-e;o&amp;lt;--r;)n=t&lt;O&gt;,t[o++]=t&lt;R&gt;,t&lt;R&gt;=n}function i(t,e){for(var n=0,r=t.length;r&amp;gt;n;){var o=n+r&amp;gt;&amp;gt;&amp;gt;1;t&lt;O&gt;&amp;lt;e?n=o+1:r=o}return n}function u(t){function e(t,e){t.forEach(function(t){0&amp;gt;t&amp;amp;&amp;amp;(t=~t);var n=o&lt;T&gt;||(o&lt;T&gt;=[]);n&lt;E&gt;||(n.forEach(function(t){var n,r;r=i(n=a&lt;E&gt;,t),n&lt;R&gt;!==t&amp;amp;&amp;amp;n.splice(r,0,t),r=i(n=a&lt;T&gt;,e),n&lt;R&gt;!==e&amp;amp;&amp;amp;n.splice(r,0,e)}),n&lt;E&gt;=e)})}function n(t,n){t.forEach(function(t){e(t,n)})}function r(t,e){t.type==="GeometryCollection"?t.geometries.forEach(function(t){r(t,e)}):t.type in u&amp;amp;&amp;amp;u[t.type](t.arcs,e)}var o=[],a=t.map(function(){return[]}),u={LineString:e,MultiLineString:n,Polygon:n,MultiPolygon:function(t,e){t.forEach(function(t){n(t,e)})}};return t.forEach(r),a}return{version:"1.1.0",mesh:e,feature:n,neighbors:u}}();&lt;/E&gt;&lt;/R&gt;&lt;/T&gt;&lt;/R&gt;&lt;/E&gt;&lt;/E&gt;&lt;/T&gt;&lt;/T&gt;&lt;/O&gt;&lt;/R&gt;&lt;/R&gt;&lt;/O&gt;&lt;/E&gt;&lt;/R&gt;&lt;/O&gt;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;alert("topojson code added fine");&lt;/P&gt;&lt;P&gt;Qv.AddExtension("V-worldmap",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function () {&lt;/P&gt;&lt;P&gt;&amp;nbsp; //Load a CSS style sheet&lt;/P&gt;&lt;P&gt;&amp;nbsp; Qva.LoadCSS(template_path + "style.css");&lt;/P&gt;&lt;P&gt;&amp;nbsp; var _this = this;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var divName = "#tooltip-container"&lt;/P&gt;&lt;P&gt;&amp;nbsp; //_this.Layout.ObjectId.replace("\\", "_");&lt;/P&gt;&lt;P&gt;&amp;nbsp; if(_this.Element.children.length == 0) {//if this div doesn't already exist, create a unique div with the divName&lt;/P&gt;&lt;P&gt;&amp;nbsp; var ui = document.createElement("div");&lt;/P&gt;&lt;P&gt;&amp;nbsp; ui.setAttribute("id", divName);&lt;/P&gt;&lt;P&gt;&amp;nbsp; _this.Element.appendChild(ui);&lt;/P&gt;&lt;P&gt;&amp;nbsp; } else {&lt;/P&gt;&lt;P&gt;&amp;nbsp; //if it does exist, empty the div so we can fill it again&lt;/P&gt;&lt;P&gt;&amp;nbsp; $("#" + divName).empty();&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Create a variable to hold generated html &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var html = "&amp;lt;table&amp;gt;";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Cycle Through the data&lt;/P&gt;&lt;P&gt;var countrypop = new Array(this.Data.Rows.length) ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var i = 0; i &amp;lt; this.Data.Rows.length; i++) { &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // get the row &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var row = this.Data.Rows &lt;I&gt;;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Generate html &lt;/P&gt;&lt;P&gt;&amp;nbsp; countrypop&lt;I&gt; = new Array(2); &lt;/I&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; countrypop&lt;I&gt;[0]=row[0].text;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; countrypop&lt;I&gt;[1]=row[1].text;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //pop[row[0].text] = row[1].text ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html += "&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;" + row[0].text + "&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;" + row[1].text + "&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;"; &lt;/P&gt;&lt;P&gt;&amp;nbsp; //alert(country&lt;I&gt;);&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //alert(pop[row[0].text]);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Finalise the html &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html += "&amp;lt;/table&amp;gt;";&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set the HTML &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //this.Element.innerHTML = html;&lt;/P&gt;&lt;P&gt;//delete from here&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var config = {"data0":"Country (or dependent territory)","data1":"Population","label0":"label 0","label1":"label 1","color0":"#99ccff","color1":"#0050A1","width":800,"height":400}&lt;/P&gt;&lt;P&gt;&amp;nbsp; var width = 960,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; height = 960;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var COLOR_COUNTS = 9;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; function Interpolate(start, end, steps, count) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var s = start,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e = end,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; final = s + (((e - s) / steps) * count);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return Math.floor(final);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; function Color(_r, _g, _b) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var r, g, b;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var setColors = function(_r, _g, _b) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r = _r;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g = _g;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b = _b;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setColors(_r, _g, _b);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.getColors = function() {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var colors = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r: r,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g: g,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b: b&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return colors;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; function hexToRgb(hex) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return result ? {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r: parseInt(result[1], 16),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g: parseInt(result[2], 16),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b: parseInt(result[3], 16)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } : null;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; function valueFormat(d) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (d &amp;gt; 1000000000) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return Math.round(d / 1000000000 * 10) / 10 + "B";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (d &amp;gt; 1000000) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return Math.round(d / 1000000 * 10) / 10 + "M";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (d &amp;gt; 1000) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return Math.round(d / 1000 * 10) / 10 + "K";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return d;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&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; var COLOR_FIRST = config.color0, COLOR_LAST = config.color1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var rgb = hexToRgb(COLOR_FIRST);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var COLOR_START = new Color(rgb.r, rgb.g, rgb.b);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; rgb = hexToRgb(COLOR_LAST);&lt;/P&gt;&lt;P&gt;&amp;nbsp; var COLOR_END = new Color(rgb.r, rgb.g, rgb.b);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var startColors = COLOR_START.getColors(),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; endColors = COLOR_END.getColors();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var colors = [];&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; for (var i = 0; i &amp;lt; COLOR_COUNTS; i++) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var r = Interpolate(startColors.r, endColors.r, COLOR_COUNTS, i);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var g = Interpolate(startColors.g, endColors.g, COLOR_COUNTS, i);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var b = Interpolate(startColors.b, endColors.b, COLOR_COUNTS, i);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; colors.push(new Color(r, g, b));&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var MAP_KEY = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var MAP_VALUE = 1;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var projection = d3.geo.mercator()&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .scale((width + 1) / 2 / Math.PI)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .translate([width / 2, height / 2])&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .precision(.1);&lt;/P&gt;&lt;P&gt;&amp;nbsp; var path = d3.geo.path()&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .projection(projection);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var graticule = d3.geo.graticule();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var svg = d3.select("#canvas-svg").append("svg")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .attr("width", width)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .attr("height", height);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; svg.append("path")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .datum(graticule)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .attr("class", "graticule")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .attr("d", path);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; var valueHash = {};&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; function log10(val) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return Math.log(val);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; countrypop.forEach(function(d) &lt;/P&gt;&lt;P&gt;{&amp;nbsp; &lt;/P&gt;&lt;P&gt;//alert(d[0]);&lt;/P&gt;&lt;P&gt;//alert(d[1]);&lt;/P&gt;&lt;P&gt; // alert(+d[MAP_VALUE]);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; valueHash[d[0]] = +d[1];&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; var quantize = d3.scale.quantize()&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .domain([0, 1.0])&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .range(d3.range(COLOR_COUNTS).map(function(i) { return i }));&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; quantize.domain([d3.min(countrypop, function(d){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (+d[MAP_VALUE]) }),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; d3.max(countrypop, function(d){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (+d[MAP_VALUE]) })]);&lt;/P&gt;&lt;P&gt;&amp;nbsp; alert("all fine before json");&lt;/P&gt;&lt;P&gt;&lt;STRONG style=": ; color: #ff0000; font-size: 12pt;"&gt;d3.json("world-topo-min.json", function(error, world) {&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; color: #ff0000;"&gt;&lt;STRONG&gt;&amp;nbsp; if(error) alert("json data load failed");&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; color: #ff0000;"&gt;&lt;STRONG&gt;var countries = topojson.feature(world, world.objects.countries).features;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; color: #ff0000;"&gt;&lt;STRONG&gt;&amp;nbsp; }&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style=": ; color: #ff0000; font-size: 12pt;"&gt;&amp;nbsp; );&lt;/STRONG&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;&lt;P&gt;&lt;/P&gt;&lt;P&gt;},true);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;extension_Init(); &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Seems like the json file is not loaded , I am not able to debug this , looking for some help on this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Varun&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 17 Jul 2015 14:32:40 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/qlikview-extension-using-d3js-and-json/m-p/899043#M992226</guid>
      <dc:creator />
      <dc:date>2015-07-17T14:32:40Z</dc:date>
    </item>
  </channel>
</rss>

