1 Reply Latest reply: Apr 23, 2018 5:19 AM by Satmar Paul-Nicolae RSS

    Extension failed to render

    Satmar Paul-Nicolae

      Hi everyone,

       

      I've managed to create an extension in QlikSense, who consumes a REST web service.

       

      In Desktop mode, I see the button and extension works fine but when i'm importing this extension on server I get the message "Error : the visualization fails to render ".

       

      Script:

       

       

       

      define(["jquery", "text!./com-qliktech-example.css","qlik"], function($, cssContent, qlik ) {

      $("<style>").html(cssContent).appendTo("head");

      function createBtn(cmd, text) {

      return '<button class="lui-button" style="font-size:13px;" data-cmd="' + cmd + '">' + text + '</button>';

      }

       

      function consumeWS(link) {

          $.ajax({

              type: 'GET',

              url: link,

              dataType: "json",

      //processData: false,

      async: true,

      success: function(resp) {

                      //alert("success: " + resp);

                  },

                  error: function (xhr, ajaxOptions, thrownError) {

                      //alert("error status: " + xhr.status);

                      //alert("error status text: " + xhr.statusText);

                      //alert("error response text: " + xhr.responseText);

                  },

          })

       

       

         return link;

      }

      return {

      initialProperties : {

      qBookmarkListDef : {

      qType : "bookmark",

      qData : {

      title : "/title",

      description : "/description"

      }

      },

      qFieldListDef : {

      }

      },

       

      definition : {

      type : "items",

      component : "accordion",

      items : {

      buttons : {

      type : "items",

      label : "Button Menu",

      items : {

      clearButton : {

      ref : "buttons.clear",

      label : "ClearAll",

      type : "boolean",

      defaultValue : true

      }

      }

      },

      field : {

      type : "items",

      label : "Field and field buttons",

      items : {

      showfield : {

      ref : "field.show",

      type : "boolean",

      label : "Show",

      defaultValue : false

      },

      ws : {

      type: "string",

      label: "Valoare WS",

      ref  : 'field.ws',

      expression: "always",

      defaultValue: "" 

      },

      list : {

      ref : "field.list",

      component : "switch",

      type : "boolean",

      label : "Field",

      defaultValue : true,

      options : [{

      value : true,

      label : "List Fields"

      }, {

      value : false,

      label : "Fixed field"

      }],

      show : function(data) {

      return data.field && data.field.show;

      }

      },

      fixed : {

      ref : "field.fixed",

      label : "Use field",

      type : "string",

      defaultValue : "",

      show : function(data) {

      return data.field && data.field.show && !data.field.list;

      }

      },

      clearButton : {

      ref : "field.clear",

      label : "Clear",

      type : "boolean",

      defaultValue : false,

      show : function(data) {

      return data.field && data.field.show;

      }

      }

      }

      },

      settings : {

      uses : "settings"

      }

      }

      },

      support: {

      snapshot: false,

      export: true,

      exportData: false

      },

      paint : function($element, layout) {

      //create the app button group

      var html = '', app = qlik.currApp(this);

      html += '<div class="lui-buttongroup">';

      if(layout.buttons.clear) {

      html += createBtn("clearAll", "Salveaza Inregistrarile");

      }

      html += '</div><br/>';

      if(layout.field && layout.field.show) {

      html += '<div class="lui-buttongroup">';

      //create the field btn group

      if(layout.field.list && layout.qFieldList) {

      html += '<select class="lui-select fields">';

      layout.qFieldList.qItems.forEach( function( value) {

      html += "<option value='" + value.qName + "'>" + value.qName + "</option>";

      });

      html += '</select>';

      } else {

      //display the fixed field

      html += '<div class="qv-object-title">' + layout.field.fixed + '</div>';

      }

      if(layout.field.clear) {

      html += createBtn("clear", "Clear");

      }

      html += '</div>';

      }

      $element.html(html);

       

      $element.find('button').on('qv-activate', function() {

      switch(this.dataset.cmd) {

      case 'clearAll':

      try {

      consumeWS(layout.field.ws);

      }

      catch(err) {

       

      //alert(err.message);

      //alert(err.stack);

      //alert(response);

         }

      break;

      }

       

      });

      return qlik.Promise.resolve();

      }

      };

      });

       

      I'm stucked here, any advice is welcome.


      Paul S.