in Tasks/JenkinsDownloadArtifactsV1/ArtifactDetails/JenkinsRestClient.ts [67:181]
public RegisterCustomerHandleBars(): void {
handlebars.registerHelper('caseIgnoreEqual', function(lhs, rhs, options) {
if (!lhs && !rhs) {
return options.fn(this);
}
if ((lhs && !rhs) || (!lhs && rhs)) {
return options.inverse(this);
}
if (lhs.toUpperCase() != rhs.toUpperCase()) {
return options.inverse(this);
}
else {
return options.fn(this);
}
});
handlebars.registerHelper('lookupAction', function(list, key, options) {
if (!!list) {
for (let i = 0, len = list.length; i < len; i++) {
if (list[i][key]) {
return list[i];
}
}
}
return null;
});
handlebars.registerHelper('first', function(array) {
if (!!array) {
return array[0];
}
return '';
});
handlebars.registerHelper('pluck', function(array, key) {
if (!!array) {
var result = [];
for (var i = 0; i < array.length; i++) {
var value = array[i][key];
if (!!value) {
result.push(value);
}
}
return result;
}
return [];
});
handlebars.registerHelper('containsInArray', function(array, value, options) {
if (!!array) {
for(let i = 0, len = array.length; i < len; i++) {
tl.debug(`checking ${array[i]} ${value}`);
if (!!array[i] && array[i].indexOf(value) > -1) {
return options.fn(this);
}
}
}
return options.inverse(this);
});
handlebars.registerHelper('chopTrailingSlash', function(value, options) {
var result: any = value;
if (!!value && value.substr(-1) === '/') {
result = value.substr(0, value.length - 1)
}
return result;
});
handlebars.registerHelper('selectMaxOf', function(array, property) {
function GetJsonProperty(jsonObject: any, property: string): any {
let properties = property.split('.'); // if property has dot in it, we want to access the nested property of the objects.
let element = jsonObject;
let found: boolean = false;
for(let propertyIndex = 0; propertyIndex < properties.length; propertyIndex++) {
if (!!element) {
element = element[properties[propertyIndex]];
if (!!element && propertyIndex + 1 === properties.length) {
found = true;
}
}
}
return found == true ? element: null;
}
let result = null;
if (!!array && !!property) {
let maxValue: number = 0;
result = array[0]; //consider first as result until we figure out if there are any other max available
for(let i = 0; i < array.length; i++) {
let value: number = parseInt(GetJsonProperty(array[i], property));
tl.debug(`#selectMaxOf comparing values ${maxValue} and ${value}`);
if (!isNaN(value) && value > maxValue) {
result = array[i];
maxValue = value;
}
}
tl.debug(`Found maxvalue ${maxValue}`);
}
return result;
});
}