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 @@ -
-
-
-
-
{{map.loadingCaption}}
-
-
{{map.hoverlabel.name}}
diff --git a/bower.json b/bower.json index 1e875f4b..814a1062 100644 --- a/bower.json +++ b/bower.json @@ -25,7 +25,8 @@ "leaflet.markercluster": "Leaflet.markercluster#^1.0.6", "d3": "^4.10.0", "Leaflet.FeatureGroup.SubGroup": "^1.0.3", - "angular-ismobile": "^1.1.0" + "angular-ismobile": "^1.1.0", + "ngprogress": "^1.1.3" }, "devDependencies": { "angular-mocks": "1.5", diff --git a/package-lock.json b/package-lock.json index c67b3b18..c50dfd10 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@sensebox/opensensemap-i18n": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@sensebox/opensensemap-i18n/-/opensensemap-i18n-2.2.0.tgz", - "integrity": "sha512-6puCQVAfhy5W5AmT3A7Qq0fwKpePsgzO5+I7FvH9T+L2WkEci2//UJL24jO3JTOqzz2V9C0s0so35OdrgVM+GA==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sensebox/opensensemap-i18n/-/opensensemap-i18n-2.3.0.tgz", + "integrity": "sha512-H2kOPqlENLOQo3oziILHeipZtklWFArQZsWvd/nwzdm/DwtiGtzTgUYikaTLvTBlYrX7LDTlakBXLX9JxzNCww==" }, "JSONStream": { "version": "1.3.2", diff --git a/package.json b/package.json index 73b744cd..f95532d3 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "opensensemap", "version": "1.1.0", "dependencies": { - "@sensebox/opensensemap-i18n": "^2.2.0", + "@sensebox/opensensemap-i18n": "^2.3.0", "angular-i18n": "^1.6.7" }, "devDependencies": {