From 21a4bb9a80c253321d650bfcec60466f000cc785 Mon Sep 17 00:00:00 2001 From: "didier.amyot" Date: Fri, 18 Jul 2014 10:56:13 -0400 Subject: [PATCH] added link full position link. --- .../coffee/controllers/geojsonmapCtrl.coffee | 27 ++++++++++++++-- client/coffee/directives/clickSelect.coffee | 8 +++++ client/coffee/vultureApp.coffee | 6 ++++ client/index.html | 1 + client/partials/geojsonmap.html | 31 +++++++++++++++---- 5 files changed, 65 insertions(+), 8 deletions(-) create mode 100644 client/coffee/directives/clickSelect.coffee diff --git a/client/coffee/controllers/geojsonmapCtrl.coffee b/client/coffee/controllers/geojsonmapCtrl.coffee index 8665dc9..d0ac01a 100644 --- a/client/coffee/controllers/geojsonmapCtrl.coffee +++ b/client/coffee/controllers/geojsonmapCtrl.coffee @@ -7,9 +7,23 @@ defaultMapCenter = lng: -72.6169 zoom: 7 -getLocalStorageCenter = () -> +getLocalStorageMapCenter = () -> JSON.parse(localStorage.getItem("mapCenter")) or defaultMapCenter +getInitialCenter = (loc) -> + if loc + loc = (Number(x) for x in loc.split(",")) + if loc.length != 3 + return getLocalStorageMapCenter() + ret = + lat: loc[0] + lng: loc[1] + zoom: loc[2] + return ret + return getLocalStorageMapCenter() + + + getSingleDataUrl = (routeParams) -> @@ -48,7 +62,7 @@ root.controllers.controller('geojsonmapCtrl', ['$scope', '$routeParams', '$locat $scope.geojson = {} $scope.geojsonData = {} $scope.idx = Number($routeParams.idx) - $scope.center = getLocalStorageCenter() + $scope.center = getInitialCenter($routeParams.loc) $scope.queryObject = $routeParams.query or "{}" $scope.$watch 'center', () -> @@ -122,5 +136,14 @@ root.controllers.controller('geojsonmapCtrl', ['$scope', '$routeParams', '$locat return "" r = $routeParams $location.path "/#{ r.server }/#{ r.database }/#{ r.collection }/idx/1/query/#{query}/geojson/#{r.key}" + + $scope.getUrlWithLocation = () -> + c = $scope.center + if $routeParams.loc + l = $location.absUrl() + rgx = /\/location\/-?\d{0,3}\.?\d*,-?\d{0,3}\.?\d*,\d+/ + return l.replace(rgx, "/location/#{c.lat},#{c.lng},#{c.zoom}") + else + return "#{$location.absUrl()}/location/#{c.lat},#{c.lng},#{c.zoom}" ]) diff --git a/client/coffee/directives/clickSelect.coffee b/client/coffee/directives/clickSelect.coffee new file mode 100644 index 0000000..ba95454 --- /dev/null +++ b/client/coffee/directives/clickSelect.coffee @@ -0,0 +1,8 @@ +directives.directive "selectOnClick", -> + restrict: "A" + link: (scope, element, attrs) -> + element.on "click", -> + @select() + return + + return diff --git a/client/coffee/vultureApp.coffee b/client/coffee/vultureApp.coffee index 78545fb..490aea4 100644 --- a/client/coffee/vultureApp.coffee +++ b/client/coffee/vultureApp.coffee @@ -16,6 +16,7 @@ config(['$routeProvider', ($routeProvider) -> $routeProvider.when('/servers', {templateUrl: 'partials/servers.html', controller: 'serversCtrl'}) $routeProvider.when('/about', {templateUrl: 'partials/about.html', controller: 'aboutCtrl'}) $routeProvider.when('/:server/databases', {templateUrl: 'partials/databases.html', controller: 'databasesCtrl'}) + $routeProvider.when('/:server/:database/collections', {templateUrl: 'partials/collections.html', controller: 'collectionsCtrl'}) $routeProvider.when('/:server/:database/:collection/_id/:id', {templateUrl: 'partials/document.html', controller: 'documentCtrl'}) $routeProvider.when('/:server/:database/:collection/_id/:id/field/:field', {templateUrl: 'partials/field.html', controller: 'fieldCtrl'}) @@ -23,10 +24,15 @@ config(['$routeProvider', ($routeProvider) -> $routeProvider.when('/:server/:database/:collection/stats/:key', {templateUrl: 'partials/keyStat.html', controller: 'keyStatCtrl'}) $routeProvider.when('/:server/:database/:collection/stats/:key/query/:query', {templateUrl: 'partials/keyStat.html', controller: 'keyStatCtrl'}) $routeProvider.when('/:server/:database/:collection/idx/:idx/query/:query', {templateUrl: 'partials/document.html', controller: 'documentCtrl'}) + $routeProvider.when('/:server/:database/:collection/idx/all/geojson/:key', {templateUrl: 'partials/geojsonmap.html', controller: 'geojsonmapCtrl'}) + $routeProvider.when('/:server/:database/:collection/idx/all/geojson/:key/location/:loc', {templateUrl: 'partials/geojsonmap.html', controller: 'geojsonmapCtrl'}) $routeProvider.when('/:server/:database/:collection/idx/:idx/geojson/:key', {templateUrl: 'partials/geojsonmap.html', controller: 'geojsonmapCtrl'}) + $routeProvider.when('/:server/:database/:collection/idx/:idx/geojson/:key/location/:loc', {templateUrl: 'partials/geojsonmap.html', controller: 'geojsonmapCtrl'}) $routeProvider.when('/:server/:database/:collection/idx/all/query/:query/geojson/:key', {templateUrl: 'partials/geojsonmap.html', controller: 'geojsonmapCtrl'}) + $routeProvider.when('/:server/:database/:collection/idx/all/query/:query/geojson/:key/location/:loc', {templateUrl: 'partials/geojsonmap.html', controller: 'geojsonmapCtrl'}) $routeProvider.when('/:server/:database/:collection/idx/:idx/query/:query/geojson/:key', {templateUrl: 'partials/geojsonmap.html', controller: 'geojsonmapCtrl'}) + $routeProvider.when('/:server/:database/:collection/idx/:idx/query/:query/geojson/:key/location/:loc', {templateUrl: 'partials/geojsonmap.html', controller: 'geojsonmapCtrl'}) $routeProvider.otherwise({redirectTo: '/servers'}) ]) diff --git a/client/index.html b/client/index.html index 8c58bf9..cc5fa4d 100644 --- a/client/index.html +++ b/client/index.html @@ -76,6 +76,7 @@ + diff --git a/client/partials/geojsonmap.html b/client/partials/geojsonmap.html index a6e59e0..fdbf74b 100644 --- a/client/partials/geojsonmap.html +++ b/client/partials/geojsonmap.html @@ -21,12 +21,31 @@ -
- -
- see region on google map + +
+ +
+
+ + + Ctrl + C + +
+