0
1
Fork 0
hedera-web-mindshore/forms/cms/location/location.js

110 lines
2.6 KiB
JavaScript
Raw Normal View History

var gmapsIsLoaded = false;
2018-08-31 06:14:47 +00:00
Hedera.Location = new Class({
2016-09-26 09:28:47 +00:00
Extends: Hedera.Form
2015-01-31 01:05:12 +00:00
,locations: null
2018-08-31 06:14:47 +00:00
,activate: function() {
this.gui.loaderPush();
2015-01-31 01:05:12 +00:00
var sql = 'SELECT lat, lng, title, address, postcode, city, province, phone, language FROM location';
2018-08-31 06:14:47 +00:00
this.conn.execQuery(sql, this.onLocationsDone.bind(this));
2018-08-31 06:14:47 +00:00
if (!gmapsIsLoaded) {
gmapsLoadedCallback = this.gmapsLoaded.bind(this);
Vn.includeJs('https://maps.google.com/maps/api/js'
+'?sensor=false&callback=gmapsLoadedCallback'
+'&key=AIzaSyBbunFsAFEkjtw-c7BUHNgkThSlKEKFxiE',
null, true
);
} else
this.gmapsLoaded();
}
2018-08-31 06:14:47 +00:00
,onLocationsDone: function(resultSet) {
this.locations = resultSet.fetchResult();
this.allLoaded();
2015-01-31 01:05:12 +00:00
}
2018-08-31 06:14:47 +00:00
,gmapsLoaded: function() {
this.gui.loaderPop();
gmapsIsLoaded = true;
2018-08-31 06:14:47 +00:00
this.allLoaded();
2015-01-31 01:05:12 +00:00
}
2018-08-31 06:14:47 +00:00
,allLoaded: function() {
2015-01-31 01:05:12 +00:00
if (!this.locations || !gmapsIsLoaded)
return;
var options = {
2015-03-06 23:33:54 +00:00
zoom: 4
,mapTypeId: google.maps.MapTypeId.ROADMAP
2018-08-31 06:14:47 +00:00
,center: new google.maps.LatLng(46.0, 4.0)
};
2015-03-06 23:33:54 +00:00
var div = this.$('form');
2018-08-31 06:14:47 +00:00
var gmap = new google.maps.Map(div, options);
2015-01-31 01:05:12 +00:00
if (this.locations)
2018-08-31 06:14:47 +00:00
while (this.locations.next())
this.createMarker(this.locations, gmap);
}
2018-08-31 06:14:47 +00:00
,createMarker: function(location, gmap) {
var div = document.createElement('div');
2015-01-31 01:05:12 +00:00
div.className = 'marker';
2018-08-31 06:14:47 +00:00
var h = document.createElement('h3');
h.appendChild(document.createTextNode(location.get('title')));
div.appendChild(h);
2018-08-31 06:14:47 +00:00
var p = document.createElement('p');
p.appendChild(document.createTextNode(location.get('address')));
div.appendChild(p);
2015-01-31 01:05:12 +00:00
2018-08-31 06:14:47 +00:00
var p = document.createElement('p');
p.appendChild(document.createTextNode(location.get('postcode') +' '+ location.get('city')));
div.appendChild(p);
2015-01-31 01:05:12 +00:00
2018-08-31 06:14:47 +00:00
var p = document.createElement('p');
p.appendChild(document.createTextNode(location.get('province')));
div.appendChild(p);
2015-01-31 01:05:12 +00:00
2018-08-31 06:14:47 +00:00
var p = document.createElement('p');
p.appendChild(document.createTextNode(location.get('phone')));
div.appendChild(p);
2018-08-31 06:14:47 +00:00
var lat = new google.maps.LatLng(
location.get('lat'),
location.get('lng')
2015-01-31 01:05:12 +00:00
);
2018-08-31 06:14:47 +00:00
var marker = new google.maps.Marker({
position: lat
,tilte: location.title
,map: gmap
});
2018-08-31 06:14:47 +00:00
var infoWindow = new google.maps.InfoWindow({
content: div
});
2018-08-31 06:14:47 +00:00
google.maps.event.addListener(marker, 'click',
this.openInfoWindow.bind(this, infoWindow, gmap, marker));
2015-01-31 01:05:12 +00:00
if (Vn.Locale.language
2018-08-31 06:14:47 +00:00
&& Vn.Locale.language == location.get('language'))
this.openInfoWindow(infoWindow, gmap, marker);
}
2018-08-31 06:14:47 +00:00
,openInfoWindow: function(infoWindow, gmap, marker) {
if (this.openedWindow)
2018-08-31 06:14:47 +00:00
this.openedWindow.close();
2018-08-31 06:14:47 +00:00
infoWindow.open(gmap, marker);
this.openedWindow = infoWindow;
}
});