(function () { "use strict"; angular.module("EnrApp") .filter("candidateFilter", ["primaryService", function (primaryService) { return function (array, countyName, officeName) { try{ var returnValue = []; var regionsArray = []; var officeArray = array.slice(); var racesJson = []; var isPrimary = primaryService.getIsPrimary(); var selectedPrimaryParty = primaryService.getSelectedParty(); for (var i = 0; i < officeArray.length; i++) { if (officeArray[i].OfficeCategory.OFFICE_CATEGORY_NAME == officeName) { var regionArr = officeArray[i].OfficeCategory.Regions.Region; if (regionArr != undefined) { if (regionArr.length == undefined) regionArr = [regionArr]; regionsArray = regionArr; for (var i = 0; i < regionsArray.length; i++) { if (regionsArray[i].MAP_JURISDICTION_NAME == countyName) { var region = regionsArray[i]; var racesJson = region.Races.Race; if (racesJson.length == undefined) { racesJson = [region.Races.Race]; } for (var i = 0; i < racesJson.length; i++) { var candidateJson = racesJson[i].Candidates.Candidate; if (candidateJson.length == undefined) { candidateJson = [candidateJson]; } var totalVotes = 0; for (var j = 0; j < candidateJson.length; j++) { // In primary mode we only include votes if the candidate party matches the selected party. var includeVotes = !isPrimary || candidateJson[j].PARTY_ABBREV === selectedPrimaryParty; if (includeVotes) totalVotes += candidateJson[j].TOTAL_VOTES; } for (var k = 0; k < candidateJson.length; k++) { var candidate = candidateJson[k]; if (!isPrimary || candidateJson[k].PARTY_ABBREV === selectedPrimaryParty) { returnValue.push({ name: candidate.NAME_ON_BALLOT, partyLetter: candidate.PARTY_ABBREV, partyColor: candidate.DISPLAY_COLOR, votes: candidate.TOTAL_VOTES, percentage: totalVotes !== 0 ? candidate.TOTAL_VOTES / totalVotes : 0 }); } } break; } break; } } break; } } } return returnValue.slice(); } catch (ex) { console.log(ex); } }; }]); }());