Change the CI field icon in the incident form

nabil
Tera Contributor

Hello,




I’m trying to modify the behavior of the following icon. Currently, it displays once the subcategory has been selected.

I need it to display only when the CI is selected.

I’ve checked and believe the icon’s behavior is managed by the following macro, but despite all my modifications, the button still appears when the subcategory is changed.

nabil_0-1732486678062.png

 



Macro ui used is the following for icon  :

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
   <j:set var="jvar_n" value="show_related_tasks_${ref}"/>
   <g2:evaluate var="jvar_show_tasks_display" jelly="true">
      var id = __ref__.getSysIdValue();
      if (id == null)
         "none";
      else {
         var ga = new GlideRecord('task_ci');
         ga.addQuery('ci_item', __ref__.getSysIdValue());
         ga.addQuery('task', '!=', jelly.sys_id);
         ga.addQuery('task.sys_created_on','&gt;',gs.daysAgoStart(0));
         ga.addQuery('task.sys_created_on','&lt;',gs.daysAgoEnd(0));
         ga.addQuery('task.active', true);
         ga.addQuery('task.sys_class_name', 'incident');
         ga.setLimit(1);
         ga.query();
         if (ga.next())
            "";
         else
            "none";
      }
   </g2:evaluate>

   <a id="${jvar_n}"
     onclick="showTasksDialog('${ref}')"
     name="${jvar_n}"
    class="btn btn-ref btn-default icon-warning-circle"
     style="display:$[jvar_show_tasks_display]">
         <span class="sr-only">
             ${gs.getMessage('Active incidents against the same CI opened on the same day')}
         </span>
   </a>
   
   <script>
      needsRefresh = false;
      function onChange_cmdb_ci_show_related(element, original, changed, loading) {
         if (needsRefresh == false) {
            needsRefresh = true;
            return;
         }
         if (changed.length == 0) {
            $('${jvar_n}').hide();
            return;
         }
         var ga = new GlideAjax('ShowRelatedTasksAjax');
         ga.addParam('sysparm_name', 'getRelatedTaskCount');
         ga.addParam('sysparm_ci', g_form.getValue('${ref}'));
         ga.addParam('sysparm_task', g_form.getUniqueValue());
         ga.getXML(relatedTaskReturn);
      }
     
      function relatedTaskReturn(response) {
         var answer = parseInt(response.responseXML.documentElement.getAttribute("answer"));
         var e = $('${jvar_n}');
         if (answer > 0)
            e.show();
         else
            e.hide();
      }
     
      var h = new GlideEventHandler('onChange_incident_cmdb_ci_show_related', onChange_cmdb_ci_show_related, '${ref}');
      g_event_handlers.push(h);
     
      function showTasksDialog(reference){
         var v = g_form.getValue(reference);
         var w = new GlideDialogWindow('show_list');
         w.setTitle(getMessage('Active incidents against the same CI opened today'));
         w.setPreference('table', 'task_list');
         w.setPreference('sysparm_view', 'default');
       w.setPreference('sysparm_query', "active=true^sys_id!=" + g_form.getUniqueValue() + "^sys_created_onONToday@javascript&colon;gs.daysAgoStart(0)@javascript&colon;gs.daysAgoEnd(0)^SUBQUERYsys_id,task,task_ci,sys_created_on^ci_item=" + v + "^ENDSUBQUERY");
         w.render();
      }
   </script>
</j:jelly>

Thank you in advance

1 REPLY 1

nabil
Tera Contributor

I forget the script include inside the code (this is an ootb include script)