Name
sn_grc.GRC_SupportData_DAO
Description
Example to invoke <g macro_invoke macro= sn_grc_supportingData_tablularView ref_table= $ jvar_ref_table fields= $ jvar_fields support_data_table= sn_grc_indicator_supporting_data field= document field_name_field= field_name field_name_value = value query_string= task=$ current.sys_id page_size= 20 />
Script
var GRC_SupportData_DAO = Class.create();
GRC_SupportData_DAO.prototype = {
initialize: function() {},
/*
Returns Array of distinct values for a 'field' of relevant rows according to 'queryString' from 'table'.
*/
getFieldDistinctValuesArray: function(table, field, queryString, fieldNameField, fieldValueField, orderByFieldName, BoolOrderByDesc) {
var records = {};
var count = new GlideRecord(table);
if (!gs.nil(orderByFieldName)) {
queryString += '^' + fieldNameField + '=' + orderByFieldName;
BoolOrderByDesc ? count.orderByDesc(fieldValueField) : count.orderBy(fieldValueField);
}
count.addEncodedQuery(queryString);
count.query();
while (count.next() && count.canRead()) {
records[count[field] + ''] = count[field] + '';
}
return Object.keys(records);
},
/*
Filter Records based on Search Query Array
Returns Array of GroupBy Field : field
*/
filterRecordSysIds: function(table, field, queryString, fieldNameField, searchQueryArray) {
var records = [];
var recordsStr = '';
var query = '';
var count;
for (var i = 0; i < searchQueryArray.length; i++) {
count = new GlideRecord(table);
recordsStr = records.join(",");
records = [];
query = '';
query = queryString + '^' + searchQueryArray[i];
if (!gs.nil(recordsStr)) {
query += '^' + field + 'IN' + recordsStr;
recordsStr = '';
}
count.addEncodedQuery(query);
count.query();
while (count.next() && count.canRead()) {
records[count[field] + ''] = count[field] + '';
}
}
return Object.keys(records);
},
/*
Sorts array based on given orderByFieldName
*/
sortRecords: function(recordSysIds, table, field, queryString, fieldNameField, fieldValueField, orderByFieldName, BoolOrderByDesc) {
var records = {};
var recordsStr = recordSysIds.join(",");
var query = '';
var count;
count = new GlideRecord(table);
records = [];
if (!gs.nil(orderByFieldName)) {
queryString += '^' + fieldNameField + '=' + orderByFieldName;
BoolOrderByDesc ? count.orderByDesc(fieldValueField) : count.orderBy(fieldValueField);
}
if (!gs.nil(recordsStr)) {
queryString += '^' + field + 'IN' + recordsStr;
}
count.addEncodedQuery(queryString);
count.query();
while (count.next() && count.canRead()) {
records[count[field] + '']= count[field] + '';
}
return Object.keys(records);
},
/*
Returns Total No Of Rows
*/
getTotalNumberOfRows: function(table, field, firstColumn, queryString, searchQueryArray, fieldNameField) {
var total = 0;
if (searchQueryArray.length > 0) {
var arr = this.filterRecordSysIds(table, field, queryString, fieldNameField, searchQueryArray);
total = arr.length + '';
} else {
var count = new GlideRecordSecure(table);
queryString += '^' + fieldNameField + '=' + firstColumn;
count.addEncodedQuery(queryString);
count.query();
while (count.next()) {
total++;
}
}
return total + '';
},
/*
Returns Json Object containg all field value pairs for single row
*/
getRowJsonString: function(table, queryString, field, value, referenceTable, fieldNameField, fieldValueField) {
var row = {};
var supportDataGR = new GlideRecordSecure(table);
supportDataGR.addEncodedQuery(queryString + '^' + field + '=' + value);
supportDataGR.query();
while (supportDataGR.next()) {
row[supportDataGR[fieldNameField].toString()] = supportDataGR[fieldValueField].toString();
}
if (!this.isEmpty(row)) {
row["sys_id"] = (this.liveRecordExists(referenceTable, value) == true) ? value.toString() : '';
return JSON.stringify(row);
} else
return '';
},
liveRecordExists: function(referenceTable, sysId) {
var record = new GlideRecordSecure(referenceTable);
if (record.get(sysId + ''))
return true;
return false;
},
/*
Returns Array of field objects containing field_name : Field_label pairs.
*/
getFieldsArray: function(table, fields) {
var fieldObj = {};
var list = [];
var fieldList = fields.split(",");
var field = new GlideRecordSecure(table);
field.setLimit(1);
field.query();
if (field.next()) {
for (var j = 0; j != fieldList.length; j++) {
var fieldElement = field.getElement(fieldList[j]);
if (!(!fieldElement && fieldElement!='')) {
fieldObj.name = fieldList[j];
fieldObj.label = (!gs.nil(field.getElement(fieldList[j]).getLabel())) ? field.getElement(fieldList[j]).getLabel() : fieldList[j];
list.push(JSON.stringify(fieldObj));
}
}
}
return list;
},
isEmpty: function(obj) {
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
return false;
}
}
return JSON.stringify(obj) === JSON.stringify({});
},
type: 'GRC_SupportData_DAO'
};
Sys ID
4050b89adb1f8c10fded8d7e139619c9