2 Replies Latest reply: Sep 9, 2014 6:41 AM by Shane Porter RSS

    Strange behaviour with subsequent createGenericObject calls

      Hi,

       

      I'm trying to get information about my app's dimensions and measures in v1.0.0 of Sense.

       

      To get the dimensions, I use this API call:

       

      app.createGenericObject({

                              qDimensionListDef: {

                                  qType: "dimension",

                                  qData: {

                                      title: "/title",

                                      tags: "/tags",

                                      description: "/description"

                                  }

                              }

                          }, function(reply) {

                               // do stuff                       

                          });

       

      And to get the measures, I use this API call:

       

      app.createGenericObject({

       

       

                              qMeasureListDef: {

                                  qType: "measure",

                                  qData: {

                                      title: "/title",

                                      tags: "/tags",

                                      description: "/description"

                                  }

                              }

                          }, function(reply) {

           // do stuff

      });

       

      Both of these calls are in separate functions in an angular service, which I inject into my controller.  They use promises, and I invoke them as a single call, it all works fine.

       

      I have a third function in my service, getData, which calls them both, using the following code (where 'q' is injected as type $q):

       

      getData : function() {

                          var d = q.defer(),

                              promises = [];

       

       

                          promises[0] = this.getDimensions();

                          promises[1] = this.getMeasures();

       

       

                          q.all(promises).then(function(reply) {

                              d.resolve(reply);

                          });

       

       

                          return d.promise;

                      }

       

      This is then called from my controller using the getData.then(function(reply) { }) type syntax.  The service javascript file is attached to this question.

       

      The problem is that when both are called this way, the second call (to measures) seems to once again return dimension information, whereas when it is called by itself, works as expected.

       

      I don't know why it isn't working as I expect.  Am I missing something crucial?

       

      Thanks,

      Shane.

        • Re: Strange behaviour with subsequent createGenericObject calls
          Erik Wetterberg

          HI Shane,

          If you are doing this from an extension there is an easier way, which might work better.

           

          You can define both lists in initialProperties. Something like this:

          initialProperties : {

                    qMeasureListDef: {

                         qType: "measure",

                         qData: {

                                 title: "/title",

                                 tags: "/tags",

                                description: "/description"

                                 }

                      },

                    qDimensionListDef: {

                         qType: "dimension",

                         qData: {

                                  title: "/title",

                                 tags: "/tags",

                                description: "/description"

                         }

                      }

                  }

           

          Your layout will then contain both a qMeasureList and a qDimensionList. This method is used in the Toolbar extension example (but with fields and bookmarks).