Name

sn_docs.DocSlashAPI

Description

No description available

Script

var DocSlashAPI = Class.create();
DocSlashAPI.prototype = {
  initialize: function() {
      this.recordSearchLimit = 5;
  },

  accessParam: function(param) {
      if (param?.length > 0)
          return param[0];
      return param;
  },

  isValidTable: function(tableName) {
      return (new GlideRecord(tableName)).isValid();
  },

  getRecordDropdown: function(queryParams, pathParams) {
      const {
          table
      } = pathParams;
      let {
          pattern,
          fields,
          filterCondition
      } = queryParams;
      pattern = decodeURIComponent(this.accessParam(pattern));
      fields = this.accessParam(fields)?.split(',');
      filterCondition = this.accessParam(filterCondition) || '';

      if (!this.isValidTable(table)) {
          return {
              isValid: false,
              msg: gs.getMessage("Selected table was not found"),
              dropdownOptions: []
          };
      }

      if (global.JSUtil.nil(fields)) {
          return {
              isValid: false,
              msg: gs.getMessage("Field config is missing"),
              dropdownOptions: []
          };
      }

      const recordsGr = new GlideRecordSecure(table);
      const displayField = recordsGr.getDisplayName();
      const query = recordsGr.addQuery(fields[0], 'CONTAINS', pattern);
      for (let i = 1; i < fields.length; i++) {
          query.addOrCondition(fields[i], 'CONTAINS', pattern);
      }
      if (filterCondition)
          recordsGr.addEncodedQuery(filterCondition);
      if (this.recordSearchLimit)
          recordsGr.setLimit(this.recordSearchLimit);
      recordsGr.query();

      const dropdownOptions = [];
      while (recordsGr.next()) {
          let number = '';
          if (recordsGr.isValidField('number'))
              number = recordsGr.getValue('number');
          let description = '';
          if (displayField !== 'number') {
              description = recordsGr.getDisplayValue();
          }
          dropdownOptions.push({
              id: recordsGr.getUniqueValue(),
              desc: description,
              number,
              table
          });
      }
      return {
          isValid: true,
          dropdownOptions
      };

  },

  type: 'DocSlashAPI'
};

Sys ID

4327bd0b53222910409bddeeff7b129b

Offical Documentation

Official Docs: