Name
sn_oe_sfs.CIPropsUtil
Description
No description available
Script
var CIPropsUtil = Class.create();
CIPropsUtil.prototype = {
initialize: function() {
this.ciPagePropsMetadata = new sn_oe_sfs.CIListRecordPropsMetadata();
this.acePagePropsUtil = new sn_oe_sfs.CIListAndRecordPagePropsUtil();
},
_getProps: function(table) {
var response = {
'entry': '',
'supported': false,
'heading': '',
'title': '',
'subheading': '',
'filter': '',
'view': ''
};
var _self = this;
//check whether the table is mapped
if (this.ciPagePropsMetadata.TABLE_METADATA[table]) {
var _tableMetaData = _self.ciPagePropsMetadata.TABLE_METADATA[table];
response.supported = true;
response.entry = _self._getEntryPage(_tableMetaData.entry);
response.heading = _tableMetaData.heading;
response.title = _tableMetaData.title;
response.subheading = _tableMetaData.subHeading;
response.list_filter = _tableMetaData.list_filter;
response.list_view = _tableMetaData.list_view;
response.form_filter = _tableMetaData.form_filter;
response.from_view = _tableMetaData.from_view;
response.related_list_table = _tableMetaData.related_list_table;
response.custom_form = _tableMetaData.custom_form;
response.custom_list = _tableMetaData.custom_list;
} else {
response.supported = false;
response.entry = _self._getEntryPage();
response.heading = _self.acePagePropsUtil._getTableName(table);
response.title = response.heading;
response.subheading = '';
response.list_filter = '';
response.list_view = '';
response.form_filter = '';
response.from_view = '';
response.related_list_table = '';
response.custom_form = '';
response.custom_list = '';
}
return response;
},
_getEntryPage: function(route) {
var entries = this.ciPagePropsMetadata.CRUMBS;
var defaultLandingRoute = this.ciPagePropsMetadata.DEFAULT_LANDING_ROUTE;
if (route && entries[route]) return entries[route];
return entries[defaultLandingRoute];
},
_getRelatedListBreadcrumbPath: function(type, table, sysId) {
var _self = this;
switch (type) {
case 'list':
return _self.ciPagePropsMetadata.CUSTOM_TAG + '#' + _self.ciPagePropsMetadata.DEFAULT_LIST + '#' + table;
case 'form':
var _formRoute = _self.ciPagePropsMetadata.TABLE_METADATA[table] && _self.ciPagePropsMetadata.TABLE_METADATA[table].custom_form;
return _self.ciPagePropsMetadata.CUSTOM_TAG + '#' + (_formRoute || _self.ciPagePropsMetadata.DEFAULT_FORM) + '#' + (_formRoute ? '' : table) + '#' + sysId;
default:
return '';
}
},
_generateBreadcrumbs: function(props, table, sysId, query, rlt) {
var breadcrumbs = [],
_self = this;
var title = props.title;
if (props.related_list_table) {
var splittedRlt = props.related_list_table.split('.');
var rltField = splittedRlt[0];
var rltTable = splittedRlt[1];
var rltRecord = _self.acePagePropsUtil._getRelatedListParentTableRecordSysId(table, sysId, query, rltField);
breadcrumbs = _self._generateBreadcrumbs(_self._getProps(rltTable), rltTable, rltRecord, null, true).breadcrumbs;
} else {
breadcrumbs.push(props.entry);
// Set the list view page of the table only for supported fields
if (props.supported) {
breadcrumbs.push({
page: rlt ? _self._getRelatedListBreadcrumbPath('list', table, sysId) : (props.custom_list || _self.ciPagePropsMetadata.DEFAULT_LIST),
label: title,
filter: props.list_filter,
view: props.list_view
});
}
}
// Set the table's record form page (iff sysId exists)
if (sysId) {
title = (_self.acePagePropsUtil._isNewRecord(sysId)) ? _self.ciPagePropsMetadata.DEFAULT_NEW_RECORD_LABEL : (_self.acePagePropsUtil._getRecordDisplayValue(table, sysId) || _self.ciPagePropsMetadata.DEFAULT_EMPTY_RECORD_LABEL);
breadcrumbs.push({
page: rlt ? _self._getRelatedListBreadcrumbPath('form', table, sysId) : _self.ciPagePropsMetadata.DEFAULT_FORM,
label: title,
filter: props.form_filter,
view: props.form_view
});
}
return {
'breadcrumbs': breadcrumbs,
'title': title
};
},
getBreadcrumbs: function(table, sysId, query, view) {
var _props = this._getProps(table);
return this._generateBreadcrumbs(_props, table, sysId, query, false).breadcrumbs;
},
_fetchDefaultValueForScript: function(table, field) {
var dictionaryGr = new GlideRecord('sys_dictionary');
dictionaryGr.addQuery('name', table.toString());
dictionaryGr.addQuery('element', field);
dictionaryGr.query();
if (dictionaryGr.next()) return dictionaryGr.getValue('default_value');
return '';
},
_fetchValuesForField: function(gr, fieldMetaData, fieldType, isNewRecord) {
var field = fieldMetaData.field_name,
_self = this;
switch (fieldType) {
case 'script':
return isNewRecord ? _self._fetchDefaultValueForScript(gr.getTableName(), fieldMetaData.field_name) : gr.getValue(field);
case 'slushbucket':
//Input: Comma separated <sys_id>,
//Output: [{id: <sys_id>, label: <display_value>}, ...]
if (isNewRecord) return [];
var userData = gr.getValue(field),
userDataFormatted = [];
if (!userData) return null;
userData = userData.split(',');
fieldMetaData.field_data_source.forEach(function(group) {
if (userData.indexOf(group.id) != -1) userDataFormatted.push(group);
});
return userDataFormatted;
}
return null;
},
/*
* Get all configured fields which are not supported by UIB Record Page Tabs/Form component
* params:
* table {string}: Name of the table
* recordSysId {string} SysId of the record
* preFetchUserData {boolean} If true, the field is pre-populated with the field data. The data is available under 'field_data' key
*/
getFields: function(table, recordSysId, preFetchUserData) {
try {
if (!table || !recordSysId) return null;
var allFields = this.ciPagePropsMetadata.SUPPORTED_CUSTOM_FIELDS[table];
if (!preFetchUserData || !allFields) return allFields;
var tableGr = new GlideRecord(table);
if (!this.acePagePropsUtil._isNewRecord(recordSysId) && (!tableGr.get(recordSysId) || !tableGr.canRead())) return allFields;
for (var fieldType in allFields) {
allFields[fieldType].field_data = this._fetchValuesForField(tableGr, allFields[fieldType], fieldType, this.acePagePropsUtil._isNewRecord(recordSysId));
}
return allFields;
} catch (e) {
return {};
}
},
type: 'CIPropsUtil'
};
Sys ID
6bf8c900eb124110da1861c59c52283c