(function () { "use strict"; angular.module("enrDetailsPaneModule") .directive("detailsOfficeDescription", [function () { return { templateUrl: "Scripts/EnrAngular/EnrDetailsPane/detailsOfficeDescription.html", scope: { }, controller: "detailsOfficeDescriptionController", restrict: "E" }; }]) .controller("detailsOfficeDescriptionController", ["$scope","$rootScope", "detailsViewModeManager", "enrModeManager", "mapSelectedRegion", "detailsData", "participationCalculator", function ($scope,$rootScope, detailsViewModeManager, enrModeManager, mapSelectedRegion, detailsData, participationCalculator) { // Visibility Handling var determineVisibility = function () { var isVisible = enrModeManager.isOfficeMode() && detailsViewModeManager.isSummaryMode() && (!mapSelectedRegion.isAnyRegionSelected() || participationCalculator.isOfficesRegionParticipating(detailsData.getData(), mapSelectedRegion.getSelectedRegionProperties())); return isVisible ? "" : "hidden"; }; $scope.componentVisible = determineVisibility(); $scope.$on(detailsViewModeManager.modeChangeEventName, function () { $scope.componentVisible = determineVisibility(); }); $scope.$on(enrModeManager.modeChangeEventName, function () { $scope.componentVisible = determineVisibility(); }); $scope.$on(mapSelectedRegion.regionChangeEventName, function () { $scope.componentVisible = determineVisibility(); if ($rootScope.OFFICE_CATEGORY_TYPE == "Local" && mapSelectedRegion.isAnyRegionSelected() && participationCalculator.isOfficesRegionParticipating(detailsData.getData(), mapSelectedRegion.getSelectedRegionProperties())) { $scope.componentVisible = ""; } }); $scope.$on(detailsData.dataChangedEventName, function () { $scope.componentVisible = determineVisibility(); refreshDataBindings(); }); // Data Population var refreshDataBindings = function () { if (enrModeManager.isOfficeMode() && detailsData.isDataPresent()) { $scope.officeTitle = detailsData.getData().OfficeCategory.OFFICE_CATEGORY_NAME; $scope.officeDescription = detailsData.getData().OfficeCategory.OFFICE_CATEGORY_DESCRIPTION; } } }]); }());