Name

sn_table_builder.TBTableStructureAPI

Description

The table structure response needed for table builder

Script

var TBTableStructureAPI = Class.create();
TBTableStructureAPI.prototype = {
  /**
   * options - { transactionScope }
   */
  initialize: function(sysId, perspective, options) {
      this.sysId = sysId;
      this.perspective = perspective;
      this.tbObj = new TableDBObject(sysId);
      this.table = this.tbObj.getName();
      this.options = options;
  },

  build: function() {
      var result = this._validate();

      if (!result.isValid)
          return TBUtil.error(result);

      switch (this.perspective) {
          case TBConstants.TB_PERSPECTIVES.VIEW_FIELD_ROW:
              return this._fieldRowPerspective();
          default:
              return {};
      }
  },

  _fieldRowPerspective: function() {
      this.prefManager = new PreferenceManager(TBConstants.SYS_CLASS_DICTIONARY);
      var tableMetadata = this.tbObj.tableMetadata(this.options.transactionScope);
      var columns = new TableColumns(
          TBConstants.SYS_CLASS_DICTIONARY,
          TBConstants.fieldRowListView
      ).getColumnProps();
      var pref = new PreferenceManager();
      var orderByColumn = this._getSortColumn();
      var orderByIsDescending = this._isSortOrderDescending();
      var rowCount = this._getRowCount();
      var choiceTypes = TBUtil.getChoiceTypes();

      return {
          tableMetadata: tableMetadata,
          columns: columns,
          preferenceData: {
              showWelcomeScreen: !JSON.parse(pref.getWelcomeScreenPreference()),
              showDataTabInfoPopup: !JSON.parse(pref.getDataTabInfoPopupPreference())
          },
          pageSize: rowCount,
          orderByColumn: orderByColumn,
          choiceTypes: choiceTypes,
          orderByIsDescending: orderByIsDescending,
      };
  },
  _getRowCount: function() {
      return JSON.parse(this.prefManager.getRowCount());
  },

  _getSortColumn: function() {
      var defaultColumnForSort = this._getDefaultColumnForSort(TBConstants.SYS_CLASS_DICTIONARY, TBConstants.fieldRowListView);
      return  this.prefManager.getSortColumn(defaultColumnForSort);
  },

  _isSortOrderDescending: function() {
      return this.prefManager.isOrderByDescending();
  },

  _getDefaultColumnForSort: function(table, view) {
      var columns = new ListViewManager(table, view).getListElements();
      return columns && columns.length ? columns[0] : null;
  },

  _validate: function() {
      var res = Validators.validatePerspective(this.perspective);
      if (!res.isValid)
          return res;

      res = Validators.validateTbObjRecord(this.tbObj);
      if (!res.isValid)
          return res;

      res = Validators.validateTbObjAccess(this.tbObj);
      if (!res.isValid)
          return res;

      return {
          isValid: true
      };
  },

  type: 'TBTableStructureAPI'
};

Sys ID

176b85de737510107419c907fbf6a7fe

Offical Documentation

Official Docs: