Name

sn_grc.RelatedListTemplateFilter

Description

Implements extension point global.RelatedListItemCandidateFilter

Script

var RelatedListTemplateFilter = Class.create();
RelatedListTemplateFilter.prototype = {
  initialize: function(tableName, parentFieldName, parentRecordSysId, referencedFieldName) {
      this.tableName = tableName;
      this.parentFieldName = parentFieldName;
      this.parentRecordSysId = parentRecordSysId;
      this.referencedFieldName = referencedFieldName;
  },
  getFilterQuery: function() {
      var m2m = new GlideRecord(this.tableName);
      m2m.addQuery(this.parentFieldName, this.parentRecordSysId);
      m2m.query();
      var existingTemplates = [];
      while (m2m.next()) {
          existingTemplates.push(m2m.getValue(this.referencedFieldName));
      }
  	
  	var contentGr = new GlideRecord('sn_grc_item');
  	contentGr.get(this.parentRecordSysId);
  	
  	var unselectedList=[];
  	var gr = new GlideRecord('sn_grc_m2m_ind_temp_cont');
  	gr.addQuery('content', contentGr.getValue('content'));
  	gr.addQuery('indicator_template', 'NOT IN', existingTemplates);
  	gr.query();
  	
  	while(gr.next())
  		unselectedList.push(gr.getValue('indicator_template'));
  	
  	var type = contentGr.getValue('sys_class_name') == 'sn_risk_risk'?'category=Risk Indicator Template^':'category:Compliance Indicator Template^';
  	
      var query = type+"active=true^sys_idIN" + unselectedList.join(",");
      return query;
  },

  handles: function(thing) {
      return thing == "TEMPLATE_FILTER";
  },

  type: 'RelatedListTemplateFilter'
};

Sys ID

cd9d270573a12010ec95d11ee2f6a7ee

Offical Documentation

Official Docs: