From e9093acc8a7fb155297aa2e8c5ed2954d45855f0 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Sun, 28 May 2017 00:44:05 +0200 Subject: [PATCH] s'assurer de l'existence de jQuery --- Yavsc/wwwroot/js/google-geoloc.js | 175 +++++++++++++++--------------- 1 file changed, 89 insertions(+), 86 deletions(-) diff --git a/Yavsc/wwwroot/js/google-geoloc.js b/Yavsc/wwwroot/js/google-geoloc.js index bffeca70..5e25a50f 100644 --- a/Yavsc/wwwroot/js/google-geoloc.js +++ b/Yavsc/wwwroot/js/google-geoloc.js @@ -1,88 +1,91 @@ -+(function($,maps){ -$.widget("psc.googlegeocode" , { - options: { - mapId: 'map', - longId: 'Longitude', - latId: 'Latitude', - addrValidationId: 'AddressError', - formValidId: 'ValidationSummary', - locComboId: 'LocationCombo' - }, - marker: null, - gmap: null, +if (typeof jQuery === 'undefined') { + throw new Error('Bootstrap\'s JavaScript requires jQuery') +} - _create: function() { - this.element.addClass("googlegeocode"); - this.gmap = new maps.Map(document.getElementById(this.options.mapId), { - zoom: 16, - center: { lat: 48.862854, lng: 2.2056466 } - }); - var _this =this; - this.element.rules("add", - { - remote: { - url: 'https://maps.googleapis.com/maps/api/geocode/json', - type: 'get', - data: { - sensor: false, - address: function () { return _this.element.val() } - }, - dataType: 'json', - dataFilter: function(datastr) { - $('#'+_this.options.locComboId).html(""); - var data = JSON.parse(datastr); - data.results.forEach(function(item) { - if (item.formatted_address !== _this.element.val()) { - $('
  • '+item.formatted_address+'
  • ') - .data("geoloc",item) - .click(function() { _this.chooseLoc('user',item) }) - .css('cursor','pointer') - .appendTo($('#'+_this.options.locComboId));} - else { } - }); - if ((data.status === 'OK') && (data.results.length == 1)) - { - // _this.chooseLoc('google',data.results[0]); - return true; - } - return false; - }, - error: function() - { - // xhr, textStatus, errorThrown console.log('ajax loading error ... '+textStatus+' ... '+ errorThrown); - return false; - } - } - })}, - chooseLoc: function(sender,loc) { - if (sender === 'user') this.element.val(loc.formatted_address); - var pos = loc.geometry.location; - var lat = new Number(pos.lat); - var lng = new Number(pos.lng); - $(document.getElementById(this.options.latId)).val(lat.toLocaleString('en')); - $(document.getElementById(this.options.longId)).val(lng.toLocaleString('en')); - this.gmap.setCenter(pos); - if (this.marker) {  - this.marker.setMap(null); - } - this.marker = new maps.Marker({ - map: this.gmap, - draggable: true, - animation: maps.Animation.DROP, - position: pos ++ +(function($, maps) { + $.widget("psc.googlegeocode", { + options: { + mapId: 'map', + longId: 'Longitude', + latId: 'Latitude', + addrValidationId: 'AddressError', + formValidId: 'ValidationSummary', + locComboId: 'LocationCombo' + }, + marker: null, + gmap: null, + + _create: function() { + this.element.addClass("googlegeocode"); + this.gmap = new maps.Map(document.getElementById(this.options.mapId), { + zoom: 16, + center: { lat: 48.862854, lng: 2.2056466 } }); - maps.event.addListener(this.marker, 'dragend', function() { - // TODO reverse geo code - var pos = this.marker.getPosition(); - $('#'+this.options.latId).val(pos.lat); - $('#'+this.options.longId).val(pos.lng); - }); - this.element.valid(); - $('#'+this.options.addrValidationId).empty(); - $('#'+this.options.formValidId).empty(); - $('#'+this.options.locComboId).empty(); - - return this; - } -}) -})(jQuery,google.maps) + var _this = this; + this.element.rules("add", { + remote: { + url: 'https://maps.googleapis.com/maps/api/geocode/json', + type: 'get', + data: { + sensor: false, + address: function() {  return _this.element.val() } + }, + dataType: 'json', + dataFilter: function(datastr) { + $('#' + _this.options.locComboId).html(""); + var data = JSON.parse(datastr); + data.results.forEach(function(item) { + if (item.formatted_address !== _this.element.val()) { + $('
  • ' + item.formatted_address + '
  • ') + .data("geoloc", item) + .click(function() { _this.chooseLoc('user', item) }) + .css('cursor', 'pointer') + .appendTo($('#' + _this.options.locComboId)); + } else {} + }); + if ((data.status === 'OK') && (data.results.length == 1)) { + // _this.chooseLoc('google',data.results[0]); + return true; + } + return false; + }, + error: function() { + // xhr, textStatus, errorThrown console.log('ajax loading error ... '+textStatus+' ... '+ errorThrown); + return false; + } + } + }) + }, + chooseLoc: function(sender, loc) { + if (sender === 'user') this.element.val(loc.formatted_address); + var pos = loc.geometry.location; + var lat = new Number(pos.lat); + var lng = new Number(pos.lng); + $(document.getElementById(this.options.latId)).val(lat.toLocaleString('en')); + $(document.getElementById(this.options.longId)).val(lng.toLocaleString('en')); + this.gmap.setCenter(pos); + if (this.marker) {  + this.marker.setMap(null); + } + this.marker = new maps.Marker({ + map: this.gmap, + draggable: true, + animation: maps.Animation.DROP, + position: pos + }); + maps.event.addListener(this.marker, 'dragend', function() { + // TODO reverse geo code + var pos = this.marker.getPosition(); + $('#' + this.options.latId).val(pos.lat); + $('#' + this.options.longId).val(pos.lng); + }); + this.element.valid(); + $('#' + this.options.addrValidationId).empty(); + $('#' + this.options.formValidId).empty(); + $('#' + this.options.locComboId).empty(); + + return this; + } + }) +})(jQuery, google.maps); \ No newline at end of file