Web AppBuilder 2.0 app state default on

3339
10
Jump to solution
04-08-2016 03:10 PM
JoelEdgar
New Contributor II

What code do I need to modify to have Web AppBuilder 2.0 app save state default to being on with no prompt in the lower right corner. I want it to automatically load the users extent and layers from their last session when the application is started.

1 Solution

Accepted Solutions
RobertScheitlin__GISP
MVP Esteemed Contributor

Joel,

  In the apps MapManager.js search for the _checkAppState function and make these changes (Lines 22 - 34):

_checkAppState: function() {
        //URL parameters that affect map extent
        var urlKeys = ['extent', 'center', 'marker', 'find', 'query', 'scale', 'level'];
        var useAppState = this.appConfig.keepAppState;


        if(useAppState) {
          array.forEach(urlKeys, function(k){
            if(k in this.urlParams){
              useAppState = false;
            }
          }, this);
        }


        if(useAppState){
          this.appStateManager.getWabAppState().then(lang.hitch(this, function(stateData) {
            LayerInfos.getInstance(this.map, this.map.itemInfo)
            .then(lang.hitch(this, function(layerInfosObj) {
              this.layerInfosObj = layerInfosObj;
              if(stateData.extent || stateData.layers) {
                // var appStatePopup = new AppStatePopup({
                //   nls: {
                //     title: this.nls.appState.title,
                //     restoreMap: this.nls.appState.restoreMap
                //   }
                // });
                // appStatePopup.placeAt('main-page');
                // on(appStatePopup, 'applyAppState', lang.hitch(this, function(){
                //   this._applyAppState(stateData, this.map);
                // }));
                // appStatePopup.startup();
                // appStatePopup.show();
                this._applyAppState(stateData, this.map);
              }
            }));
          }));
        }
      },

View solution in original post

10 Replies
RobertScheitlin__GISP
MVP Esteemed Contributor

Joel,

  In the apps MapManager.js search for the _checkAppState function and make these changes (Lines 22 - 34):

_checkAppState: function() {
        //URL parameters that affect map extent
        var urlKeys = ['extent', 'center', 'marker', 'find', 'query', 'scale', 'level'];
        var useAppState = this.appConfig.keepAppState;


        if(useAppState) {
          array.forEach(urlKeys, function(k){
            if(k in this.urlParams){
              useAppState = false;
            }
          }, this);
        }


        if(useAppState){
          this.appStateManager.getWabAppState().then(lang.hitch(this, function(stateData) {
            LayerInfos.getInstance(this.map, this.map.itemInfo)
            .then(lang.hitch(this, function(layerInfosObj) {
              this.layerInfosObj = layerInfosObj;
              if(stateData.extent || stateData.layers) {
                // var appStatePopup = new AppStatePopup({
                //   nls: {
                //     title: this.nls.appState.title,
                //     restoreMap: this.nls.appState.restoreMap
                //   }
                // });
                // appStatePopup.placeAt('main-page');
                // on(appStatePopup, 'applyAppState', lang.hitch(this, function(){
                //   this._applyAppState(stateData, this.map);
                // }));
                // appStatePopup.startup();
                // appStatePopup.show();
                this._applyAppState(stateData, this.map);
              }
            }));
          }));
        }
      },
JoelEdgar
New Contributor II

Thanks! Worked great. Exactly what I was looking for.

0 Kudos
RobertScheitlin__GISP
MVP Esteemed Contributor

Joel,


  Don't forget to mark the reply that answered your question by clicking the Correct Answer link.

SowjanyaSunkara3
New Contributor III

Worked for me in 2.1

deleted-user-byYNSf-f9ge6
New Contributor

Hi Robert,

thanks these changes in MapManager.js work on Windows, Mac and Android. But in Safari on Apple devices the app doesn't recover the app state. Do you have any suggestions on how to fix this?

0 Kudos
RobertScheitlin__GISP
MVP Esteemed Contributor

Elwyn,

  Sorry I do not.

0 Kudos
LeoLadefian5
Occasional Contributor II

Hi Robert, do you have an update for this in 2.8 /2.9?  The same change doesn't seem to be working.  Thanks!

0 Kudos
RobertScheitlin__GISP
MVP Esteemed Contributor

Leo,

   The code base for that function is unchanged in 2.8 and 2.9 so there is no reason it would not still work.

LeoLadefian5
Occasional Contributor II

oops, forgot to add line 34, thanks again.

0 Kudos