Hello friends!
I need to include a link to a url from another system, where I need to include a parameter in the url's formation. This parameter appears by default in the data that is in the popup, but I can not find a correct way to search for this information. Another detail is that this link option should appear only for a specific layer, that is, if the user clicks on the active point of another layer, I need to check if the layer he is clicking on is the one that should provide that link with to url. I was able to implement in the file "application folder \ jimu.js \ PopupManager.js", inside the function "_createPopupMenuButton" according to the code that follows just below:
_createPopupMenuButton: function () {
       this.popupMenuButtonDesktop = html.create('span', {
       'class': 'popup-menu-button'
 }, query(".actionList", this.popupUnion.bigScreen.domNode)[0]);
//Create link
 var linkRelatorio = html.create("a", {
       "class": " action action-relatorio", 
       "id": "actionRelatorio",
       "innerHTML": "Abrir Relatório",
       "href": "localhost/SigFepamRelatorios/Relatorio.aspx?idRelatorio=1&atanId=",
       "target": "_blank"
 }, query(".actionList", this.popupUnion.bigScreen.domNode)[0]); 
 on(linkRelatorio, "click", this._onActionRelatorio);
...
...
...
This code only puts the link with the url without the parameter I need, and in addition, displays the option whenever the popup is opened and not only for the layer that I want.
Attached is an example of how it was. I am from Brazil, in the state of Rio Grande do Sul.
Thanks for any help.
Gilberto
Solved! Go to Solution.
Gilberto,
Here is one way you would do that:
Make sure you read my comments in the code for how to add the selected features attribute to the link.
      _createPopupMenuButton: function(){
        if(this.popupMenuButtonDesktop) {
          html.destroy(this.popupMenuButtonDesktop);
        }
        if(this.popupMenuButtonMobile) {
          html.destroy(this.popupMenuButtonMobile);
        }
        this.popupMenuButtonDesktop = html.create('span', {
          'class': 'popup-menu-button'
        }, query(".actionList", this.popupUnion.bigScreen.domNode)[0]);
        on(this.popupUnion.bigScreen, 'set-features, selection-change', lang.hitch(this, this._addPopupLink));
        var mobileActionListNode =
          query("div.esriMobileInfoView.esriMobilePopupInfoView .esriMobileInfoViewItem").parent()[0];
        var mobileViewItem = html.create('div', {
            'class': 'esriMobileInfoViewItem'
          }, mobileActionListNode);
        this.popupMenuButtonMobile = html.create('span', {
          'class': 'popup-menu-button'
        }, mobileViewItem);
        on(this.popupMenuButtonMobile, 'click', lang.hitch(this, this._onPopupMenuButtonClick));
        on(this.popupMenuButtonDesktop, 'click', lang.hitch(this, this._onPopupMenuButtonClick));
      },
      _addPopupLink: function(evt){
        //if the link is added to the popup remove it.
        if(query(".action.action-relatorio", this.popupUnion.bigScreen.domNode)[0]){
          html.destroy(query(".action.action-relatorio", this.popupUnion.bigScreen.domNode)[0]);
        }
        //get the popups selected feature
        //now that you have the slected feature you have access to its
        //attributes that you can add to the hrefs link
        var selFeat = this.popupUnion.bigScreen.getSelectedFeature();
        if(selFeat && selFeat.getLayer().name === 'TrafficCams'){
          //Create link
          var linkRelatorio = html.create("a", {
            "class": "action action-relatorio",
            "id": "actionRelatorio",
            "innerHTML": "Abrir Relatório",
            "href": "localhost/SigFepamRelatorios/Relatorio.aspx?idRelatorio=1&atanId=",
            "target": "_blank"
          }, query(".actionList", this.popupUnion.bigScreen.domNode)[0]);
          on(linkRelatorio, "click", this._onActionRelatorio);
        }
      },
      _onActionRelatorio: function(evt){
        var selFeat = this.popupUnion.bigScreen.selectedFeature();
        //now do something
      },
					
				
			
			
				
			
			
				
			
			
				
			
			
			
			
			
		Gilberto,
Here is one way you would do that:
Make sure you read my comments in the code for how to add the selected features attribute to the link.
      _createPopupMenuButton: function(){
        if(this.popupMenuButtonDesktop) {
          html.destroy(this.popupMenuButtonDesktop);
        }
        if(this.popupMenuButtonMobile) {
          html.destroy(this.popupMenuButtonMobile);
        }
        this.popupMenuButtonDesktop = html.create('span', {
          'class': 'popup-menu-button'
        }, query(".actionList", this.popupUnion.bigScreen.domNode)[0]);
        on(this.popupUnion.bigScreen, 'set-features, selection-change', lang.hitch(this, this._addPopupLink));
        var mobileActionListNode =
          query("div.esriMobileInfoView.esriMobilePopupInfoView .esriMobileInfoViewItem").parent()[0];
        var mobileViewItem = html.create('div', {
            'class': 'esriMobileInfoViewItem'
          }, mobileActionListNode);
        this.popupMenuButtonMobile = html.create('span', {
          'class': 'popup-menu-button'
        }, mobileViewItem);
        on(this.popupMenuButtonMobile, 'click', lang.hitch(this, this._onPopupMenuButtonClick));
        on(this.popupMenuButtonDesktop, 'click', lang.hitch(this, this._onPopupMenuButtonClick));
      },
      _addPopupLink: function(evt){
        //if the link is added to the popup remove it.
        if(query(".action.action-relatorio", this.popupUnion.bigScreen.domNode)[0]){
          html.destroy(query(".action.action-relatorio", this.popupUnion.bigScreen.domNode)[0]);
        }
        //get the popups selected feature
        //now that you have the slected feature you have access to its
        //attributes that you can add to the hrefs link
        var selFeat = this.popupUnion.bigScreen.getSelectedFeature();
        if(selFeat && selFeat.getLayer().name === 'TrafficCams'){
          //Create link
          var linkRelatorio = html.create("a", {
            "class": "action action-relatorio",
            "id": "actionRelatorio",
            "innerHTML": "Abrir Relatório",
            "href": "localhost/SigFepamRelatorios/Relatorio.aspx?idRelatorio=1&atanId=",
            "target": "_blank"
          }, query(".actionList", this.popupUnion.bigScreen.domNode)[0]);
          on(linkRelatorio, "click", this._onActionRelatorio);
        }
      },
      _onActionRelatorio: function(evt){
        var selFeat = this.popupUnion.bigScreen.selectedFeature();
        //now do something
      },
					
				
			
			
				
			
			
				
			
			
			
			
			
			
		Robert,
Worked perfectly. Thanks again for the help. I really would not know how to do it without your help.
Thank you!
Gilberto.