Name

global.RankByVisualSortHelper

Description

No description available

Script

var RankByVisualSortHelper = Class.create();
RankByVisualSortHelper.prototype = {
  initialize: function() {
      this.dataTypes = ["integer", "float", "numeric", "decimal", "long", "longint", "currency"];
  },

  getColumnForJsonColumn: function (entityClassName, jsonColumn, context) {
      PPMDebug.log("Into RankByVisualSortHelper.getColumnsForJsonColumn -> " + entityClassName + " | " + jsonColumn);
      var arrayUtil = new ArrayUtil();
      var actualColumns = { tables: [], display_columns: [], columns: [], advanced_columns: [] };
      var console = new GlideRecord("pm_console");
      console.addQuery("context", context);
      console.addQuery('table', entityClassName)
      console.query();
      if(console.next()) { 
          PPMDebug.log("console -> " + console.getValue("sys_id"));
          var consoleTable = new GlideRecord("pm_console_table");
          consoleTable.addQuery("pm_console", console.getValue("sys_id"));
          consoleTable.query();
          PPMDebug.log("consoleTable -> " + consoleTable.getRowCount() + " | " + consoleTable.getEncodedQuery());
          while(consoleTable.next()) {
               actualColumns.tables.push({sys_id: consoleTable.getValue("sys_id"), 
                                          table: consoleTable.getValue("table"), 
                                          mapping_column: consoleTable.getValue("mapping_column") 
                                      });
          }
          var displayColumn = new GlideRecord("pm_console_display_column");
          displayColumn.addQuery("json_column", jsonColumn);
          displayColumn.addQuery("pm_console", console.getValue("sys_id"));
          displayColumn.query();
          PPMDebug.log("displayColumn -> " + displayColumn.getRowCount() + " | " + displayColumn.getEncodedQuery());
          while(displayColumn.next()) {
              actualColumns.display_columns.push({sys_id: displayColumn.getValue("sys_id"), 
                                                  json_column: displayColumn.getValue("json_column"),
                                                  type: displayColumn.getValue("type")
                                              });
              var tableColumn = new GlideRecord("pm_console_column");
              tableColumn.addQuery("pm_console_display_column", displayColumn.getValue("sys_id"));
              tableColumn.query();
              PPMDebug.log("tableColumn -> " + tableColumn.getRowCount() + " | " + tableColumn.getEncodedQuery());
              while(tableColumn.next()) {
                  actualColumns.columns.push({sys_id: tableColumn.getValue("sys_id"), 
                                              table: tableColumn.getValue("table"),
                                              column: tableColumn.getValue("column"),
                                              advanced: tableColumn.getValue("advanced"),
                                              pm_console_display_column: tableColumn.getValue("pm_console_display_column"),
                                              pm_console_table: tableColumn.getValue("pm_console_table")
                                          });
                  var advanced = tableColumn.getValue("advanced");
                  if(JSUtil.notNil(advanced) && (advanced == 1  || advanced == "true")) {
                      PPMDebug.log("Column is a Advanced column");
                      var advancedColumn = new GlideRecord("pm_console_column_advanced");
                      advancedColumn.addQuery("pm_console_column", tableColumn.getValue("sys_id"));
                      advancedColumn.query();
                      if(advancedColumn.next()) {
                         actualColumns.advanced_columns.push({sys_id: advancedColumn.getValue("sys_id"), 
                                              reference_table: advancedColumn.getValue("reference_table"),
                                              reference_column: advancedColumn.getValue("reference_column"),
                                              table: advancedColumn.getValue("table"),
                                              column: advancedColumn.getValue("column"),
                                              value_column: advancedColumn.getValue("value_column"),
                                              pm_console_column: advancedColumn.getValue("pm_console_column")
                                          });
                      }
                  }
              }
          }
          PPMDebug.log("Actual Columns  -> " + (new JSON()).encode(actualColumns));
      }
      return actualColumns;
  },

  canRank: function (entityClassName, jsonColumn, context) {
      PPMDebug.log("Into RankByVisualSortHelper.canRank -> " + entityClassName + " | " + jsonColumn + " | " + context);
      if(JSUtil.notNil(entityClassName) && JSUtil.notNil(jsonColumn)) {
          var actualColumns = this.getColumnForJsonColumn(entityClassName, jsonColumn, context || 'default');
          // Check if there are advanced columns, get the first element
          if(JSUtil.notNil(actualColumns)) {
              var tableName, columnName;
              if(actualColumns.advanced_columns.length > 0) {
                  tableName = actualColumns.advanced_columns[0].table;
                  columnName = actualColumns.advanced_columns[0].value_column;
              } else {
                  tableName = actualColumns.columns[0].table;
                  columnName = actualColumns.columns[0].column;
              }
              PPMDebug.log("tableName -> " + tableName + " | columnName -> " + columnName);
              if(JSUtil.notNil(tableName) && JSUtil.notNil(columnName) && columnName.indexOf(".") == -1) {
                  var tableDescriptor = new GlideTableDescriptor(tableName);
                  var elementDescriptor = tableDescriptor.getElementDescriptor(columnName);
                  var internalType = elementDescriptor.getInternalType();
                  PPMDebug.log("Column DataType -> " + internalType);
                  var arrayUtil = new ArrayUtil();
                  if(arrayUtil.contains(this.dataTypes, internalType))
                      return true;        
              }
          }
      }
      return false;
  },

  type: 'RankByVisualSortHelper'
};

Sys ID

c1513b5b9f003200598a5bb0657fcf2b

Offical Documentation

Official Docs: