angular.module('quartermaester') .controller("mapCtrl", function($scope, $filter, $timeout, uiGmapGoogleMapApi, smgMapType, qmCsv) { var qmData = {}; $scope.state = "slider"; $scope.search = ""; $scope.slider = { show: "episodes", currentEpisode: 0, currentChapter: 0 }; $scope.options = { characterPaths: true, houseHeraldry: false, geographicRegions: false, politicalAllegiances: false, characters: {} }; $scope.map = { center: { latitude: 1.3182, longitude: -105.9960 }, zoom: 4, options: { maxZoom: 5, minZoom: 1, disableDefaultUI: true, zoomControl: true }, events: { click: mapClick }, control: {}, smgMapType: smgMapType, locationClick: locationClick, heraldryClick: heraldryClick, characterClick: characterClick }; $scope.mapModels = { towns: [], heraldry: [], characters: [], paths: [], regions: [], loyalties: [] }; $scope.episodes = []; $scope.chapters = []; $scope.searchResults = []; $scope.toState = toState; $scope.slideTo = slideTo; $scope.panTo = panTo; $scope.refreshMap = refreshMap; $scope.locationDetail = null; // Set up promises uiGmapGoogleMapApi.then(onMapLoad); qmCsv.loadData().then(addToScope); ////////////////// function addToScope(d) { qmData = d; // Add data from CSV files into $scope $scope.episodes = qmData.episodes; $scope.chapters = qmData.chapters; $scope.characters = qmData.characters; $scope.searchResults = qmData.searchResults; $scope.mapModels.regions = qmData.regions; $scope.$watch('slider', refreshMap, true); $scope.$watch('options', refreshMap, true); for (var i=0;i=0; bookId--) { var prologue = parseInt(qmData.books[bookId].precedingChapters, 10); if (prologue > $scope.slider[measure]-1) continue; $scope.slider[measure] = prologue; break; } } break; case -1: if ($scope.slider[measure]>0) $scope.slider[measure]--; break; case 1: if ($scope.slider[measure]