Vidhin Mehta (OpenERP) has proposed merging
lp:~openerp-dev/openobject-addons/trunk-event_improvements-atp-google_map-vme
into lp:~openerp-dev/openobject-addons/trunk-event_improvements-atp.
Requested reviews:
OpenERP R&D Team (openerp-dev)
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-event_improvements-atp-google_map-vme/+merge/105468
Implement google maps widget.
--
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-event_improvements-atp-google_map-vme/+merge/105468
Your team OpenERP R&D Team is requested to review the proposed merge of
lp:~openerp-dev/openobject-addons/trunk-event_improvements-atp-google_map-vme
into lp:~openerp-dev/openobject-addons/trunk-event_improvements-atp.
=== modified file 'event_sale/static/src/js/google_map.js'
--- event_sale/static/src/js/google_map.js 2012-05-09 17:38:39 +0000
+++ event_sale/static/src/js/google_map.js 2012-05-11 12:08:19 +0000
@@ -1,54 +1,64 @@
openerp.event = function(instance){
- instance.web.form.widgets.add('geo_address', 'instance.event.GeoAddress');
- instance.event.GeoAddress = instance.web.form.AbstractField.extend(_.extend({}, {
-
- init : function(){
- this._super.apply(this,arguments);
- },
-
- start:function(){
- },
-
- set_input_id:function(id){
- },
- set_value:function(value){
- var self = this;
- this.get_address(value).done(function(value){
- if(!self.__parentedParent.$element.find("#address_text").length)self.__parentedParent.$element.find(".oe_td_border").after(instance.web.qweb.render("address",{'record': value}));
- var address = _.str.sprintf(' %(street)s, %(city)s, %(country_id[1])s', value);
- return self.list_addresses(address);
-
- });
-
- },
- get_address:function(value){
- if (!value || value.length == 0){
- return $.Deferred().reject();
- }
- return new instance.web.DataSet (this,this.field.relation, this.build_context()).read_ids(value[0],["street","city","country_id"]);
- },
-
- list_addresses: function(address){
- var geocoder = new google.maps.Geocoder();
- geocoder.geocode( { 'address': address}, function(results, status)
- {
- if (status == google.maps.GeocoderStatus.OK){
- var lat = results[0].geometry.location.lat(),lng =results[0].geometry.location.lng();
- var myOptions = {
- zoom: 17,
- center: new google.maps.LatLng(lat,lng),
- mapTypeId: google.maps.MapTypeId.ROADMAP
- }
- return new google.maps.Marker({
- map : new google.maps.Map(document.getElementById("oe_mapbox"),myOptions),
- position: new google.maps.LatLng(lat,lng)
- });
- }
- });
-
- },
- get_value:function(){
- }
-
- }));
+ instance.web.form.widgets.add('geo_address', 'instance.event.GeoAddress');
+ instance.event.GeoAddress = instance.web.form.AbstractField.extend(_.extend({}, {
+ init : function(){
+ this._super.apply(this,arguments);
+ this.googleMapsLoaded = $.Deferred();
+ },
+ start:function(){
+ },
+
+ set_input_id:function(id){
+ },
+ map_load: function() {
+ var self = this;
+ if(this.googleMapsLoaded.state() != "pending"){return this.googleMapsLoaded.promise();}
+ googleMapsCallback = function () {
+ self.googleMapsLoaded.resolve();
+ };
+ $.ajax({
+ url: "https://maps.googleapis.com/maps/api/js?v=3&callback=googleMapsCallback&sensor=false",
+ dataType: "script"
+ }).fail(self.googleMapsLoaded.reject);
+ return this.googleMapsLoaded.promise();
+ },
+ set_value:function(value){
+ var self = this;
+ this.get_address(value).done(function(value){
+ if(!self.__parentedParent.$element.find("#address_text").length)self.__parentedParent.$element.find(".oe_td_border").after(instance.web.qweb.render("address",{'record': value}));
+ var address = _.str.sprintf(' %(street)s, %(city)s, %(country_id[1])s', value);
+ var defer = self.Map_Load();
+ defer.done(function(){
+ return self.render_map(address);
+ });
+ });
+ },
+ get_address:function(value){
+ if (!value || value.length == 0){
+ return $.Deferred().reject();
+ }
+ return new instance.web.DataSet (this,this.field.relation, this.build_context()).read_ids(value[0],["street","city","country_id"]);
+ },
+
+ render_map: function(address){
+ var geocoder = new google.maps.Geocoder();
+ geocoder.geocode( { 'address': address}, function(results, status){
+ if (status == google.maps.GeocoderStatus.OK){
+ var lat = results[0].geometry.location.lat(),lng =results[0].geometry.location.lng();
+ var myOptions = {
+ zoom: 17,
+ center: new google.maps.LatLng(lat,lng),
+ mapTypeId: google.maps.MapTypeId.ROADMAP
+ }
+ return new google.maps.Marker({
+ map : new google.maps.Map(document.getElementById("oe_mapbox"),myOptions),
+ position: new google.maps.LatLng(lat,lng)
+ });
+ }
+ });
+ },
+ get_value:function(){
+ }
+
+ }));
};
\ No newline at end of file
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp