(function () { "use strict"; angular.module("enrDetailsPaneModule") .directive("detailsContactInfo", [function () { function link(scope) { } return { templateUrl: "Scripts/EnrAngular/EnrDetailsPane/detailsContactInfo.html", controller: "detailsContactInfoController", scope: {}, link: link, restrict: "E" }; }]) .controller("detailsContactInfoController", ["$scope", "$rootScope", "enrModeManager", "detailsViewModeManager", "detailsData", "detailsAddressInjector", "mapSelectedRegion", "officeJsonRegionFilter", "primaryService", "participationCalculator", function ($scope, $rootScope, enrModeManager, detailsViewModeManager, detailsData, detailsAddressInjector, mapSelectedRegion, officeJsonRegionFilter, primaryService, participationCalculator) { var navBarClass = "navbar navbar-default"; $scope.isShowRef = false; $scope.isGeneralRef = false; $scope.titleVisibility = ""; $scope.noResultsForReferendums = "hidden"; $scope.numberOfSeats = ''; $scope.isDisplayDefaultCountyMessage = false; // Details View Mode (Summary, County, etc...) $scope.navItemClicked = function (index) { primaryService.setSelectedNavtab(index); var newMode = index === 0 ? detailsViewModeManager.modeEnum.summary : detailsViewModeManager.modeEnum.county; if (newMode == 2) { localStorage.removeItem("CountyName"); } detailsViewModeManager.setCurMode(newMode); hideTitle(newMode); $scope.addressVisibility = "hidden"; if (index == 1 && $rootScope.defaultOfficeSelection) { $scope.isDisplayDefaultCountyMessage = true; } else { $scope.isDisplayDefaultCountyMessage = false; } } $scope.$on(detailsViewModeManager.modeChangeEventName, function (event, newMode) { $scope.summaryItemClass = "nav"; $scope.countyItemClass = "nav"; if (((localStorage.getItem("SelectedNavtab") != "null" && localStorage.getItem("SelectedNavtab") != null && localStorage.getItem("SelectedNavtab") != "undefined")) && ((localStorage.getItem("SelectedNavtab").length > 0))) { newMode = localStorage.getItem("SelectedNavtab") === 0 ? detailsViewModeManager.modeEnum.summary : detailsViewModeManager.modeEnum.county; } if (newMode === detailsViewModeManager.modeEnum.summary) { $scope.summaryItemClass += " active"; angular.element(document.querySelector("#candidateDetailsScroll")).attr("tabindex", "0"); } else { $scope.countyItemClass += " active"; angular.element(document.querySelector("#candidateDetailsScroll")).removeAttr("tabindex"); } hideTitle(newMode); }); $scope.$on("SLICK_OFFICE_SELECTION", function () { detailsViewModeManager.setCurMode(detailsViewModeManager.modeEnum.summary); hideTitle(detailsViewModeManager.modeEnum.summary); }); $scope.$on(enrModeManager.modeChangeEventName, function (event, newMode) { if (newMode === enrModeManager.modeEnum.offices) { if ($rootScope.OFFICE_CATEGORY_TYPE == "Local") { detailsViewModeManager.setCurMode(detailsViewModeManager.modeEnum.county); } else { detailsViewModeManager.setCurMode(detailsViewModeManager.modeEnum.summary); } $scope.isShowRef = false; hideTitle(newMode); } }); $scope.$on("SELECTED_PARTY_CHANGED", function () { if ($rootScope.OFFICE_CATEGORY_TYPE == "Local") { $scope.countyItemClass += " active"; detailsViewModeManager.setCurMode(detailsViewModeManager.modeEnum.county); } else { if ($rootScope.defaultOfficeSelection) { $scope.countyItemClass += " active"; detailsViewModeManager.setCurMode(detailsViewModeManager.modeEnum.county); } else { detailsViewModeManager.setCurMode(detailsViewModeManager.modeEnum.summary); hideTitle(detailsViewModeManager.modeEnum.summary); } } }); $scope.$on("OFFICE_CHANGED", function () { if ($rootScope.OFFICE_CATEGORY_TYPE == "Local") { $scope.countyItemClass += " active"; detailsViewModeManager.setCurMode(detailsViewModeManager.modeEnum.county); } else if (((localStorage.getItem("SelectedNavtab") != "null" && localStorage.getItem("SelectedNavtab") != null && localStorage.getItem("SelectedNavtab") != "undefined")) && ((localStorage.getItem("SelectedNavtab").length > 0))) { var newMode = localStorage.getItem("SelectedNavtab") === 0 ? detailsViewModeManager.modeEnum.summary : detailsViewModeManager.modeEnum.county; detailsViewModeManager.setCurMode(newMode); } else { if ($rootScope.defaultOfficeSelection) { $scope.countyItemClass += " active"; detailsViewModeManager.setCurMode(detailsViewModeManager.modeEnum.county); } else detailsViewModeManager.setCurMode(detailsViewModeManager.modeEnum.summary); } if ($rootScope.defaultOfficeSelection) { $scope.isDisplayDefaultCountyMessage = true; } else { $scope.isDisplayDefaultCountyMessage = false; } }); detailsViewModeManager.setCurMode(detailsViewModeManager.modeEnum.county); function hideTitle(newMode) { if ($rootScope.defaultOfficeSelection || typeof ($rootScope.defaultOfficeSelection) == "undefined") { $scope.isDisplayDefaultCountyMessage = true; } else if (!$rootScope.defaultOfficeSelection) { $scope.isDisplayDefaultCountyMessage = false; } if (enrModeManager.isOfficeMode() && newMode == detailsViewModeManager.modeEnum.county) { $scope.titleVisibility = "hidden"; $scope.showNoteWhenLocal = false; $scope.numberOfSeats = ''; } else { $scope.titleVisibility = ""; } if (enrModeManager.isOfficeMode()) { $scope.noResultsForReferendums = "hidden"; if ($scope.isDisplayDefaultCountyMessage) { $scope.titleVisibility = "hidden"; $scope.showNoteWhenLocal = false; } } } // Data Population var refreshDataBindingsOfficeMode = function () { $scope.contactTitle = detailsData.getData().OfficeCategory.OFFICE_CATEGORY_NAME; if (mapSelectedRegion.isAnyRegionSelected()) { // Get County/District name from selected region var regionProps = mapSelectedRegion.getSelectedRegionProperties(); $scope.contactRegion = regionProps.AREALABEL; $scope.navBarClass = navBarClass + " hidden"; var regionData = officeJsonRegionFilter.getRegionNodes(detailsData.getData(), mapSelectedRegion.getSelectedRegionProperties())[0]; if (regionData !== undefined && regionData !== null) { var isCounty = isNaN(regionData.MAP_JURISDICTION_NAME); if (isCounty) { //Display Number of seats var numberOfSeats = 0; if (typeof (regionData.RegionSummary) !== "undefined" && typeof (regionData.RegionSummary.Race) !== "undefined" && typeof (regionData.RegionSummary.Race.NumofSeats) !== "undefined") numberOfSeats = regionData.RegionSummary.Race.NumofSeats; if (parseInt(numberOfSeats) > 1) { $scope.numberOfSeats = '(' + numberOfSeats + ' to be elected)'; } else { $scope.numberOfSeats = ''; } } var addressInfoPresent = regionData.Office_Info !== undefined && regionData.Office_Info !== null; if (addressInfoPresent) { $scope.addressVisibility = ""; detailsAddressInjector.injectAddressInfo($scope, regionData.Office_Info); } else { $scope.addressVisibility = "hidden"; } } else { $scope.addressVisibility = "hidden"; $scope.numberOfSeats = ''; } } else { // No region selected $scope.navBarClass = navBarClass; $scope.contactRegion = "INDIANA STATE"; $scope.addressVisibility = "hidden"; $scope.numberOfSeats = ''; } if ($rootScope.defaultOfficeSelection && enrModeManager.isOfficeMode()) { $scope.isDisplayDefaultCountyMessage = true; } else { $scope.isDisplayDefaultCountyMessage = false; } } var determineNoResultsVisibilityForReferendums = function () { var isVisible = false; if (enrModeManager.isReferendumsMode()) isVisible = !participationCalculator.isReferendumsRegionParticipatingFromDetailedJson(detailsData.getData()); else if (enrModeManager.isOfficeMode()) isVisible = false; return isVisible ? "" : "hidden"; }; var refreshDataBindingsReferendumsMode = function () { $scope.showNoteWhenLocal = false; $scope.contactTitle = "Referendums"; $scope.navBarClass = navBarClass + " hidden"; $scope.isShowRef = false; $scope.numberOfSeats = ''; $scope.noResultsForReferendums = "hidden"; $scope.isDisplayDefaultCountyMessage = false; if (mapSelectedRegion.isAnyRegionSelected()) { if (detailsData.isDataPresent()) { if (detailsData.getData().Region) { $scope.contactRegion = detailsData.getData().Region.JURISDICTION_NAME.toUpperCase() + " COUNTY"; $scope.addressVisibility = ""; detailsAddressInjector.injectAddressInfo($scope, detailsData.getData().Region.Office_Info); } } if (primaryService.getIsPrimary()) { $scope.noResultsForReferendums = determineNoResultsVisibilityForReferendums(); } } else { if (primaryService.getIsPrimary()) { $scope.contactRegion = "Please select a county to view results of any local public question."; //"Select a County."; $scope.addressVisibility = "hidden"; } else { $scope.isGeneralRef = false; if (primaryService.isStateConReferendumExist()) { $scope.contactRegion = ""; $scope.addressVisibility = "hidden"; $scope.isShowRef = true; $scope.referendum = primaryService.getStateConReferendum(); } else { $scope.isGeneralRef = true; $scope.contactRegion = "There is no Statewide Constitutional Amendment in this election. Please select a county."; $scope.addressVisibility = "hidden"; } } } } var refreshDataBindings = function () { if (enrModeManager.isOfficeMode()) refreshDataBindingsOfficeMode(); else if (enrModeManager.isReferendumsMode()) refreshDataBindingsReferendumsMode(); } $scope.$on(mapSelectedRegion.regionChangeEventName, function () { $scope.IFNotLocal = $rootScope.OFFICE_CATEGORY_TYPE != "Local"; $scope.showNoteWhenLocal = !mapSelectedRegion.isAnyRegionSelected() && $rootScope.OFFICE_CATEGORY_TYPE == "Local"; if ($rootScope.defaultOfficeSelection) { $scope.showNoteWhenLocal = false; } refreshDataBindings(); if (enrModeManager.isOfficeMode()) { $scope.titleVisibility = ""; if ($scope.isDisplayDefaultCountyMessage) { $scope.titleVisibility = "hidden"; $scope.showNoteWhenLocal = false; } } else if (enrModeManager.isReferendumsMode()) { $scope.titleVisibility = ""; } }); $scope.$on(detailsData.dataChangedEventName, function () { $scope.IFNotLocal = $rootScope.OFFICE_CATEGORY_TYPE != "Local"; refreshDataBindings(); }); $scope.$on("STATE_CON_REFERENDUM", function () { refreshDataBindingsReferendumsMode(); }); }]); }());