Name

global.IndicatorTagsAjax

Description

Supports tagging of indicators in Performance Analytics.

Script

var IndicatorTagsAjax = Class.create();
IndicatorTagsAjax.prototype = Object.extendsObject(AbstractAjaxProcessor, {
  initialize: function(request, responseXML, gc) {
      AbstractAjaxProcessor.prototype.initialize.call(this,request, responseXML, gc);
      this._log = (new GSLog(IndicatorTags.LOG_LEVEL_PROPERTY, this.type)).setLog4J();
  },

  /**
   * getIndicatorTags(): AJAX target for retrieving indicator tags for indicatorId in sysparm_indicatorid
   *
   * Will always return a result element with value "success" or "failure".  If failure the following
   * codes will be stored in a 'reason' attribute.
   *
   */
  getIndicatorTags: function() {
      var r = this.newItem("result");
      r.setAttribute("value","failure");

      var indicatorId = this.getParameter("sysparm_indicatorid");
      if (JSUtil.nil(indicatorId)) {
          if (this._log.atLevel(GSLog.DEBUG))
              this._log.debug("[getIndicatorTags] Invalid indicatorId: " + indicatorId);

          r.setAttribute("reason","missing-data");
          return '';
      }

      var tags = (new IndicatorTags()).getIndicatorTags(indicatorId);

      r.setAttribute("value","success");

      if (this._log.atLevel(GSLog.DEBUG))
          this._log.debug("[getIndicatorTags] Indicator " + indicatorId + " has " + tags.getRowCount() + " tags");

      var tagInfo = [];

      while (tags.next()) {
  		if (tags.canRead()) {
          	tagInfo.push({"label": tags.tag.getDisplayValue()+"",
                        	  "sys_id": tags.sys_id+""});
  		}
      }

      return new global.JSON().encode(tagInfo);
  },

  /**
   * addIndicatorTag(): Adds the Indicator Group sysparm_label to the indicator syspatm_indicatorid 
   *
   * Will always return a result element with value "success" or "failure".  If failure the following
   * codes will be stored in a 'reason' attribute.
   *
   *     * missing-data
   *     * no-indicatortag
   */
  addIndicatorTag: function() {
      var r = this.newItem("result");
      r.setAttribute("value","failure");
      var label = this.getParameter("sysparm_label");
      var indicatorId = this.getParameter("sysparm_indicatorid");

      if (JSUtil.nil(label) || JSUtil.nil(indicatorId)) {
          r.setAttribute("reason","missing-data");
          return label + ":" + indicatorId;
      }

      var indicatorTag = (new IndicatorTags()).addIndicatorTag(label,indicatorId);

      // If no indicatorTag was returned then return without anything.
      if (JSUtil.nil(indicatorTag)){
          r.setAttribute("reason","no-indicatorTagornoaccessrights");
          return label + ":" + indicatorId;
      }

      r.setAttribute("value","success");
      return new global.JSON().encode({"label": indicatorTag.tag.getDisplayValue()+"",
                                  "sys_id": indicatorTag.sys_id+""});
  },

  /**
   * removeIndicatorTag(): Removes the Indicator Group sysparm_sysid
   *
   * Will always return a result element with value "success" or "failure".  If failure the following
   * codes will be stored in a 'reason' attribute.
   *
   *     * missing-data
   */
  removeIndicatorTag: function() {
      var r = this.newItem("result");
      r.setAttribute("value","failure");

      var sysId = this.getParameter("sysparm_sysid");

      if (JSUtil.nil(sysId)) {
          if (this._log.atLevel(GSLog.DEBUG))
              this._log.debug("[removeIndicatorTags] Invalid Indicator Group [" + sysId + "]");

          r.setAttribute("value", "missing-data");
          return;
      }

      if ((new IndicatorTags()).removeIndicatorTag(sysId)) {
          r.setAttribute("value", "success");
      }

      return;
  },
  
  getTagId: function() {
  	var r = this.newItem("result");
      r.setAttribute("value","failure");
  	
  	var tagName = this.getParameter("sysparm_tagname");

      if (JSUtil.nil(tagName)) {
          if (this._log.atLevel(GSLog.DEBUG))
              this._log.debug("[getTagId] Invalid Indicator Group name [" + tagName + "]");

          r.setAttribute("value", "missing-data");
          return '';
      }
  	
  	var tag = new GlideRecord("pa_tags");
  	tag.addQuery("label", tagName);
  	tag.query();
  	
  	var tagInfo;
  	
  	if (tag.next()) {
  		if (tag.canRead()) {
  			r.setAttribute("value","success");
  			tagInfo = {"label": tag.label+"", "sys_id": tag.sys_id+""};
  		}
  	}
  	
  	return new global.JSON().encode(tagInfo);
  },

  type: 'IndicatorTagsAjax'
});

Sys ID

f2a4843cbf00110032a0854b3f073913

Offical Documentation

Official Docs: