diff --git a/app/index.html b/app/index.html index 495dc47b..0881c867 100644 --- a/app/index.html +++ b/app/index.html @@ -26,6 +26,7 @@ + @@ -332,6 +333,7 @@ + diff --git a/app/scripts/app.js b/app/scripts/app.js index e9e1e2d8..5e4965a1 100644 --- a/app/scripts/app.js +++ b/app/scripts/app.js @@ -8,6 +8,7 @@ angular 'ngResource', 'ngSanitize', 'ngDialog', + 'ngProgress', 'ui.bootstrap', 'ui.bootstrap.datetimepicker', 'osemFilters', @@ -44,7 +45,23 @@ angular url: '', controller: 'MapController', controllerAs: 'map', - templateUrl: 'views/explore2.map.html' + templateUrl: 'views/explore2.map.html', + resolve: { /* @ngInject */ + boxes: function (OpenSenseMapAPI, ngProgressFactory) { + var progressbar = ngProgressFactory.createInstance(); + progressbar.setColor('#4EAF47'); + progressbar.start(); + return OpenSenseMapAPI.getBoxes({params: {classify: true}}) + .then(function (data) { + progressbar.complete(); + return data; + }) + .catch(function (error) { + progressbar.complete(); + return new Error('Could not resolve getBoxes() on explore.map.'); + }); + } + } }) .state('explore.map.sidebar', { url: 'explore', diff --git a/app/scripts/controllers/map.js b/app/scripts/controllers/map.js index 25e78654..5904ee80 100644 --- a/app/scripts/controllers/map.js +++ b/app/scripts/controllers/map.js @@ -5,15 +5,14 @@ .module('openSenseMapApp') .controller('MapController', MapController); - MapController.$inject = ['$scope', '$state', '$timeout', '$document', '$templateRequest', '$compile', 'OpenSenseMapData', 'osemMapData', 'isMobile', 'OpenSenseMapAPI']; + MapController.$inject = ['$scope', '$state', '$timeout', '$document', '$templateRequest', '$compile', 'OpenSenseMapData', 'osemMapData', 'isMobile', 'OpenSenseMapAPI', 'boxes']; - function MapController ($scope, $state, $timeout, $document, $templateRequest, $compile, OpenSenseMapData, osemMapData, isMobile, OpenSenseMapAPI) { + function MapController ($scope, $state, $timeout, $document, $templateRequest, $compile, OpenSenseMapData, osemMapData, isMobile, OpenSenseMapAPI, boxes) { var vm = this; vm.showAllMarkers = true; vm.showClustering = true; vm.showLegend = false; vm.cssClass = ''; - vm.loaded = false; vm.mapMarkers = {}; // the following get filled from childscope sidebar.boxdetails.js @@ -38,22 +37,17 @@ //// function activate () { - vm.loadingCaption = 'Loading senseBoxes...' - return OpenSenseMapAPI.getBoxes({params: {classify: true}}) - .then(function (data) { - vm.loadingCaption = 'Classifying markers...' - return OpenSenseMapData.setMarkers(data) - .then(function (response) { - vm.mapMarkers = response; - vm.loaded = true; - }) - .catch(function (error) { - console.error(error); - }); - }) - .catch(function (error) { - return new Error('Could not resolve getBoxes() on explore.map.'); - }); + if (boxes instanceof Error) { + $state.go('explore.map.sidebar.error'); + return; + } + return OpenSenseMapData.setMarkers(boxes) + .then(function (response) { + vm.mapMarkers = response; + }) + .catch(function (error) { + console.error(error); + }); } function createLegendFromTemplate (templateURI, clickHandler) { @@ -159,7 +153,7 @@ $scope.$on('osemMarkerClick.map_main', function (e, args) { $state.go('explore.map.sidebar.boxdetails', { id: args.target.options.station._id }); - }) + }); $scope.$on('markersChanged', function (data) { vm.mapMarkers = OpenSenseMapData.getMarkers(); diff --git a/app/views/explore2.map.html b/app/views/explore2.map.html index e11e9e33..41bbb9b2 100644 --- a/app/views/explore2.map.html +++ b/app/views/explore2.map.html @@ -1,10 +1,3 @@ -