[FIX] event and google map ok
bzr revid: al@openerp.com-20120525200326-0cfysbpcnlk2agyn
This commit is contained in:
parent
df59b0b7d2
commit
879b4a37c6
|
@ -61,15 +61,15 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_clear"/>
|
<div class="oe_clear"/>
|
||||||
</div>
|
</div>
|
||||||
<sheet layout="auto">
|
<sheet layout="manual">
|
||||||
|
|
||||||
|
|
||||||
<field name="name" required="1" nolabel="1" class="oe_form_title" colspan="4"/>
|
<field name="name" required="1" nolabel="1" class="oe_form_title" colspan="4"/>
|
||||||
<group colspan="4" col="5">
|
<group colspan="4" col="5">
|
||||||
<group col="2" colspan="2" class="oe_form_group_label_border" style="margin-top: 20px;">
|
<group col="2" colspan="2" class="oe_form_group_label_border" style="margin-top: 20px;">
|
||||||
<field name="type" on_change="onchange_event_type(type,context)"/>
|
<field name="type" on_change="onchange_event_type(type,context)"/>
|
||||||
<field name="user_id"/>
|
<field name="user_id"/>
|
||||||
<field name="address_id" widget ="many2one_address_google_map" widget_option="{'placeholder':'.oe_form_google_map'}"/>
|
<field name="address_id" widget="many2one_address_google_map" widget_option="{'placeholder':'.oe_form_google_map'}"/>
|
||||||
<field name="address"/>
|
|
||||||
</group>
|
</group>
|
||||||
<group col="2" colspan="2" class="oe_form_group_label_border" style="margin-top: 20px;">
|
<group col="2" colspan="2" class="oe_form_group_label_border" style="margin-top: 20px;">
|
||||||
<field name="date_begin"/>
|
<field name="date_begin"/>
|
||||||
|
@ -77,9 +77,10 @@
|
||||||
<field name="register_min"/>
|
<field name="register_min"/>
|
||||||
<field name="register_max"/>
|
<field name="register_max"/>
|
||||||
</group>
|
</group>
|
||||||
<div class="oe_form_google_map"></div>
|
|
||||||
</group>
|
</group>
|
||||||
|
|
||||||
|
<div class="oe_form_google_map" style="height: 200px"></div>
|
||||||
|
|
||||||
<notebook colspan="4">
|
<notebook colspan="4">
|
||||||
<page string="Event Description">
|
<page string="Event Description">
|
||||||
<field name="note" colspan="4" nolabel="1"/>
|
<field name="note" colspan="4" nolabel="1"/>
|
||||||
|
|
|
@ -1,45 +1,48 @@
|
||||||
openerp.event = function(instance, mod) {
|
openerp.event = function(instance, mod) {
|
||||||
instance.web.form.widgets.add('many2one_address_google_map', 'instance.event.Many2OneAddress');
|
instance.web.form.widgets.add('many2one_address_google_map', 'instance.google_map.Many2OneAddress');
|
||||||
|
|
||||||
|
var googleMapsLoaded = null;
|
||||||
|
|
||||||
instance.google_map.GoogleMapConnector = instance.web.Class.extend({
|
instance.google_map.GoogleMapConnector = instance.web.Class.extend({
|
||||||
init: function(){
|
|
||||||
this.googleMapsLoaded = $.Deferred();
|
|
||||||
this.map_load();
|
|
||||||
},
|
|
||||||
map_load: function() {
|
map_load: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
if(this.googleMapsLoaded.state() != "pending"){return this.googleMapsLoaded.promise();}
|
if(googleMapsLoaded === null) {
|
||||||
googleMapsCallback = function () {
|
googleMapsLoaded = $.Deferred();
|
||||||
self.googleMapsLoaded.resolve();
|
// global
|
||||||
};
|
openerp_googleMapsCallback = googleMapsLoaded.resolve;
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: "https://maps.googleapis.com/maps/api/js?v=3&callback=googleMapsCallback&sensor=false",
|
url: "https://maps.googleapis.com/maps/api/js?v=3&callback=openerp_googleMapsCallback&sensor=false",
|
||||||
dataType: "script"
|
dataType: "script"
|
||||||
}).fail(self.googleMapsLoaded.reject);
|
}).fail(googleMapsLoaded.reject);
|
||||||
return this.googleMapsLoaded.promise();
|
}
|
||||||
|
return googleMapsLoaded;
|
||||||
},
|
},
|
||||||
render_map: function(address,$element){
|
render_map: function(address,element) {
|
||||||
var geocoder = new google.maps.Geocoder();
|
this.map_load().then(function() {
|
||||||
geocoder.geocode( { 'address': address}, function(results, status){
|
var geocoder = new google.maps.Geocoder();
|
||||||
if (status == google.maps.GeocoderStatus.OK){
|
geocoder.geocode({'address': address}, function(results, status) {
|
||||||
var lat = results[0].geometry.location.lat(),lng =results[0].geometry.location.lng();
|
if (status == google.maps.GeocoderStatus.OK) {
|
||||||
var myOptions = {
|
var lat = results[0].geometry.location.lat();
|
||||||
zoom: 17,
|
var lng = results[0].geometry.location.lng();
|
||||||
center: new google.maps.LatLng(lat,lng),
|
var myOptions = {
|
||||||
mapTypeId: google.maps.MapTypeId.ROADMAP
|
zoom: 17,
|
||||||
}
|
center: new google.maps.LatLng(lat,lng),
|
||||||
return new google.maps.Marker({
|
mapTypeId: google.maps.MapTypeId.ROADMAP
|
||||||
map : new google.maps.Map($element,myOptions),
|
};
|
||||||
position: new google.maps.LatLng(lat,lng)
|
var map = new google.maps.Map(element,myOptions);
|
||||||
|
var position = new google.maps.LatLng(lat,lng);
|
||||||
|
var marker = new google.maps.Marker({ map: map, position: position });
|
||||||
|
return marker;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
instance.google_map.Many2OneAddress = instance.web.form.FieldMany2One.extend({
|
instance.google_map.Many2OneAddress = instance.web.form.FieldMany2One.extend({
|
||||||
init: function(field_manager, node){
|
init: function(field_manager, node){
|
||||||
this._super(field_manager, node);
|
this._super(field_manager, node);
|
||||||
this.map = new instance.google_map.GoogleMapConnector();
|
this.map = new instance.google_map.GoogleMapConnector();
|
||||||
},
|
},
|
||||||
get_address:function(value){
|
get_address:function(value){
|
||||||
var self = this;
|
var self = this;
|
||||||
|
@ -50,14 +53,14 @@ openerp.event = function(instance, mod) {
|
||||||
var data = new instance.web.DataSet(this,this.field.relation, this.build_context());
|
var data = new instance.web.DataSet(this,this.field.relation, this.build_context());
|
||||||
data.read_ids(value,["street","city","zip","country_id"]).done(function(value){
|
data.read_ids(value,["street","city","zip","country_id"]).done(function(value){
|
||||||
var address;
|
var address;
|
||||||
if value['country_id'] {
|
if (value['country_id']) {
|
||||||
address = _.str.sprintf('%(street)s, %(zip)s %(city)s, %(country_id[1])s', value);
|
address = _.str.sprintf('%(street)s, %(zip)s %(city)s, %(country_id[1])s', value);
|
||||||
} else {
|
} else {
|
||||||
address = _.str.sprintf('%(street)s, %(zip)s %(city)s', value);
|
address = _.str.sprintf('%(street)s, %(zip)s %(city)s', value);
|
||||||
}
|
}
|
||||||
self.map.googleMapsLoaded.done(function(){
|
// TODO repalce by widget_option selector self.options.selector
|
||||||
self.map.render_map(address,self.$(self.options.selector)[0]);
|
var el = self.view.$element.find(".oe_form_google_map")[0];
|
||||||
})
|
self.map.render_map(address,el);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
set_value:function(value){
|
set_value:function(value){
|
||||||
|
|
Loading…
Reference in New Issue