Name

global.VaRecordCardOutput

Description

No description available

Script

var VaRecordCardOutput = Class.create();
var FIELDS_LIMIT = 250;

VaRecordCardOutput.prototype = {

  initialize: function(columnNameLabels) {
      this.columnNameLabels = columnNameLabels;
  },

  build: function(refVar, tableName, userLanguage) {
      userLanguage = this._languageCheck(userLanguage);
      return this._buildCardData(refVar, tableName, userLanguage);
  },
  _languageCheck: function(userLanguage) {
      if (gs.nil(userLanguage)) {
          try {
              userLanguage = vaContext.getRequesterLang();
          } catch (e) {
              gs.log("vaContext is not defined, defaulting to system language");
              userLanguage = gs.getSession().getLanguage();
          }
      }
      return userLanguage;
  },
  _buildCardData: function(refVar, tableName, userLanguage) {
      var jsonStr = "{}";
      var sysId = refVar.sys_id.toString();

      if (sysId) {
          if (!refVar.isValidRecord()) {
              refVar = new GlideRecordSecure(tableName);
              refVar.get(sysId);
          }
          var display_name = refVar.getClassDisplayValue();
          var display_id = refVar.getDisplayValue();
          jsonStr = this._generateJson(tableName, display_name, display_id, refVar, sysId, userLanguage);
      } else {
          return gs.getMessage("Can't find a valid record");
      }

      var outMsg = new sn_cs.SinglePartOutMsg();
      outMsg.setCardPart('Card', jsonStr);
      return outMsg;
  },

  _generateJson: function(tableName, display_name, display_id, refVar, sysId, userLanguage) {
      var jsonObj = {};
      jsonObj['table_name'] = tableName;
      jsonObj['title'] = gs.getMessageLang(display_name, userLanguage);
      jsonObj['subtitle'] = display_id;
      jsonObj['sys_id'] = "" + sysId;
      var fields = [];
      for (var key in this.columnNameLabels) {
          var fieldEntry = {};
          var label = key;
          var rec = refVar.getElement(label);
          //column could be null if user does not have proper permissions, so skip the column if that is the case
          if (rec == null) {
              continue;
          }
          value = rec.getLabelLang(userLanguage);


          if (refVar[label].getDisplayValue() != '') {
              var displayValue = gs.getMessageLang(refVar[label].getDisplayValue(), userLanguage);

              if (displayValue.length > FIELDS_LIMIT) {
                  displayValue = displayValue.substring(0, FIELDS_LIMIT);
                  displayValue = displayValue + '...';
              }
              fieldEntry['fieldLabel'] = value;
              fieldEntry['fieldValue'] = displayValue;
              fields.push(fieldEntry);
          }
      }
      jsonObj['fields'] = fields;
      return JSON.stringify(jsonObj);
  },

  type: 'VaRecordCardOutput'
};

Sys ID

0c3ae46077502300f03e270bba106114

Offical Documentation

Official Docs: