in index.js [49:146]
function createJobs(responseData) {
if (!responseData) return;
//Older versions of IE might not interpret the data as a JSON object
if(typeof responseData === "string") {
responseData = JSON.parse(responseData);
}
var content = "";
var groupedPostings = [];
for(var i = 0; i < responseData.length; i++) {
if (!responseData[i]) continue;
if (!responseData[i].postings) continue;
if (!(responseData[i].postings.length > 0)) continue;
var title = sanitizeForHTML(responseData[i].title || 'Uncategorized');
var titlesanitizeAttribute = sanitizeAttribute(title);
for (j = 0; j < responseData[i].postings.length; j ++) {
var posting = responseData[i].postings[j];
var team = (posting.categories.team || 'Uncategorized' );
var teamsanitizeAttribute = sanitizeAttribute(team);
var department = (posting.categories.department || 'Uncategorized' );
var departmentsanitizeAttribute = sanitizeAttribute(department);
var link = posting.hostedUrl+leverParameter;
function findDepartment(element) {
return element.department == departmentsanitizeAttribute;
}
if (groupedPostings.findIndex(findDepartment) === -1) {
newDepartmentToAdd = {department : departmentsanitizeAttribute, departmentTitle: department, teams : [ {team: teamsanitizeAttribute, teamTitle: team, postings : []} ] };
groupedPostings.push(newDepartmentToAdd);
}
else {
departmentIndex = groupedPostings.findIndex(findDepartment);
newTeamToAdd = {team: teamsanitizeAttribute, teamTitle: team, postings : []};
if (groupedPostings[departmentIndex].teams.map(function(o) { return o.team; }).indexOf(teamsanitizeAttribute) === -1) {
groupedPostings[departmentIndex].teams.push(newTeamToAdd);
}
}
function findTeam(element) {
return element.team == teamsanitizeAttribute;
}
departmentIndex = groupedPostings.findIndex(findDepartment);
teamIndex = groupedPostings[departmentIndex].teams.findIndex(findTeam);
groupedPostings[departmentIndex].teams[teamIndex].postings.push(posting);
}
}
// Sort by department
groupedPostings.sort(function(a, b) {
var departmentA=a.department.toLowerCase(), departmentB=b.department.toLowerCase()
if (departmentA < departmentB)
return -1
if (departmentA > departmentB)
return 1
return 0
});
for(var i = 0; i < groupedPostings.length; i++) {
// If there are no departments used, there is only one "unspecified" department, and we don't have to render that.
if (groupedPostings.length >= 2) {
var haveDepartments = true;
};
if (haveDepartments) {
content += '<section class="lever-department" data-department="' + groupedPostings[i].departmentTitle + '"><h3 class="lever-department-title">' + sanitizeForHTML(groupedPostings[i].departmentTitle) + '</h3>';
};
for (j = 0; j < groupedPostings[i].teams.length; j ++) {
content += '<ul class="lever-team" data-team="' + groupedPostings[i].teams[j].teamTitle + '"><li><h4 class="lever-team-title">' + sanitizeForHTML(groupedPostings[i].teams[j].teamTitle) + '</h4><ul>';
for (var k = 0; k < groupedPostings[i].teams[j].postings.length; k ++) {
content += '<li class="lever-job" data-team="' + groupedPostings[i].teams[j].postings[k].categories.team + '" data-location="' + groupedPostings[i].teams[j].postings[k].categories.location + '"data-work-type="' + groupedPostings[i].teams[j].postings[k].categories.commitment + '">' +
'<a class="lever-job-title" href="' + groupedPostings[i].teams[j].postings[k].hostedUrl + '"">' + sanitizeForHTML(groupedPostings[i].teams[j].postings[k].text) + '</a><span class="lever-job-tag">' + (sanitizeForHTML(groupedPostings[i].teams[j].postings[k].categories.location) || '') + '</span></li>';
}
content += '</ul></li></ul>';
}
if (haveDepartments) {
content += '</section>';
};
}
content += '</ul>';
jobsContainer.innerHTML = content;
}