Close splash widget if a URL parameter is found

1245
4
Jump to solution
09-18-2020 10:11 AM
MichaelKohler
Occasional Contributor II

I have a WAB that when opened, shows a splash screen widget.

There is a custom action on popups of a feature layer that sends an email to someone using the custom url parameters. Don't want to have splash screen shown when the recipient clicks on the link.

Is there a way to close the splash widget when url parameters are detected?

0 Kudos
1 Solution

Accepted Solutions
RobertScheitlin__GISP
MVP Emeritus

Michael,

   Sure it would just take some custom code. What parameter are you looking for in the url?

Here is an example (lines 17, 20, 24, 25, 37-39):

define(['dojo/_base/declare',
    'dojo/_base/lang',
    'dojo/_base/html',
    'dojo/on',
    'dojo/keys',
    'dojo/query',
    'dojo/cookie',
    'dijit/_WidgetsInTemplateMixin',
    'jimu/BaseWidget',
    'dojo/topic',
    'jimu/dijit/CheckBox',
    'jimu/utils',
    'esri/lang',
    'jimu/dijit/LoadingShelter',
    'dojo/Deferred',
    'jimu/dijit/EditorXssFilter',
    'esri/urlUtils'
  ],
  function(declare, lang, html, on, keys, query, cookie, _WidgetsInTemplateMixin, BaseWidget, topic,
           CheckBox, utils, esriLang, LoadingShelter, Deferred, EditorXssFilter, urlUtils) {
...
      postCreate: function() {
...
        this.urlObject = urlUtils.urlToObject(window.location.href);
        this.urlObject.query = this.urlObject.query || {};
      },

      onOpen: function() {
        if (!utils.isInConfigOrPreviewWindow()) {
          var isFirstKey = this._getCookieKey();
          var isfirst = cookie(isFirstKey);
          if (esriLang.isDefined(isfirst) && isfirst.toString() === 'false') {
            this.close();
          }
        }
        
        if(esriLang.isDefined(this.urlObject.query.closeSplash) && this.urlObject.query.closeSplash == "true"){
          this.close();
        }
...‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

View solution in original post

4 Replies
RobertScheitlin__GISP
MVP Emeritus

Michael,

   Sure it would just take some custom code. What parameter are you looking for in the url?

Here is an example (lines 17, 20, 24, 25, 37-39):

define(['dojo/_base/declare',
    'dojo/_base/lang',
    'dojo/_base/html',
    'dojo/on',
    'dojo/keys',
    'dojo/query',
    'dojo/cookie',
    'dijit/_WidgetsInTemplateMixin',
    'jimu/BaseWidget',
    'dojo/topic',
    'jimu/dijit/CheckBox',
    'jimu/utils',
    'esri/lang',
    'jimu/dijit/LoadingShelter',
    'dojo/Deferred',
    'jimu/dijit/EditorXssFilter',
    'esri/urlUtils'
  ],
  function(declare, lang, html, on, keys, query, cookie, _WidgetsInTemplateMixin, BaseWidget, topic,
           CheckBox, utils, esriLang, LoadingShelter, Deferred, EditorXssFilter, urlUtils) {
...
      postCreate: function() {
...
        this.urlObject = urlUtils.urlToObject(window.location.href);
        this.urlObject.query = this.urlObject.query || {};
      },

      onOpen: function() {
        if (!utils.isInConfigOrPreviewWindow()) {
          var isFirstKey = this._getCookieKey();
          var isfirst = cookie(isFirstKey);
          if (esriLang.isDefined(isfirst) && isfirst.toString() === 'false') {
            this.close();
          }
        }
        
        if(esriLang.isDefined(this.urlObject.query.closeSplash) && this.urlObject.query.closeSplash == "true"){
          this.close();
        }
...‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
MichaelKohler
Occasional Contributor II

I'm really just interested of the existence of a query parameter in the url. 

0 Kudos
RobertScheitlin__GISP
MVP Emeritus

So just change my code example above to line 36 to

if(esriLang.isDefined(this.urlObject.query.query)){

(yes two "query"s as the first query is just the object name that the browser gives to anything after the ? or & in the url).

0 Kudos
MichaelKohler
Occasional Contributor II

So I ended up doing this:

?query=cipgis_144_373,CIPNumber,UTIL-UG-2019-17&closeSplash=true

Thank you!!!

0 Kudos