Name

sn_grc.GRC_SupportData_DAO

Description

Example to invoke <g macro_invoke macro= sn_grc_supportingData_tablularView ref_table= $ jvar_ref_table fields= $ jvar_fields support_data_table= sn_grc_indicator_supporting_data field= document field_name_field= field_name field_name_value = value query_string= task=$ current.sys_id page_size= 20 />

Script

var GRC_SupportData_DAO = Class.create();
GRC_SupportData_DAO.prototype = {
  initialize: function() {},

  /*
  	Returns Array of distinct values for a 'field' of relevant rows according to 'queryString' from 'table'.	 
  */
  getFieldDistinctValuesArray: function(table, field, queryString, fieldNameField, fieldValueField, orderByFieldName, BoolOrderByDesc) {

      var records = {};
      var count = new GlideRecord(table);

      if (!gs.nil(orderByFieldName)) {
          queryString += '^' + fieldNameField + '=' + orderByFieldName;
          BoolOrderByDesc ? count.orderByDesc(fieldValueField) : count.orderBy(fieldValueField);
      }
      count.addEncodedQuery(queryString);
      count.query();
      while (count.next() && count.canRead()) {
  		records[count[field] + ''] = count[field] + '';
      }
  	return Object.keys(records);

  },

  /*
  	Filter Records based on Search Query Array
  	Returns Array of GroupBy Field : field
  */
  filterRecordSysIds: function(table, field, queryString, fieldNameField, searchQueryArray) {
      var records = [];
      var recordsStr = '';
      var query = '';
      var count;
      for (var i = 0; i < searchQueryArray.length; i++) {
          count = new GlideRecord(table);
          recordsStr = records.join(",");
          records = [];
          query = '';
          query = queryString + '^' + searchQueryArray[i];
          if (!gs.nil(recordsStr)) {
              query += '^' + field + 'IN' + recordsStr;
              recordsStr = '';
          }
          count.addEncodedQuery(query);
          count.query();
          while (count.next() && count.canRead()) {
              records[count[field] + ''] = count[field] + '';
          }
      }
      return Object.keys(records);
  },

  /*
  	Sorts array based on given orderByFieldName
  */
  sortRecords: function(recordSysIds, table, field, queryString, fieldNameField, fieldValueField, orderByFieldName, BoolOrderByDesc) {
      var records = {};
      var recordsStr = recordSysIds.join(",");
      var query = '';
      var count;

      count = new GlideRecord(table);
      records = [];
      if (!gs.nil(orderByFieldName)) {
          queryString += '^' + fieldNameField + '=' + orderByFieldName;
          BoolOrderByDesc ? count.orderByDesc(fieldValueField) : count.orderBy(fieldValueField);
      }
      if (!gs.nil(recordsStr)) {
          queryString += '^' + field + 'IN' + recordsStr;
      }
      count.addEncodedQuery(queryString);
      count.query();
      while (count.next() && count.canRead()) {
          records[count[field] + '']= count[field] + '';
      }

      return Object.keys(records);

  },

  /*
  	Returns Total No Of Rows
  */
  getTotalNumberOfRows: function(table, field, firstColumn, queryString, searchQueryArray, fieldNameField) {
      var total = 0;
      if (searchQueryArray.length > 0) {
          var arr = this.filterRecordSysIds(table, field, queryString, fieldNameField, searchQueryArray);
          total = arr.length + '';

      } else {

          var count = new GlideRecordSecure(table);
          queryString += '^' + fieldNameField + '=' + firstColumn;
          count.addEncodedQuery(queryString);
          count.query();
          while (count.next()) {
              total++;
          }
      }
      return total + '';
  },

  /*
  	Returns Json Object containg all field value pairs for single row
  */
  getRowJsonString: function(table, queryString, field, value, referenceTable, fieldNameField, fieldValueField) {
      var row = {};
      var supportDataGR = new GlideRecordSecure(table);
      supportDataGR.addEncodedQuery(queryString + '^' + field + '=' + value);
      supportDataGR.query();
      while (supportDataGR.next()) {
          row[supportDataGR[fieldNameField].toString()] = supportDataGR[fieldValueField].toString();

      }
      if (!this.isEmpty(row)) {
          row["sys_id"] = (this.liveRecordExists(referenceTable, value) == true) ? value.toString() : '';
          return JSON.stringify(row);
      } else
          return '';
  },

  liveRecordExists: function(referenceTable, sysId) {
      var record = new GlideRecordSecure(referenceTable);
      if (record.get(sysId + ''))
          return true;
      return false;
  },

  /*
  	Returns Array of field objects containing field_name : Field_label pairs.
  */
  getFieldsArray: function(table, fields) {

      var fieldObj = {};
      var list = [];
      var fieldList = fields.split(",");

      var field = new GlideRecordSecure(table);
  	field.setLimit(1);
      field.query();

      if (field.next()) {
          for (var j = 0; j != fieldList.length; j++) {
              var fieldElement = field.getElement(fieldList[j]);
  			if (!(!fieldElement && fieldElement!='')) {
                  fieldObj.name = fieldList[j];
                  fieldObj.label = (!gs.nil(field.getElement(fieldList[j]).getLabel())) ? field.getElement(fieldList[j]).getLabel() : fieldList[j];
                  list.push(JSON.stringify(fieldObj));
              }
          }
      }
      return list;
  },

  isEmpty: function(obj) {
      for (var prop in obj) {
          if (obj.hasOwnProperty(prop)) {
              return false;
          }
      }

      return JSON.stringify(obj) === JSON.stringify({});
  },

  type: 'GRC_SupportData_DAO'
};

Sys ID

4050b89adb1f8c10fded8d7e139619c9

Offical Documentation

Official Docs: