<?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 Re: Qlik Sense Extension issue: TypeError: $(…).DataTable is not a function in Integration, Extension &amp; APIs</title>
    <link>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Extension-issue-TypeError-DataTable-is-not-a-function/m-p/1412660#M8683</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The Buttons-Plugin requires &lt;STRONG&gt;"datatables.net"&lt;/STRONG&gt; which means that you need to create a path for it:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This should work:&lt;/P&gt;&lt;PRE __default_attr="javascript" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_15064990761717049 jive_text_macro" jivemacro_uid="_15064990761717049"&gt;
&lt;P&gt;require.config( { &lt;/P&gt;
&lt;P&gt;paths: {&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;"datatables.net": "&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://cdn.datatables.net/1.10.16/js/jquery.dataTables" rel="nofollow" target="_blank"&gt;https://cdn.datatables.net/1.10.16/js/jquery.dataTables&lt;/A&gt;&lt;SPAN&gt;"&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([&lt;/P&gt;
&lt;P&gt;"qlik",&lt;/P&gt;
&lt;P&gt;"jquery",&lt;/P&gt;
&lt;P&gt;"text!./template.html",&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://cdn.datatables.net/buttons/1.4.2/js/dataTables.buttons.js" rel="nofollow" target="_blank"&gt;https://cdn.datatables.net/buttons/1.4.2/js/dataTables.buttons.js&lt;/A&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;],&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mathias&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 27 Sep 2017 07:58:42 GMT</pubDate>
    <dc:creator>m_s</dc:creator>
    <dc:date>2017-09-27T07:58:42Z</dc:date>
    <item>
      <title>Qlik Sense Extension issue: TypeError: $(…).DataTable is not a function</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Extension-issue-TypeError-DataTable-is-not-a-function/m-p/1412657#M8680</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have created an extension that needs to use the Datatables plugin (&lt;A href="https://datatables.net/extensions/buttons/#Download"&gt;https://datatables.net/extensions/buttons/#Download&lt;/A&gt;). But when trying to initialize the plugin, according to the help:&lt;/P&gt;&lt;PRE&gt;var table = $('#mytable').DataTable();
&lt;/PRE&gt;&lt;P&gt;I get an error message stating "TypeError: $(...).DataTable is not a function".&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; &lt;EM&gt;I know that jquery has been loaded, since I use it a lot in the extension without any issues.&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;A minimal version of the Qlik Sense Extension javascript file:&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE&gt;define( [
"qlik",
"jquery",
"text!./template.html",
"./datatables.min",
],
function ( qlik, $, template, datatables ) {

&amp;nbsp;&amp;nbsp;&amp;nbsp; return {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; template: template,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; support: {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; snapshot: true,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; export: true,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exportData: false
&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; paint: function () {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var table = $('#mytable').DataTable();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return qlik.Promise.resolve();
&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; controller: ['$scope', function ( $scope ) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }]
&amp;nbsp;&amp;nbsp;&amp;nbsp; };

} );
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My guess is that i need to call the DataTable() in another way since datatables.min consists of anonymous functions and since Qlik Sense uses require.js to import external files.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 26 Sep 2017 06:55:26 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Extension-issue-TypeError-DataTable-is-not-a-function/m-p/1412657#M8680</guid>
      <dc:creator>_jespers_</dc:creator>
      <dc:date>2017-09-26T06:55:26Z</dc:date>
    </item>
    <item>
      <title>Re: Qlik Sense Extension issue: TypeError: $(…).DataTable is not a function</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Extension-issue-TypeError-DataTable-is-not-a-function/m-p/1412658#M8681</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Jesper,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Yes its probably an issue if there are multiple plugins selected. Just referencing the datatables library without any plugin works fine.&lt;/P&gt;&lt;PRE __default_attr="javascript" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_15064299284517236" jivemacro_uid="_15064299284517236"&gt;
&lt;P&gt;define( [&lt;/P&gt;
&lt;P&gt;"qlik",&lt;/P&gt;
&lt;P&gt;"jquery",&lt;/P&gt;
&lt;P&gt;"text!./template.html",&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://cdn.datatables.net/v/dt/dt-1.10.16/datatables.min.js" rel="nofollow" target="_blank"&gt;https://cdn.datatables.net/v/dt/dt-1.10.16/datatables.min.js&lt;/A&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;],&lt;/P&gt;
&lt;P&gt;function ( qlik, $, template, datatables ) {&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;return {&lt;/P&gt;
&lt;P&gt;template: template,&lt;/P&gt;
&lt;P&gt;support: {&lt;/P&gt;
&lt;P&gt;snapshot: true,&lt;/P&gt;
&lt;P&gt;export: true,&lt;/P&gt;
&lt;P&gt;exportData: false&lt;/P&gt;
&lt;P&gt;},&lt;/P&gt;
&lt;P&gt;paint: function () {&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;$(document).ready(function() {&lt;/P&gt;
&lt;P&gt;var table = $('#mytable').DataTable();&lt;/P&gt;
&lt;P&gt;} );&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;return qlik.Promise.resolve();&lt;/P&gt;
&lt;P&gt;},&lt;/P&gt;
&lt;P&gt;controller: ['$scope', function ( $scope ) {&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;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Maybe you can load the plugins one by one? &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mathias&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PS. &lt;SPAN style="font-size: 10pt;"&gt;You need a &amp;lt;tbody&amp;gt; and &amp;lt;thead&amp;gt; element for DataTables to work so I modified your template.html:&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE __default_attr="xml" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_15064301668249417 jive_text_macro" jivemacro_uid="_15064301668249417"&gt;
&lt;P&gt;&amp;lt;div qv-extension style="height: 100%; position: relative; overflow: auto;" class="ng-scope"&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;table id="mytable"&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;thead&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;tr&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;td&amp;gt;Cell 1&amp;lt;/td&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;td&amp;gt;Cell 2&amp;lt;/td&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/tr&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/thead&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;tbody&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;tr&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;td&amp;gt;Cell 1&amp;lt;/td&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;td&amp;gt;Cell 2&amp;lt;/td&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/tr&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/tbody&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/table&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/div&amp;gt;&lt;/P&gt;

&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 26 Sep 2017 12:48:50 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Extension-issue-TypeError-DataTable-is-not-a-function/m-p/1412658#M8681</guid>
      <dc:creator>m_s</dc:creator>
      <dc:date>2017-09-26T12:48:50Z</dc:date>
    </item>
    <item>
      <title>Re: Qlik Sense Extension issue: TypeError: $(…).DataTable is not a function</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Extension-issue-TypeError-DataTable-is-not-a-function/m-p/1412659#M8682</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Mathias,&lt;/P&gt;&lt;P&gt;I have tried your way of importing and as you said it works fine when I'm only importing the core datatables.min.js.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But in my extension I also need to import the Buttons plugin to be able to export to excel. So I then added that plugin to the define section.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="javascript" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_15064943526583981 jive_text_macro" jivemacro_uid="_15064943526583981" modifiedtitle="true"&gt;
&lt;P&gt;define( [&lt;/P&gt;
&lt;P&gt;"qlik",&lt;/P&gt;
&lt;P&gt;"jquery",&lt;/P&gt;
&lt;P&gt;"text!./template.html",&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js" rel="nofollow" target="_blank"&gt;https://cdn.datatables.net/1.10.16/js/jquery.dataTables.js&lt;/A&gt;&lt;SPAN&gt;",&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://cdn.datatables.net/buttons/1.4.2/js/dataTables.buttons.min.js" rel="nofollow" target="_blank"&gt;https://cdn.datatables.net/buttons/1.4.2/js/dataTables.buttons.js&lt;/A&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;],&lt;/P&gt;
&lt;P&gt;function ( qlik, $, template, datatables, datatables_button ) {&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;return {&lt;/P&gt;
&lt;P&gt;template: template,&lt;/P&gt;
&lt;P&gt;support: {&lt;/P&gt;
&lt;P&gt;snapshot: true,&lt;/P&gt;
&lt;P&gt;export: true,&lt;/P&gt;
&lt;P&gt;exportData: false&lt;/P&gt;
&lt;P&gt;},&lt;/P&gt;
&lt;P&gt;paint: function () {&lt;/P&gt;
&lt;P&gt;$(document).ready(function() {&lt;/P&gt;
&lt;P&gt;var table = $('#mytable').DataTable();&lt;/P&gt;
&lt;P&gt;} );&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;return qlik.Promise.resolve();&lt;/P&gt;
&lt;P&gt;},&lt;/P&gt;
&lt;P&gt;controller: ['$scope', function ( $scope ) {&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;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But now when I try to execute the script I get a new error:&lt;/P&gt;&lt;P&gt;&lt;IMG __jive_id="177827" alt="error.PNG" class="jive-image image-1" src="https://community.qlik.com/legacyfs/online/177827_error.PNG" style="height: auto;" /&gt;&lt;/P&gt;&lt;P&gt;This has something to do with the code inside the Button script, because as soon as I remove it, the error is gone. &lt;SPAN style="font-size: 13.3333px;"&gt;The first part refers to the local server.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It seems like there is a part in the Button script where this error happens:&lt;/P&gt;&lt;PRE __default_attr="javascript" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_15064956145529394 jive_text_macro" jivemacro_uid="_15064956145529394"&gt;
&lt;P&gt;if ( typeof define === 'function' &amp;amp;&amp;amp; define.amd ) {&lt;/P&gt;
&lt;P&gt;// AMD&lt;/P&gt;
&lt;P&gt;// The script executes fine here&lt;/P&gt;
&lt;P&gt;define( ['jquery', 'datatables.net'], function ( $ ) {&lt;/P&gt;
&lt;P&gt;// But the script never enter this part.&lt;/P&gt;
&lt;P&gt;return factory( $, window, document );&lt;/P&gt;
&lt;P&gt;} );&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;

&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;Any idea why this happens?&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 27 Sep 2017 06:47:58 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Extension-issue-TypeError-DataTable-is-not-a-function/m-p/1412659#M8682</guid>
      <dc:creator>_jespers_</dc:creator>
      <dc:date>2017-09-27T06:47:58Z</dc:date>
    </item>
    <item>
      <title>Re: Qlik Sense Extension issue: TypeError: $(…).DataTable is not a function</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Extension-issue-TypeError-DataTable-is-not-a-function/m-p/1412660#M8683</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The Buttons-Plugin requires &lt;STRONG&gt;"datatables.net"&lt;/STRONG&gt; which means that you need to create a path for it:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This should work:&lt;/P&gt;&lt;PRE __default_attr="javascript" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_15064990761717049 jive_text_macro" jivemacro_uid="_15064990761717049"&gt;
&lt;P&gt;require.config( { &lt;/P&gt;
&lt;P&gt;paths: {&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;"datatables.net": "&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://cdn.datatables.net/1.10.16/js/jquery.dataTables" rel="nofollow" target="_blank"&gt;https://cdn.datatables.net/1.10.16/js/jquery.dataTables&lt;/A&gt;&lt;SPAN&gt;"&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([&lt;/P&gt;
&lt;P&gt;"qlik",&lt;/P&gt;
&lt;P&gt;"jquery",&lt;/P&gt;
&lt;P&gt;"text!./template.html",&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://cdn.datatables.net/buttons/1.4.2/js/dataTables.buttons.js" rel="nofollow" target="_blank"&gt;https://cdn.datatables.net/buttons/1.4.2/js/dataTables.buttons.js&lt;/A&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;],&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mathias&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 27 Sep 2017 07:58:42 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Extension-issue-TypeError-DataTable-is-not-a-function/m-p/1412660#M8683</guid>
      <dc:creator>m_s</dc:creator>
      <dc:date>2017-09-27T07:58:42Z</dc:date>
    </item>
    <item>
      <title>Re: Qlik Sense Extension issue: TypeError: $(…).DataTable is not a function</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Extension-issue-TypeError-DataTable-is-not-a-function/m-p/1412661#M8684</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Finally! Now it works.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;T&lt;SPAN style="font-size: 10pt;"&gt;hank you!&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 27 Sep 2017 08:20:39 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Extension-issue-TypeError-DataTable-is-not-a-function/m-p/1412661#M8684</guid>
      <dc:creator>_jespers_</dc:creator>
      <dc:date>2017-09-27T08:20:39Z</dc:date>
    </item>
  </channel>
</rss>

