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