Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Set Reference Qualifier in reflistOpen

sigmachiuta
Kilo Guru

I am trying to set a reference qualifier on   reflistOpen in a UI macro like below.   The problem is that when the ref list opens the qualifier is being ignored and i see the full list.

<a onclick="reflistOpen( '${jvar_control_name_actual}', 'not', '${jvar_reference}', '' ,

'false', 'QUERY:active=true' );mousePositionSave(event);"

tabindex="1" class="icon-search btn btn-default sn-tooltip-basic">

  </a>

It looks like it was done here but not inside a macro.

Re: UI page dependent reference field

3 REPLIES 3

Abhinay Erra
Giga Sage

Can you post the code of your macro here.



Thanks,


Abhinay



PS: Hit like, Helpful or Correct depending on the impact of the response


Community Alums
Not applicable

Hello,



This code sample is part of OOTB macro, lightweight_glide_list.



<?xml version="1.0" encoding="utf-8" ?>


<j:jelly trim="true" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">



  <!--


  Simplified glide list implemenation for use within macros. Runs entirely in a single phase.


  Doesn't support clickthrough or m2m edit.



  Requires the following variables be set prior to execution:



  jvar_reference   where are we pulling our list from e.g. sys_user


  jvar_list_data   current value e.g. abc123,def456


  jvar_can_write   can we edit this?


  jvar_control_name   name of this control on screen?


  -->



  <j:set var="jvar_control_name_actual" value="${jvar_control_name}" />


  <j:set var="jvar_control_name" value="z${jvar_control_name}" />


  <g:evaluate var="jvar_current_user" expression="gs.getUserDisplayName()" />


  <g:evaluate var="jvar_current_user_id" expression="gs.getUserID()" />



  <j:if test="${!jvar_can_write}">


  <g:get_distribution_list ref="${jvar_reference}" readonly="true" ensure="true" record="${jvar_list_data}" />


  </j:if>


  <j:if test="${jvar_can_write}">


  <SPAN id="${jvar_control_name}_edit">


  <TABLE cellSpacing="1" cellPadding="1" border="0">


  <TR>


  <TD>


  <!-- left selection -->


  <SELECT id="select_0${jvar_control_name_actual}" style="margin:2px; WIDTH: 160px" multiple="yes"


  size="4" name="select_0${jvar_control_name_actual}">


  <g:get_distribution_list ref="${jvar_reference}"


  record="${jvar_list_data}" type="current" />


  </SELECT>


  </TD>


  <TD class="bodySmall" vAlign="center">


  <!-- add / remove buttons -->


  <TABLE cellSpacing="0" cellPadding="0" border="0">


  <j:if test="${jvar_reference == 'sys_user'}" >


      <TR>


  <TD>


  <A


  onclick="addChoiceFromValueAndDisplay(gel('select_0${jvar_control_name_actual}'), '$[jvar_current_user_id]', '$[jvar_current_user]');synchLists('${jvar_control_name_actual}');">


  <IMG width="16" height="16" alt="${gs.getMessage('Add me')}" title="${gs.getMessage('Add me')}" src="images/icons/user_obj.gifx" border="0"/>


  </A>


  </TD>


  </TR>


  </j:if>


  <TR>


  <TD>


  <A onclick="simpleRemoveOption(gel('select_0${jvar_control_name_actual}'));synchLists('${jvar_control_name_actual}');">


  <IMG width="16" height="16" title="${gs.getMessage('Remove selected item')}"


  src="images/delete_edit.gifx" alt="${gs.getMessage('Remove selected item')}" border="0" />


  </A>


  </TD>


  </TR>


  <TR>


  <TD>


  <img id="${jvar_control_name}_lock" onclick="lock(this, '${jvar_control_name}', '${jvar_control_name}_edit', '${jvar_control_name}_nonedit', 'select_0${jvar_control_name}', '${jvar_control_name}_nonedit')"


  src="images/view_form.pngx"


  style="align: left; padding-top: 3px; cursor: pointer; display: none"


  alt="Lock"/>


  </TD>


  </TR>


  </TABLE>


  </TD>


  </TR>


  <TR>



  <TD>



  <input id="sys_display.${jvar_control_name}" name="sys_display.${jvar_control_name}"


  onfocus="if (!this.ac) new AJAXReferenceCompleter(this, '${jvar_control_name}', '${jvar_dependent}', '${jvar_ref_qual_elements}', '${jvar_reference}');"


  onkeydown="return acReferenceKeyDown(this, event);" onkeyup="return acReferenceKeyUp(this, event)"


  onkeypress="return acReferenceKeyPress(this, event)"


  function="addChoiceLocal('${jvar_control_name}', '${jvar_control_name_actual}')"


  autocomplete="off"/>



  <a


  onclick="reflistOpen( '${jvar_control_name_actual}', 'not', '${jvar_reference}', '');mousePositionSave(event);"


  tabindex="1">


  <img src="images/reference_list.gifx" border="0" alt="${gs.getMessage('Lookup using list')}" width="18" height="16" />


  </a>



  </TD>



  </TR>


  </TABLE>


  </SPAN>


  <SPAN id="${jvar_control_name}_nonedit">


  <g:get_distribution_list ref="${jvar_reference}" readonly="true" ensure="true" record="${jvar_list_data}" />


  </SPAN>


  <img id="${jvar_control_name}_unlock" onclick="unlock(this, '${jvar_control_name}', '${jvar_control_name}_edit', '${jvar_control_name}_nonedit')"


  src="images/view_edit.pngx"


  style="cursor: pointer; display: inline; margin-left: 2px;"


  alt="Unlock"/>


  </j:if>


  <input type="HIDDEN" name="${jvar_control_name_actual}" id="${jvar_control_name_actual}" value="${jvar_list_data}"   class="${jvar_question_widget_class}" />


  <input type="HIDDEN" name="${jvar_control_name}" id="${jvar_control_name}" value="hello"/>


  <input type="HIDDEN" name="sys_original.${jvar_control_name}" value="${jvar_list_data}"/>


  <input NAME="make_spacing_ok" style="visibility: hidden; width:1px" title=""/>


  <j:if test="${jvar_can_write}">


  <script>  


  function addTextValue(e, selectID, id) {


          var keyCode = getKeyCode(e);


          if (keyCode == KEY_ENTER) {


      addChoiceFromInput(selectID, id);


      return false; //cancel the event


          }


          return true; // continue event processing


  }



  function addChoiceLocal(fieldid, actualfieldid) {


  var selectBox = gel('select_0'+actualfieldid);


  var value = gel(fieldid).value;


  var displayWidget = gel('sys_display.' + fieldid);


  var display = displayWidget.value;


              displayWidget.value= '';


  var opt = document.createElement("option");


  opt.value = value;


  opt.text = display;


  selectBox.options.add(opt);


  synchLists(actualfieldid);


  }




  function synchLists(actualfieldid) {


              var sel0 = gel('select_0' + actualfieldid);


  var distribution = gel(actualfieldid);


  var ovalue = distribution.value;


              saveAllSelected([ sel0 ], [ distribution ], ',', '\\', '--None--');


  }



  addRenderEvent(function() {


      var sel = gel('select_0${jvar_control_name}');


      var ul = gel('${jvar_control_name}_lock');


      <j:if test="${jvar_start_locked}">


          lock(ul,'${jvar_control_name}','${jvar_control_name}_edit','${jvar_control_name}_nonedit', 'select_0${jvar_control_name}', '${jvar_control_name}_nonedit');


      </j:if>


      <j:if test="${!jvar_start_locked}">


              <j:if test="${!jvar_not_focused}">


                      unlock(gel('${jvar_control_name}_unlock'), '${jvar_control_name}', '${jvar_control_name}_edit', '${jvar_control_name}_nonedit');


              </j:if>


      </j:if>


  });


  </script>


  </j:if>


</j:jelly>


utagrawal
Tera Contributor

@sigmachiuta  did u get the answer? . Please share i am trying to do the same thing