You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
3.6 KiB

/*
* This file contains helper methods that could be used in the app pages
* to manipulate data returned from searches
*/
define(['/static/app/DA-ITSI-CP-windows-dashboards/js/common/contrib/underscore.js', '/static/app/DA-ITSI-CP-windows-dashboards/js/common/contrib/jquery-3.5.0.min.js'], function(_) {
var SearchDataHelpers = {
/*
* Given a map of fields to html selectors (in fieldsToElSelsMap), search fields
* returned from running a search (in searchFields), a row returned in the result
* set of a search (in searchRow) and a html renderer function (in elRenderer) that
* does specific action to convert result from the search to the html selector
* specified element, this function extracts the values for the fields from the
* row and invokes the renderer resulting in the values from a search row
* being populated to different html elements
*/
populateSearchBasedFields: function(fieldsToElSelsMap, searchFields, searchRow, elRenderer) {
_.each(searchFields, function(fieldName, index) {
var elSel = fieldsToElSelsMap[fieldName];
if (!_.isUndefined(elSel) && !_.isNull(elSel)) {
elRenderer(elSel, searchRow[index]);
}
});
},
/*
* This is a specialization of populateSearchBasedFields to specifically
* extract and display search results as sparklines in the html elements
*/
populateSearchBasedSparklineFields: function(fieldsToSparklineSelsMap, searchFields, searchRow, sparklineSettings) {
this.populateSearchBasedFields(
fieldsToSparklineSelsMap,
searchFields,
searchRow,
function(sparklineSel, sparklineData) {
$(sparklineSel).empty();
var sparks = _.isArray(sparklineData) ?
_.map(sparklineData.slice(1), function(value) {
return (value && parseFloat(value)) || 0;
}) : [];
$(sparklineSel).sparkline(
sparks,
sparklineSettings
);
}
);
},
/*
* This is a specialization of populateSearchBasedFields to specifically
* extract and display search results as texts in the html elements
*/
populateSearchBasedTextFields: function(fieldsToTextSelsMap, searchFields, searchRow) {
this.populateSearchBasedFields(
fieldsToTextSelsMap,
searchFields,
searchRow,
function(textSel, textValue) {
$(textSel).text(textValue);
}
);
},
makeDisplayNameFromResultField: function(resultFieldName) {
// Convert all _ in field name to spaces
// Capitalize first character of each word part
var nameParts = resultFieldName.replace('_', ' ').split(' ');
var displayNameParts = _.map(nameParts, function(namePart) {
if (/^[a-z]/.test(namePart)) {
var firstChar = namePart[0].toUpperCase();
return firstChar + namePart.substr(1);
} else {
return namePart;
}
});
return displayNameParts.join(' ');
}
}
return SearchDataHelpers;
});