pyc-website

main website for pyc inc.

git clone https://9o.is/git/pyc-website.git

FindAtm.js

(4741B)


      1 angular.module("FindAtm", ['Forms', 'ngAlert', 'AtmHelper', 'Variables'])
      2 
      3 .controller('NearAtmNotifyAlert', ['$scope', '$controller', function($scope, $controller) {		
      4 	$controller('AlertCtrl', {$scope: $scope});
      5 
      6 	$scope.$on('alertNearAtm', function(event, alert) {
      7 		$scope.addAlert(alert);
      8 	});
      9 }])
     10 
     11 
     12 .controller('FindAtmCtrl', ['$scope', '$timeout', '$location', '$anchorScroll', '$controller', '$rootScope', function($scope, $timeout, $location, $anchorScroll, $controller, $rootScope) {		
     13 	$controller('LoadedFormCtrl', {$scope: $scope, $controller: $controller});
     14 	$controller('AtmHelperFuncs', {$scope: $scope});
     15 	$controller('VariablesCtrl', {$scope: $scope});
     16 	
     17 	$scope.init('FindAtm', 'init', function() {
     18 		
     19 		$scope.markers = angular.copy($scope.model);
     20 		$scope.featuredMarker = $scope.markers[0];
     21 		$scope.currentMarker = $scope.featuredMarker;
     22 		$scope.model = {};
     23 		/*
     24 		$scope.map.center = {
     25 			latitude: $scope.featuredMarker.loc.latitude,
     26 			longitude: $scope.featuredMarker.loc.longitude
     27 		};
     28 		*/
     29 		setDynamicMarkers();
     30 		$scope.mapLoaded = true;
     31 	});
     32 		
     33 	$scope.nonfound = false;
     34 	
     35 	$scope.mapExpanded = window.innerWidth < $scope.screen_xs;
     36 	
     37 	$scope.expandMap = function() {
     38 		$scope.mapExpanded = true;
     39 		$location.hash("locations");
     40 		$anchorScroll();
     41 	};
     42 	
     43 	$scope.zoomIn = function() {
     44 		$scope.map.zoom = $scope.map.zoom + 1;
     45 	};
     46 	
     47 	$scope.zoomOut = function() {
     48 		$scope.map.zoom = $scope.map.zoom - 1;
     49 	};
     50 		
     51 	$scope.search = function() {
     52 		var success = function(alert) {
     53 			$scope.nonfound = false;
     54 			
     55 			if(alert.data) {
     56 				$scope.markers = angular.copy(alert.data);
     57 				$scope.currentMarker = $scope.markers[0];
     58 				$scope.map.center = angular.copy($scope.currentMarker.loc);
     59 				setDynamicMarkers();
     60 			}
     61 		};
     62 		
     63 		var failure = function(alert) {
     64 			$scope.nonfound = true;
     65 
     66 			if(alert.data.loc) {
     67 				$scope.map.center = alert.data.loc;
     68 			}
     69 		};
     70 		
     71 		$scope.submit('FindAtm', 'submit', success, failure);
     72 	};	
     73 	
     74 	$scope.markers = [];
     75 	$scope.featuredMarker = {};
     76 
     77 	var setDynamicMarkers = function() { $timeout(function() {
     78 		var dynamicMarkers = $scope.markers;
     79 
     80 		_.each(dynamicMarkers, function(marker) {
     81 			marker.closeClick = function() {
     82 				marker.showWindow = false;
     83 				$scope.currentMarker = null;
     84 				$scope.$apply();
     85 			};
     86 			marker.onClicked = function() {
     87 				$scope.onMarkerClicked(marker);
     88 			};
     89 		});
     90 		
     91 		$scope.map.dynamicMarkers = dynamicMarkers;
     92 		google.maps.event.trigger(mapObj, 'resize');
     93 	}, 2000); };
     94 	
     95 	/** Google Map Object */
     96 	var mapObj = null;
     97 
     98 	$scope.map = {
     99 		center: {
    100 			latitude: 40.752867,
    101 			longitude: -73.984452
    102 		},
    103 		zoom: 12,
    104 		dynamicMarkers: [],
    105 		markers: {
    106 			fit: false
    107 		},
    108 		icon: "https://s3.amazonaws.com/assets-pyc/blue_marker2.png",
    109 		events: {
    110 	        tilesloaded: function (map) {
    111 	            $scope.$apply(function () {
    112 	            	mapObj = map;
    113 	            });
    114 	        }/*,
    115 	        resize: function (map) {
    116 	        	$scope.$apply(function () {	            	
    117 	            	
    118 	        		// pan view on resize (markers were added to map)
    119 	        		if(window.innerWidth >= screen_md) {
    120 	            		map.panBy(-150,-150);
    121 	            	} else if(window.innerWidth >= $scope.screen_xs) {
    122 	            		map.panBy(0,-250);
    123 	            	} else {
    124 	            		map.panBy(0,-40);
    125 	            	}
    126 	            });
    127 	        }*/
    128 	    },
    129 	    infoWindow: {
    130 	    	options: {
    131 	    		pixelOffset: { 'width': 0, 'height': -44 }
    132 	        }
    133 	    }
    134 	};
    135 	
    136 	$scope.currentMarker = {};
    137 	
    138 	$scope.onMarkerClicked = function(marker) {
    139 		if ($scope.currentMarker) {
    140 			$scope.currentMarker.closeClick();
    141 		}
    142 		$scope.currentMarker = marker;
    143 		marker.showWindow = true;
    144 		$scope.$apply();
    145 	};
    146 	
    147 
    148 	$scope.searchPlaceholder = function() {
    149 		
    150 		if($scope.currentMarker) {
    151 			var marker = $scope.currentMarker;
    152 			return marker.address + ", " + marker.city + ", " + marker.state;
    153 		}
    154 		
    155 		return "Search address, business name ... ";
    156 	};
    157 	
    158 	$scope.notification = {};
    159 	
    160 	$scope.notifyEmail = function() {
    161 		var success = function(alert) {
    162 			$scope.notify_loading = false;
    163 			$rootScope.$broadcast('alertNearAtm', alert);
    164 			$scope.notification = {};
    165 		};
    166 		
    167 		var failure = function(alert) {
    168 			$scope.notify_loading = false;
    169 			$rootScope.$broadcast('alertNearAtm', alert);
    170 		};
    171 		
    172 		$scope.notify_loading = true;
    173 		$scope.submit('FindAtm', 'notifyEmail', success, failure, $scope.notification, $scope.notify_loading);
    174     };
    175     
    176     
    177     // set the map open
    178     $scope.mapExpanded = true;
    179 	
    180 }])
    181 
    182 .controller('AtmProfileCtrl', ['$scope', '$controller', function($scope, $controller) {		
    183 	$controller('LoadedFormCtrl', {$scope: $scope, $controller: $controller});
    184 	$controller('AtmHelperFuncs', {$scope: $scope});
    185 	
    186 	$scope.init('AtmProfile', 'init');
    187 }]);